Made by George and Pahul

Dependencies:   4DGL-uLCD-SE PinDetect mbed

Committer:
gevell1
Date:
Thu Mar 12 18:59:00 2015 +0000
Revision:
0:8798a72d6580
Blackjack V1.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gevell1 0:8798a72d6580 1 using namespace std;
gevell1 0:8798a72d6580 2 class Hand
gevell1 0:8798a72d6580 3 {
gevell1 0:8798a72d6580 4 private:
gevell1 0:8798a72d6580 5 std::vector <std::string> card_types; // the card names in the hand
gevell1 0:8798a72d6580 6 std::vector <int> card_values; // the card values in the hand
gevell1 0:8798a72d6580 7 std::string hand_holder; // either 'Player' or 'Dealer'
gevell1 0:8798a72d6580 8 int aceCount; // the number of aces, useful for calculating hand value
gevell1 0:8798a72d6580 9
gevell1 0:8798a72d6580 10 public:
gevell1 0:8798a72d6580 11 explicit Hand(std::string); // constructor, sets hand_holder and calls addCard twice
gevell1 0:8798a72d6580 12 void addCard(); // adds a randomly chosen card to the hand
gevell1 0:8798a72d6580 13 void printHand(); // prints the card_types vector
gevell1 0:8798a72d6580 14 void printFirstCard(); // prints only the first card in the hand (used for dealer)
gevell1 0:8798a72d6580 15 int handValue(); // calculates the hand's value
gevell1 0:8798a72d6580 16 int getCardValues(int i);
gevell1 0:8798a72d6580 17 };
gevell1 0:8798a72d6580 18
gevell1 0:8798a72d6580 19 Hand::Hand(string player)
gevell1 0:8798a72d6580 20 {
gevell1 0:8798a72d6580 21 hand_holder = player;
gevell1 0:8798a72d6580 22 aceCount = 0;
gevell1 0:8798a72d6580 23 card_types.clear();
gevell1 0:8798a72d6580 24 card_values.clear();
gevell1 0:8798a72d6580 25 for(int i = 0; i<2; i++)
gevell1 0:8798a72d6580 26 {
gevell1 0:8798a72d6580 27 addCard();
gevell1 0:8798a72d6580 28 }
gevell1 0:8798a72d6580 29
gevell1 0:8798a72d6580 30 }
gevell1 0:8798a72d6580 31 void Hand::addCard()
gevell1 0:8798a72d6580 32 {
gevell1 0:8798a72d6580 33 //card selection was changed
gevell1 0:8798a72d6580 34 int cardSelection = 1 + rand() % 13;
gevell1 0:8798a72d6580 35 int cardValue = 0;
gevell1 0:8798a72d6580 36 string cardType;
gevell1 0:8798a72d6580 37
gevell1 0:8798a72d6580 38 switch (cardSelection)
gevell1 0:8798a72d6580 39 {
gevell1 0:8798a72d6580 40 case 1:
gevell1 0:8798a72d6580 41 cardType = "Ace";
gevell1 0:8798a72d6580 42 cardValue = 11;
gevell1 0:8798a72d6580 43 aceCount = aceCount + 1;
gevell1 0:8798a72d6580 44 break;
gevell1 0:8798a72d6580 45
gevell1 0:8798a72d6580 46 case 2:
gevell1 0:8798a72d6580 47 cardType = "King";
gevell1 0:8798a72d6580 48 cardValue = 10;
gevell1 0:8798a72d6580 49 break;
gevell1 0:8798a72d6580 50
gevell1 0:8798a72d6580 51 case 3:
gevell1 0:8798a72d6580 52 cardType = "Queen";
gevell1 0:8798a72d6580 53 cardValue = 10;
gevell1 0:8798a72d6580 54 break;
gevell1 0:8798a72d6580 55
gevell1 0:8798a72d6580 56 case 4:
gevell1 0:8798a72d6580 57 cardType = "Jack";
gevell1 0:8798a72d6580 58 cardValue = 10;
gevell1 0:8798a72d6580 59 break;
gevell1 0:8798a72d6580 60
gevell1 0:8798a72d6580 61 case 5:
gevell1 0:8798a72d6580 62 cardType = "Ten";
gevell1 0:8798a72d6580 63 cardValue = 10;
gevell1 0:8798a72d6580 64 break;
gevell1 0:8798a72d6580 65
gevell1 0:8798a72d6580 66 case 6:
gevell1 0:8798a72d6580 67 cardType = "Two";
gevell1 0:8798a72d6580 68 cardValue = 2;
gevell1 0:8798a72d6580 69 break;
gevell1 0:8798a72d6580 70
gevell1 0:8798a72d6580 71 case 7:
gevell1 0:8798a72d6580 72 cardType = "Three";
gevell1 0:8798a72d6580 73 cardValue = 3;
gevell1 0:8798a72d6580 74 break;
gevell1 0:8798a72d6580 75
gevell1 0:8798a72d6580 76 case 8:
gevell1 0:8798a72d6580 77 cardType = "Four";
gevell1 0:8798a72d6580 78 cardValue = 4;
gevell1 0:8798a72d6580 79 break;
gevell1 0:8798a72d6580 80
gevell1 0:8798a72d6580 81 case 9:
gevell1 0:8798a72d6580 82 cardType = "Five";
gevell1 0:8798a72d6580 83 cardValue = 5;
gevell1 0:8798a72d6580 84 break;
gevell1 0:8798a72d6580 85
gevell1 0:8798a72d6580 86 case 10:
gevell1 0:8798a72d6580 87 cardType = "Six";
gevell1 0:8798a72d6580 88 cardValue = 6;
gevell1 0:8798a72d6580 89 break;
gevell1 0:8798a72d6580 90
gevell1 0:8798a72d6580 91 case 11:
gevell1 0:8798a72d6580 92 cardType = "Seven";
gevell1 0:8798a72d6580 93 cardValue = 7;
gevell1 0:8798a72d6580 94 break;
gevell1 0:8798a72d6580 95
gevell1 0:8798a72d6580 96 case 12:
gevell1 0:8798a72d6580 97 cardType = "Eight";
gevell1 0:8798a72d6580 98 cardValue = 8;
gevell1 0:8798a72d6580 99 break;
gevell1 0:8798a72d6580 100
gevell1 0:8798a72d6580 101 case 13:
gevell1 0:8798a72d6580 102 cardType = "Nine";
gevell1 0:8798a72d6580 103 cardValue = 9;
gevell1 0:8798a72d6580 104 break;
gevell1 0:8798a72d6580 105 }
gevell1 0:8798a72d6580 106 card_values.push_back(cardValue);
gevell1 0:8798a72d6580 107 card_types.push_back(cardType);
gevell1 0:8798a72d6580 108 }
gevell1 0:8798a72d6580 109
gevell1 0:8798a72d6580 110 int Hand::handValue()
gevell1 0:8798a72d6580 111 {
gevell1 0:8798a72d6580 112 int sumOfCards = 0;
gevell1 0:8798a72d6580 113
gevell1 0:8798a72d6580 114 for (int i = 0; i < card_values.size(); i++)
gevell1 0:8798a72d6580 115 {
gevell1 0:8798a72d6580 116 sumOfCards = card_values[i] + sumOfCards;
gevell1 0:8798a72d6580 117 }
gevell1 0:8798a72d6580 118
gevell1 0:8798a72d6580 119 int numAces = aceCount;
gevell1 0:8798a72d6580 120
gevell1 0:8798a72d6580 121 while ((sumOfCards > 21) && (numAces > 0))
gevell1 0:8798a72d6580 122 {
gevell1 0:8798a72d6580 123 sumOfCards = sumOfCards - 10;
gevell1 0:8798a72d6580 124 numAces--;
gevell1 0:8798a72d6580 125 }
gevell1 0:8798a72d6580 126
gevell1 0:8798a72d6580 127 return sumOfCards;
gevell1 0:8798a72d6580 128 }
gevell1 0:8798a72d6580 129
gevell1 0:8798a72d6580 130 void Hand::printHand()
gevell1 0:8798a72d6580 131 {
gevell1 0:8798a72d6580 132 for (int i = 0; i < card_values.size(); i++)
gevell1 0:8798a72d6580 133 {
gevell1 0:8798a72d6580 134 cout << card_values[i] << " ";
gevell1 0:8798a72d6580 135 }
gevell1 0:8798a72d6580 136 }
gevell1 0:8798a72d6580 137
gevell1 0:8798a72d6580 138 int Hand::getCardValues(int i)
gevell1 0:8798a72d6580 139 {
gevell1 0:8798a72d6580 140 return card_values[i];
gevell1 0:8798a72d6580 141 }
gevell1 0:8798a72d6580 142
gevell1 0:8798a72d6580 143 void Hand::printFirstCard()
gevell1 0:8798a72d6580 144 {
gevell1 0:8798a72d6580 145 cout << card_values[0];
gevell1 0:8798a72d6580 146 }