Made by George and Pahul
Dependencies: 4DGL-uLCD-SE PinDetect mbed
main.cpp@0:8798a72d6580, 2015-03-12 (annotated)
- Committer:
- gevell1
- Date:
- Thu Mar 12 18:59:00 2015 +0000
- Revision:
- 0:8798a72d6580
Blackjack V1.0
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
gevell1 | 0:8798a72d6580 | 1 | #include <vector> |
gevell1 | 0:8798a72d6580 | 2 | #include <string> |
gevell1 | 0:8798a72d6580 | 3 | #include <cstdlib> |
gevell1 | 0:8798a72d6580 | 4 | #include <iostream> |
gevell1 | 0:8798a72d6580 | 5 | #include <iomanip> |
gevell1 | 0:8798a72d6580 | 6 | #include "mbed.h" |
gevell1 | 0:8798a72d6580 | 7 | #include "uLCD_4DGL.h" |
gevell1 | 0:8798a72d6580 | 8 | #include "Hand.h" |
gevell1 | 0:8798a72d6580 | 9 | #include "PinDetect.h" |
gevell1 | 0:8798a72d6580 | 10 | using namespace std; |
gevell1 | 0:8798a72d6580 | 11 | //mbed declarations |
gevell1 | 0:8798a72d6580 | 12 | Serial pc(USBTX, USBRX); |
gevell1 | 0:8798a72d6580 | 13 | uLCD_4DGL lcd(p28, p27, p30); |
gevell1 | 0:8798a72d6580 | 14 | DigitalIn pb1(p12); |
gevell1 | 0:8798a72d6580 | 15 | DigitalIn pb2(p15); |
gevell1 | 0:8798a72d6580 | 16 | DigitalIn pb3(p16); |
gevell1 | 0:8798a72d6580 | 17 | DigitalIn pb4(p17); |
gevell1 | 0:8798a72d6580 | 18 | DigitalIn pb5(p19); |
gevell1 | 0:8798a72d6580 | 19 | DigitalIn pb6(p20); |
gevell1 | 0:8798a72d6580 | 20 | DigitalIn pb7(p21); |
gevell1 | 0:8798a72d6580 | 21 | DigitalIn pb8(p23); |
gevell1 | 0:8798a72d6580 | 22 | //draw player hand |
gevell1 | 0:8798a72d6580 | 23 | void drawPlayerHand() |
gevell1 | 0:8798a72d6580 | 24 | { |
gevell1 | 0:8798a72d6580 | 25 | lcd.locate(lcd.max_col/4,0); |
gevell1 | 0:8798a72d6580 | 26 | lcd.printf("Dealer: "); |
gevell1 | 0:8798a72d6580 | 27 | |
gevell1 | 0:8798a72d6580 | 28 | lcd.locate(lcd.max_col/4,lcd.max_row/2); |
gevell1 | 0:8798a72d6580 | 29 | lcd.printf("Player: "); |
gevell1 | 0:8798a72d6580 | 30 | |
gevell1 | 0:8798a72d6580 | 31 | lcd.filled_rectangle(0,76,20,110,BLUE); |
gevell1 | 0:8798a72d6580 | 32 | lcd.filled_rectangle(23,76,43,110,BLUE); |
gevell1 | 0:8798a72d6580 | 33 | } |
gevell1 | 0:8798a72d6580 | 34 | //draw player hit cards |
gevell1 | 0:8798a72d6580 | 35 | void drawPlayerHit(int count) |
gevell1 | 0:8798a72d6580 | 36 | { |
gevell1 | 0:8798a72d6580 | 37 | switch(count) { |
gevell1 | 0:8798a72d6580 | 38 | case 1: |
gevell1 | 0:8798a72d6580 | 39 | lcd.filled_rectangle(46,76,66,110,BLUE); |
gevell1 | 0:8798a72d6580 | 40 | break; |
gevell1 | 0:8798a72d6580 | 41 | case 2: |
gevell1 | 0:8798a72d6580 | 42 | lcd.filled_rectangle(69,76,89,110,BLUE); |
gevell1 | 0:8798a72d6580 | 43 | break; |
gevell1 | 0:8798a72d6580 | 44 | case 3: |
gevell1 | 0:8798a72d6580 | 45 | lcd.filled_rectangle(92,76,112,110,BLUE); |
gevell1 | 0:8798a72d6580 | 46 | break; |
gevell1 | 0:8798a72d6580 | 47 | } |
gevell1 | 0:8798a72d6580 | 48 | } |
gevell1 | 0:8798a72d6580 | 49 | //draw card for dealer hand |
gevell1 | 0:8798a72d6580 | 50 | void drawDealerHand() |
gevell1 | 0:8798a72d6580 | 51 | { |
gevell1 | 0:8798a72d6580 | 52 | lcd.filled_rectangle(0,16,20,50,RED); |
gevell1 | 0:8798a72d6580 | 53 | lcd.filled_rectangle(23,16,43,50,RED); |
gevell1 | 0:8798a72d6580 | 54 | } |
gevell1 | 0:8798a72d6580 | 55 | //draw card for dealer hit |
gevell1 | 0:8798a72d6580 | 56 | void drawDealerHit(int count2) |
gevell1 | 0:8798a72d6580 | 57 | { |
gevell1 | 0:8798a72d6580 | 58 | switch(count2) { |
gevell1 | 0:8798a72d6580 | 59 | case 1: |
gevell1 | 0:8798a72d6580 | 60 | lcd.filled_rectangle(46,16,66,50,RED); |
gevell1 | 0:8798a72d6580 | 61 | break; |
gevell1 | 0:8798a72d6580 | 62 | case 2: |
gevell1 | 0:8798a72d6580 | 63 | lcd.filled_rectangle(69,16,89,50,RED); |
gevell1 | 0:8798a72d6580 | 64 | break; |
gevell1 | 0:8798a72d6580 | 65 | case 3: |
gevell1 | 0:8798a72d6580 | 66 | lcd.filled_rectangle(92,16,112,50,RED); |
gevell1 | 0:8798a72d6580 | 67 | break; |
gevell1 | 0:8798a72d6580 | 68 | } |
gevell1 | 0:8798a72d6580 | 69 | } |
gevell1 | 0:8798a72d6580 | 70 | //draw background |
gevell1 | 0:8798a72d6580 | 71 | void drawTable() |
gevell1 | 0:8798a72d6580 | 72 | { |
gevell1 | 0:8798a72d6580 | 73 | lcd.background_color(POKERGREEN); |
gevell1 | 0:8798a72d6580 | 74 | lcd.color(WHITE); |
gevell1 | 0:8798a72d6580 | 75 | lcd.cls(); |
gevell1 | 0:8798a72d6580 | 76 | } |
gevell1 | 0:8798a72d6580 | 77 | //draw text |
gevell1 | 0:8798a72d6580 | 78 | void drawText(int betVal) |
gevell1 | 0:8798a72d6580 | 79 | { |
gevell1 | 0:8798a72d6580 | 80 | lcd.locate(lcd.max_col/4,lcd.max_row-1); |
gevell1 | 0:8798a72d6580 | 81 | lcd.color(WHITE); |
gevell1 | 0:8798a72d6580 | 82 | lcd.printf("Bet: %i",betVal); |
gevell1 | 0:8798a72d6580 | 83 | } |
gevell1 | 0:8798a72d6580 | 84 | //draw both character player cards |
gevell1 | 0:8798a72d6580 | 85 | void drawCharacterPlayer(int card1,int card2) |
gevell1 | 0:8798a72d6580 | 86 | { |
gevell1 | 0:8798a72d6580 | 87 | lcd.locate(lcd.max_col/5 - 2,lcd.max_row/2 + 3); |
gevell1 | 0:8798a72d6580 | 88 | lcd.printf("%i",card1); |
gevell1 | 0:8798a72d6580 | 89 | lcd.locate((lcd.max_col*2)/5 - 3 ,lcd.max_row/2 + 3); |
gevell1 | 0:8798a72d6580 | 90 | lcd.printf("%i",card2); |
gevell1 | 0:8798a72d6580 | 91 | } |
gevell1 | 0:8798a72d6580 | 92 | //draw dealer character card1 |
gevell1 | 0:8798a72d6580 | 93 | void drawCharDealer(int car1) |
gevell1 | 0:8798a72d6580 | 94 | { |
gevell1 | 0:8798a72d6580 | 95 | lcd.locate(lcd.max_col/5 - 2,lcd.max_row/3 - 1); |
gevell1 | 0:8798a72d6580 | 96 | lcd.printf("%i",car1); |
gevell1 | 0:8798a72d6580 | 97 | } |
gevell1 | 0:8798a72d6580 | 98 | //draw dealer charcter card2 |
gevell1 | 0:8798a72d6580 | 99 | void drawDealerCard2(int cardvalue) |
gevell1 | 0:8798a72d6580 | 100 | { |
gevell1 | 0:8798a72d6580 | 101 | lcd.locate((lcd.max_col*2)/5 - 3,lcd.max_row/3 - 1); |
gevell1 | 0:8798a72d6580 | 102 | lcd.printf("%i",cardvalue); |
gevell1 | 0:8798a72d6580 | 103 | } |
gevell1 | 0:8798a72d6580 | 104 | //draw hit cards characters for player |
gevell1 | 0:8798a72d6580 | 105 | void drawHitChar_player(int cardval, int hit) |
gevell1 | 0:8798a72d6580 | 106 | { |
gevell1 | 0:8798a72d6580 | 107 | switch(hit) { |
gevell1 | 0:8798a72d6580 | 108 | case 1: |
gevell1 | 0:8798a72d6580 | 109 | lcd.locate((lcd.max_col*2)/5,lcd.max_row/2 + 3); |
gevell1 | 0:8798a72d6580 | 110 | lcd.printf("%i",cardval); |
gevell1 | 0:8798a72d6580 | 111 | break; |
gevell1 | 0:8798a72d6580 | 112 | case 2: |
gevell1 | 0:8798a72d6580 | 113 | lcd.locate((lcd.max_col*3)/5 + 1 ,lcd.max_row/2 + 3); |
gevell1 | 0:8798a72d6580 | 114 | lcd.printf("%i",cardval); |
gevell1 | 0:8798a72d6580 | 115 | break; |
gevell1 | 0:8798a72d6580 | 116 | case 3: |
gevell1 | 0:8798a72d6580 | 117 | lcd.locate((lcd.max_col*4)/5 + 1 ,lcd.max_row/2 + 3); |
gevell1 | 0:8798a72d6580 | 118 | lcd.printf("%i",cardval); |
gevell1 | 0:8798a72d6580 | 119 | break; |
gevell1 | 0:8798a72d6580 | 120 | } |
gevell1 | 0:8798a72d6580 | 121 | } |
gevell1 | 0:8798a72d6580 | 122 | //draw Hit card characters for dealer |
gevell1 | 0:8798a72d6580 | 123 | void drawHitChar_dealer(int cardv, int hit2) |
gevell1 | 0:8798a72d6580 | 124 | { |
gevell1 | 0:8798a72d6580 | 125 | switch(hit2) { |
gevell1 | 0:8798a72d6580 | 126 | case 1: |
gevell1 | 0:8798a72d6580 | 127 | lcd.locate((lcd.max_col*2)/5,lcd.max_row/3 - 1); |
gevell1 | 0:8798a72d6580 | 128 | lcd.printf("%i",cardv); |
gevell1 | 0:8798a72d6580 | 129 | break; |
gevell1 | 0:8798a72d6580 | 130 | case 2: |
gevell1 | 0:8798a72d6580 | 131 | lcd.locate((lcd.max_col*3)/5 + 1 ,lcd.max_row/3 - 1); |
gevell1 | 0:8798a72d6580 | 132 | lcd.printf("%i",cardv); |
gevell1 | 0:8798a72d6580 | 133 | break; |
gevell1 | 0:8798a72d6580 | 134 | case 3: |
gevell1 | 0:8798a72d6580 | 135 | lcd.locate((lcd.max_col*4)/5 + 1 ,lcd.max_row/3 - 1); |
gevell1 | 0:8798a72d6580 | 136 | lcd.printf("%i",cardv); |
gevell1 | 0:8798a72d6580 | 137 | break; |
gevell1 | 0:8798a72d6580 | 138 | } |
gevell1 | 0:8798a72d6580 | 139 | } |
gevell1 | 0:8798a72d6580 | 140 | |
gevell1 | 0:8798a72d6580 | 141 | int main() |
gevell1 | 0:8798a72d6580 | 142 | { |
gevell1 | 0:8798a72d6580 | 143 | //stepup and variables |
gevell1 | 0:8798a72d6580 | 144 | lcd.baudrate(3000000); |
gevell1 | 0:8798a72d6580 | 145 | lcd.cls(); |
gevell1 | 0:8798a72d6580 | 146 | pb1.mode(PullUp); |
gevell1 | 0:8798a72d6580 | 147 | pb2.mode(PullUp); |
gevell1 | 0:8798a72d6580 | 148 | pb3.mode(PullUp); |
gevell1 | 0:8798a72d6580 | 149 | pb4.mode(PullUp); |
gevell1 | 0:8798a72d6580 | 150 | pb5.mode(PullUp); |
gevell1 | 0:8798a72d6580 | 151 | pb6.mode(PullUp); |
gevell1 | 0:8798a72d6580 | 152 | pb7.mode(PullUp); |
gevell1 | 0:8798a72d6580 | 153 | pb8.mode(PullUp); |
gevell1 | 0:8798a72d6580 | 154 | bool overshot = false; // if Player busts |
gevell1 | 0:8798a72d6580 | 155 | string action; //Whether player hits, or stands |
gevell1 | 0:8798a72d6580 | 156 | int hitCount = 0; //number of hits by player |
gevell1 | 0:8798a72d6580 | 157 | int dealerCount = 0; //number of hits by dealer |
gevell1 | 0:8798a72d6580 | 158 | int bet = 0; //bet amount |
gevell1 | 0:8798a72d6580 | 159 | int round = 1; |
gevell1 | 0:8798a72d6580 | 160 | int i=40; |
gevell1 | 0:8798a72d6580 | 161 | int cardArray_player[7]; |
gevell1 | 0:8798a72d6580 | 162 | int cardArray_dealer[7]; |
gevell1 | 0:8798a72d6580 | 163 | unsigned int dollars = 500; |
gevell1 | 0:8798a72d6580 | 164 | //begin game |
gevell1 | 0:8798a72d6580 | 165 | while(1) { |
gevell1 | 0:8798a72d6580 | 166 | drawTable();//draws background color |
gevell1 | 0:8798a72d6580 | 167 | srand((i)); //change everytime you compile |
gevell1 | 0:8798a72d6580 | 168 | i++; |
gevell1 | 0:8798a72d6580 | 169 | while (1) { |
gevell1 | 0:8798a72d6580 | 170 | wait_ms(1000); |
gevell1 | 0:8798a72d6580 | 171 | lcd.cls(); |
gevell1 | 0:8798a72d6580 | 172 | hitCount = 0; |
gevell1 | 0:8798a72d6580 | 173 | dealerCount = 0; |
gevell1 | 0:8798a72d6580 | 174 | if(dollars == 0) { |
gevell1 | 0:8798a72d6580 | 175 | pc.printf("You are broke! Go Home:)\n"); |
gevell1 | 0:8798a72d6580 | 176 | lcd.locate(lcd.max_col/4,lcd.max_row/2); |
gevell1 | 0:8798a72d6580 | 177 | lcd.printf("YOU LOSE"); |
gevell1 | 0:8798a72d6580 | 178 | wait_ms(10000); |
gevell1 | 0:8798a72d6580 | 179 | break; |
gevell1 | 0:8798a72d6580 | 180 | } |
gevell1 | 0:8798a72d6580 | 181 | Hand Player1("Player"); |
gevell1 | 0:8798a72d6580 | 182 | Hand Player2("Dealer"); |
gevell1 | 0:8798a72d6580 | 183 | cout << "Round " << round << endl; |
gevell1 | 0:8798a72d6580 | 184 | cout << "Player1 has " << dollars << " Dollars" << endl; |
gevell1 | 0:8798a72d6580 | 185 | cout << "Player's hand is: "; |
gevell1 | 0:8798a72d6580 | 186 | Player1.printHand(); |
gevell1 | 0:8798a72d6580 | 187 | for(int a=0; a<2; a++) { |
gevell1 | 0:8798a72d6580 | 188 | cardArray_player[a] = Player1.getCardValues(a); |
gevell1 | 0:8798a72d6580 | 189 | } |
gevell1 | 0:8798a72d6580 | 190 | cout << endl << "Player's hand value is: " << Player1.handValue()<< endl; |
gevell1 | 0:8798a72d6580 | 191 | |
gevell1 | 0:8798a72d6580 | 192 | drawPlayerHand(); |
gevell1 | 0:8798a72d6580 | 193 | drawCharacterPlayer(cardArray_player[0],cardArray_player[1]); |
gevell1 | 0:8798a72d6580 | 194 | cout << "Dealer's first card is: "; |
gevell1 | 0:8798a72d6580 | 195 | Player2.printFirstCard(); |
gevell1 | 0:8798a72d6580 | 196 | cout << endl; |
gevell1 | 0:8798a72d6580 | 197 | |
gevell1 | 0:8798a72d6580 | 198 | drawDealerHand(); |
gevell1 | 0:8798a72d6580 | 199 | for(int b=0; b<2; b++) { |
gevell1 | 0:8798a72d6580 | 200 | cardArray_dealer[b] = Player2.getCardValues(b); |
gevell1 | 0:8798a72d6580 | 201 | } |
gevell1 | 0:8798a72d6580 | 202 | drawCharDealer(cardArray_dealer[0]); |
gevell1 | 0:8798a72d6580 | 203 | cout << "Select a bet amount. If you want to fold, bet 0 "<< endl<<endl<<endl; |
gevell1 | 0:8798a72d6580 | 204 | |
gevell1 | 0:8798a72d6580 | 205 | //Enter pushbutton for bet value |
gevell1 | 0:8798a72d6580 | 206 | while(pb1 && pb2 && pb3 && pb4); |
gevell1 | 0:8798a72d6580 | 207 | if(!pb1) { |
gevell1 | 0:8798a72d6580 | 208 | bet = 0; |
gevell1 | 0:8798a72d6580 | 209 | } else if(!pb2) { |
gevell1 | 0:8798a72d6580 | 210 | bet = 25; |
gevell1 | 0:8798a72d6580 | 211 | } else if(!pb3) { |
gevell1 | 0:8798a72d6580 | 212 | bet = 100; |
gevell1 | 0:8798a72d6580 | 213 | } else if(!pb4) { |
gevell1 | 0:8798a72d6580 | 214 | bet = dollars; |
gevell1 | 0:8798a72d6580 | 215 | } |
gevell1 | 0:8798a72d6580 | 216 | |
gevell1 | 0:8798a72d6580 | 217 | if (bet == 0) { |
gevell1 | 0:8798a72d6580 | 218 | pc.printf("Please leave the table or restart to play again"); |
gevell1 | 0:8798a72d6580 | 219 | break; |
gevell1 | 0:8798a72d6580 | 220 | } else if (bet > dollars && dollars != 0) { |
gevell1 | 0:8798a72d6580 | 221 | cout << "You don't have that much money! Enter a lower bet."; |
gevell1 | 0:8798a72d6580 | 222 | wait_ms(200); |
gevell1 | 0:8798a72d6580 | 223 | continue; |
gevell1 | 0:8798a72d6580 | 224 | } |
gevell1 | 0:8798a72d6580 | 225 | drawText(bet); |
gevell1 | 0:8798a72d6580 | 226 | |
gevell1 | 0:8798a72d6580 | 227 | while (1) { |
gevell1 | 0:8798a72d6580 | 228 | pc.printf("Would you like to hit or stand?\n"); |
gevell1 | 0:8798a72d6580 | 229 | while(pb5 && pb6); |
gevell1 | 0:8798a72d6580 | 230 | if(!pb5) { |
gevell1 | 0:8798a72d6580 | 231 | action = "hit"; |
gevell1 | 0:8798a72d6580 | 232 | } else if(!pb6) { |
gevell1 | 0:8798a72d6580 | 233 | action = "stand"; |
gevell1 | 0:8798a72d6580 | 234 | } |
gevell1 | 0:8798a72d6580 | 235 | if (action == "hit") { |
gevell1 | 0:8798a72d6580 | 236 | Player1.addCard(); |
gevell1 | 0:8798a72d6580 | 237 | hitCount++; |
gevell1 | 0:8798a72d6580 | 238 | cout << endl << "Player's hand value is: " << Player1.handValue()<<endl; |
gevell1 | 0:8798a72d6580 | 239 | Player1.printHand(); |
gevell1 | 0:8798a72d6580 | 240 | cout <<endl; |
gevell1 | 0:8798a72d6580 | 241 | drawPlayerHit(hitCount); |
gevell1 | 0:8798a72d6580 | 242 | switch(hitCount) { |
gevell1 | 0:8798a72d6580 | 243 | case 1: |
gevell1 | 0:8798a72d6580 | 244 | cardArray_player[2] = Player1.getCardValues(2); |
gevell1 | 0:8798a72d6580 | 245 | drawHitChar_player(cardArray_player[2],hitCount); |
gevell1 | 0:8798a72d6580 | 246 | break; |
gevell1 | 0:8798a72d6580 | 247 | case 2: |
gevell1 | 0:8798a72d6580 | 248 | cardArray_player[3] = Player1.getCardValues(3); |
gevell1 | 0:8798a72d6580 | 249 | drawHitChar_player(cardArray_player[3],hitCount); |
gevell1 | 0:8798a72d6580 | 250 | break; |
gevell1 | 0:8798a72d6580 | 251 | case 3: |
gevell1 | 0:8798a72d6580 | 252 | cardArray_player[4] = Player1.getCardValues(4); |
gevell1 | 0:8798a72d6580 | 253 | drawHitChar_player(cardArray_player[4],hitCount); |
gevell1 | 0:8798a72d6580 | 254 | break; |
gevell1 | 0:8798a72d6580 | 255 | } |
gevell1 | 0:8798a72d6580 | 256 | cout << endl; |
gevell1 | 0:8798a72d6580 | 257 | |
gevell1 | 0:8798a72d6580 | 258 | if (Player1.handValue() > 21) { |
gevell1 | 0:8798a72d6580 | 259 | |
gevell1 | 0:8798a72d6580 | 260 | cout << "Player's hand is bust " << endl; |
gevell1 | 0:8798a72d6580 | 261 | dollars -= bet; |
gevell1 | 0:8798a72d6580 | 262 | round++; |
gevell1 | 0:8798a72d6580 | 263 | cout << "Player has " << dollars << " dollars" << endl; |
gevell1 | 0:8798a72d6580 | 264 | lcd.cls(); |
gevell1 | 0:8798a72d6580 | 265 | lcd.locate(lcd.max_col/4,lcd.max_row/2); |
gevell1 | 0:8798a72d6580 | 266 | lcd.printf("Dealer Wins :()"); |
gevell1 | 0:8798a72d6580 | 267 | overshot = true; |
gevell1 | 0:8798a72d6580 | 268 | wait_ms(1000); |
gevell1 | 0:8798a72d6580 | 269 | break; |
gevell1 | 0:8798a72d6580 | 270 | } |
gevell1 | 0:8798a72d6580 | 271 | } |
gevell1 | 0:8798a72d6580 | 272 | |
gevell1 | 0:8798a72d6580 | 273 | else if (action == "stand") { |
gevell1 | 0:8798a72d6580 | 274 | round++; |
gevell1 | 0:8798a72d6580 | 275 | overshot = false; |
gevell1 | 0:8798a72d6580 | 276 | break; |
gevell1 | 0:8798a72d6580 | 277 | } |
gevell1 | 0:8798a72d6580 | 278 | wait_ms(500); |
gevell1 | 0:8798a72d6580 | 279 | } |
gevell1 | 0:8798a72d6580 | 280 | |
gevell1 | 0:8798a72d6580 | 281 | if (!overshot) { |
gevell1 | 0:8798a72d6580 | 282 | cout << "Dealer's hand is: "; |
gevell1 | 0:8798a72d6580 | 283 | Player2.printHand(); |
gevell1 | 0:8798a72d6580 | 284 | drawDealerCard2(cardArray_dealer[1]); |
gevell1 | 0:8798a72d6580 | 285 | cout << endl << "Dealer's hand value is " << Player2.handValue() << endl; |
gevell1 | 0:8798a72d6580 | 286 | |
gevell1 | 0:8798a72d6580 | 287 | while (Player2.handValue() < 17) { |
gevell1 | 0:8798a72d6580 | 288 | dealerCount++; |
gevell1 | 0:8798a72d6580 | 289 | Player2.addCard(); |
gevell1 | 0:8798a72d6580 | 290 | cout << "Dealer's hand is: "; |
gevell1 | 0:8798a72d6580 | 291 | Player2.printHand(); |
gevell1 | 0:8798a72d6580 | 292 | drawDealerHit(dealerCount); |
gevell1 | 0:8798a72d6580 | 293 | switch(dealerCount) { |
gevell1 | 0:8798a72d6580 | 294 | case 1: |
gevell1 | 0:8798a72d6580 | 295 | cardArray_dealer[2] = Player2.getCardValues(2); |
gevell1 | 0:8798a72d6580 | 296 | drawHitChar_dealer(cardArray_dealer[2],dealerCount); |
gevell1 | 0:8798a72d6580 | 297 | break; |
gevell1 | 0:8798a72d6580 | 298 | case 2: |
gevell1 | 0:8798a72d6580 | 299 | cardArray_dealer[3] = Player2.getCardValues(3); |
gevell1 | 0:8798a72d6580 | 300 | drawHitChar_dealer(cardArray_dealer[3],dealerCount); |
gevell1 | 0:8798a72d6580 | 301 | break; |
gevell1 | 0:8798a72d6580 | 302 | case 3: |
gevell1 | 0:8798a72d6580 | 303 | cardArray_dealer[4] = Player2.getCardValues(4); |
gevell1 | 0:8798a72d6580 | 304 | drawHitChar_dealer(cardArray_dealer[4],dealerCount); |
gevell1 | 0:8798a72d6580 | 305 | break; |
gevell1 | 0:8798a72d6580 | 306 | } |
gevell1 | 0:8798a72d6580 | 307 | cout << endl << "Dealer's hand value is " << Player2.handValue() << endl; |
gevell1 | 0:8798a72d6580 | 308 | wait_ms(600); |
gevell1 | 0:8798a72d6580 | 309 | } |
gevell1 | 0:8798a72d6580 | 310 | |
gevell1 | 0:8798a72d6580 | 311 | if (Player2.handValue() > 21) { |
gevell1 | 0:8798a72d6580 | 312 | cout << "Dealer's hand is bust. Player wins!" << endl<<endl; |
gevell1 | 0:8798a72d6580 | 313 | dollars += bet; |
gevell1 | 0:8798a72d6580 | 314 | lcd.cls(); |
gevell1 | 0:8798a72d6580 | 315 | lcd.locate(lcd.max_col/4,lcd.max_row/2); |
gevell1 | 0:8798a72d6580 | 316 | lcd.printf("Player Wins!"); |
gevell1 | 0:8798a72d6580 | 317 | wait_ms(1000); |
gevell1 | 0:8798a72d6580 | 318 | continue; |
gevell1 | 0:8798a72d6580 | 319 | } |
gevell1 | 0:8798a72d6580 | 320 | |
gevell1 | 0:8798a72d6580 | 321 | if (Player1.handValue() == Player2.handValue()) { |
gevell1 | 0:8798a72d6580 | 322 | cout << "Draw." << endl; |
gevell1 | 0:8798a72d6580 | 323 | bet = bet / 2; |
gevell1 | 0:8798a72d6580 | 324 | dollars += bet; |
gevell1 | 0:8798a72d6580 | 325 | lcd.cls(); |
gevell1 | 0:8798a72d6580 | 326 | lcd.locate(lcd.max_col/4,lcd.max_row/2); |
gevell1 | 0:8798a72d6580 | 327 | lcd.printf("Draw."); |
gevell1 | 0:8798a72d6580 | 328 | wait_ms(1000); |
gevell1 | 0:8798a72d6580 | 329 | continue; |
gevell1 | 0:8798a72d6580 | 330 | } |
gevell1 | 0:8798a72d6580 | 331 | |
gevell1 | 0:8798a72d6580 | 332 | if (Player1.handValue() < Player2.handValue()) { |
gevell1 | 0:8798a72d6580 | 333 | cout << "Dealer wins." << endl; |
gevell1 | 0:8798a72d6580 | 334 | lcd.cls(); |
gevell1 | 0:8798a72d6580 | 335 | lcd.locate(lcd.max_col/4,lcd.max_row/2); |
gevell1 | 0:8798a72d6580 | 336 | lcd.printf("Dealer Wins :("); |
gevell1 | 0:8798a72d6580 | 337 | dollars -= bet; |
gevell1 | 0:8798a72d6580 | 338 | wait_ms(1000); |
gevell1 | 0:8798a72d6580 | 339 | break; |
gevell1 | 0:8798a72d6580 | 340 | } |
gevell1 | 0:8798a72d6580 | 341 | |
gevell1 | 0:8798a72d6580 | 342 | if (Player1.handValue() > Player2.handValue()) { |
gevell1 | 0:8798a72d6580 | 343 | cout << "Player wins." << endl; |
gevell1 | 0:8798a72d6580 | 344 | dollars += bet; |
gevell1 | 0:8798a72d6580 | 345 | lcd.cls(); |
gevell1 | 0:8798a72d6580 | 346 | lcd.locate(lcd.max_col/4,lcd.max_row/2); |
gevell1 | 0:8798a72d6580 | 347 | lcd.printf("Player Wins!"); |
gevell1 | 0:8798a72d6580 | 348 | wait_ms(600); |
gevell1 | 0:8798a72d6580 | 349 | continue; |
gevell1 | 0:8798a72d6580 | 350 | } |
gevell1 | 0:8798a72d6580 | 351 | } |
gevell1 | 0:8798a72d6580 | 352 | if(overshot) { |
gevell1 | 0:8798a72d6580 | 353 | break; |
gevell1 | 0:8798a72d6580 | 354 | } |
gevell1 | 0:8798a72d6580 | 355 | } |
gevell1 | 0:8798a72d6580 | 356 | wait_ms(400); |
gevell1 | 0:8798a72d6580 | 357 | if(dollars != 0) { |
gevell1 | 0:8798a72d6580 | 358 | lcd.cls(); |
gevell1 | 0:8798a72d6580 | 359 | lcd.locate(lcd.max_col/4,lcd.max_row/2); |
gevell1 | 0:8798a72d6580 | 360 | lcd.printf("Continue?"); |
gevell1 | 0:8798a72d6580 | 361 | pc.printf("Continue?\n\n\n"); |
gevell1 | 0:8798a72d6580 | 362 | } else { |
gevell1 | 0:8798a72d6580 | 363 | pc.printf("You Lose"); |
gevell1 | 0:8798a72d6580 | 364 | lcd.cls(); |
gevell1 | 0:8798a72d6580 | 365 | lcd.locate(lcd.max_col/4,lcd.max_row/2); |
gevell1 | 0:8798a72d6580 | 366 | lcd.printf("YOU LOSE"); |
gevell1 | 0:8798a72d6580 | 367 | break; |
gevell1 | 0:8798a72d6580 | 368 | } |
gevell1 | 0:8798a72d6580 | 369 | while(pb7 && pb8); |
gevell1 | 0:8798a72d6580 | 370 | if(!pb7) { |
gevell1 | 0:8798a72d6580 | 371 | wait_ms(200); |
gevell1 | 0:8798a72d6580 | 372 | } else if(!pb8) { |
gevell1 | 0:8798a72d6580 | 373 | break; |
gevell1 | 0:8798a72d6580 | 374 | } |
gevell1 | 0:8798a72d6580 | 375 | } |
gevell1 | 0:8798a72d6580 | 376 | } |