1 player Black jack for mbed

Dependencies:   4DGL-uLCD-SE PinDetect mbed

Committer:
jayvpoddar
Date:
Thu Mar 12 19:48:26 2015 +0000
Revision:
0:d2e6b3ce6988
First push

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jayvpoddar 0:d2e6b3ce6988 1 #include "mbed.h"
jayvpoddar 0:d2e6b3ce6988 2 #include "uLCD_4DGL.h"
jayvpoddar 0:d2e6b3ce6988 3 #include <string>
jayvpoddar 0:d2e6b3ce6988 4 #define PURPLE 0x800080
jayvpoddar 0:d2e6b3ce6988 5 #define ORANGE 0xFFA500
jayvpoddar 0:d2e6b3ce6988 6 #include "deck.h"
jayvpoddar 0:d2e6b3ce6988 7 #include <mpr121.h>
jayvpoddar 0:d2e6b3ce6988 8 #include "PinDetect.h"
jayvpoddar 0:d2e6b3ce6988 9 uLCD_4DGL uLCD(p28, p27, p30);
jayvpoddar 0:d2e6b3ce6988 10 PinDetect pb1(p8);
jayvpoddar 0:d2e6b3ce6988 11 PinDetect pb2(p11);
jayvpoddar 0:d2e6b3ce6988 12 DigitalOut led1(LED1);
jayvpoddar 0:d2e6b3ce6988 13 DigitalOut led2(LED2);
jayvpoddar 0:d2e6b3ce6988 14 DigitalOut led3(LED3);
jayvpoddar 0:d2e6b3ce6988 15 DigitalOut led4(LED4);
jayvpoddar 0:d2e6b3ce6988 16 // Setup the i2c bus on pins 9 and 10
jayvpoddar 0:d2e6b3ce6988 17 I2C i2c(p9, p10);
jayvpoddar 0:d2e6b3ce6988 18 // Setup the Mpr121:
jayvpoddar 0:d2e6b3ce6988 19 // constructor(i2c object, i2c address of the mpr121)
jayvpoddar 0:d2e6b3ce6988 20 Mpr121 mpr121(&i2c, Mpr121::ADD_VSS);
jayvpoddar 0:d2e6b3ce6988 21 //InterruptIn interrupt(p26);
jayvpoddar 0:d2e6b3ce6988 22 Deck gameDeck;
jayvpoddar 0:d2e6b3ce6988 23 Card playerHand[10];
jayvpoddar 0:d2e6b3ce6988 24 Card dealerHand[10];
jayvpoddar 0:d2e6b3ce6988 25 int playerCount=2;
jayvpoddar 0:d2e6b3ce6988 26 int dealerCount=2;
jayvpoddar 0:d2e6b3ce6988 27 bool isPlayer=true;
jayvpoddar 0:d2e6b3ce6988 28 int playerPoints;
jayvpoddar 0:d2e6b3ce6988 29 int dealerPoints;
jayvpoddar 0:d2e6b3ce6988 30 int money = 1000;
jayvpoddar 0:d2e6b3ce6988 31 int bet=100;
jayvpoddar 0:d2e6b3ce6988 32 int sumHand(Card[]);
jayvpoddar 0:d2e6b3ce6988 33
jayvpoddar 0:d2e6b3ce6988 34 void printPoints(int points)
jayvpoddar 0:d2e6b3ce6988 35 {
jayvpoddar 0:d2e6b3ce6988 36 if(points>21) {
jayvpoddar 0:d2e6b3ce6988 37 uLCD.printf("Pts=bust");
jayvpoddar 0:d2e6b3ce6988 38 } else {
jayvpoddar 0:d2e6b3ce6988 39 uLCD.printf("Pts=%d",points);
jayvpoddar 0:d2e6b3ce6988 40 }
jayvpoddar 0:d2e6b3ce6988 41 }
jayvpoddar 0:d2e6b3ce6988 42 void initialDeal()
jayvpoddar 0:d2e6b3ce6988 43 {
jayvpoddar 0:d2e6b3ce6988 44 playerCount=2;
jayvpoddar 0:d2e6b3ce6988 45 dealerCount=2;
jayvpoddar 0:d2e6b3ce6988 46 playerHand[0]= gameDeck.cards[0];
jayvpoddar 0:d2e6b3ce6988 47 dealerHand[0]=gameDeck.cards[1];
jayvpoddar 0:d2e6b3ce6988 48 playerHand[1] = gameDeck.cards[2];
jayvpoddar 0:d2e6b3ce6988 49 dealerHand[1] = gameDeck.cards[3];
jayvpoddar 0:d2e6b3ce6988 50 uLCD.locate(1,8);
jayvpoddar 0:d2e6b3ce6988 51 uLCD.printf("%s%s",playerHand[0].convertRank(),playerHand[0].convertSuit());
jayvpoddar 0:d2e6b3ce6988 52 uLCD.locate(4,8);
jayvpoddar 0:d2e6b3ce6988 53 uLCD.printf("%s%s",playerHand[1].convertRank(),playerHand[1].convertSuit());
jayvpoddar 0:d2e6b3ce6988 54 uLCD.locate(1,3);
jayvpoddar 0:d2e6b3ce6988 55 uLCD.printf("%s%s",dealerHand[0].convertRank(),dealerHand[1].convertSuit());
jayvpoddar 0:d2e6b3ce6988 56
jayvpoddar 0:d2e6b3ce6988 57 uLCD.locate(6,10);
jayvpoddar 0:d2e6b3ce6988 58 playerPoints = sumHand(playerHand);
jayvpoddar 0:d2e6b3ce6988 59 printPoints(playerPoints);
jayvpoddar 0:d2e6b3ce6988 60 }
jayvpoddar 0:d2e6b3ce6988 61
jayvpoddar 0:d2e6b3ce6988 62
jayvpoddar 0:d2e6b3ce6988 63 void hit()
jayvpoddar 0:d2e6b3ce6988 64 {
jayvpoddar 0:d2e6b3ce6988 65 if(isPlayer) {
jayvpoddar 0:d2e6b3ce6988 66 playerHand[playerCount]=gameDeck.cards[playerCount+dealerCount];
jayvpoddar 0:d2e6b3ce6988 67 playerCount++;
jayvpoddar 0:d2e6b3ce6988 68 uLCD.locate((playerCount-1)*3+1,8);
jayvpoddar 0:d2e6b3ce6988 69 uLCD.printf("%s%s",playerHand[playerCount-1].convertRank(),playerHand[playerCount-1].convertSuit());
jayvpoddar 0:d2e6b3ce6988 70 uLCD.locate(6,10);
jayvpoddar 0:d2e6b3ce6988 71 playerPoints = sumHand(playerHand);
jayvpoddar 0:d2e6b3ce6988 72 printPoints(playerPoints);
jayvpoddar 0:d2e6b3ce6988 73 wait(1);
jayvpoddar 0:d2e6b3ce6988 74 } else {
jayvpoddar 0:d2e6b3ce6988 75 dealerHand[dealerCount] = gameDeck.cards[playerCount+dealerCount];
jayvpoddar 0:d2e6b3ce6988 76 dealerCount++;
jayvpoddar 0:d2e6b3ce6988 77 uLCD.locate((dealerCount-1)*3+1,3);
jayvpoddar 0:d2e6b3ce6988 78 uLCD.printf("%s%s",dealerHand[dealerCount-1].convertRank(),dealerHand[dealerCount-1].convertSuit());
jayvpoddar 0:d2e6b3ce6988 79 uLCD.locate(6,6.5);
jayvpoddar 0:d2e6b3ce6988 80 dealerPoints = sumHand(dealerHand);
jayvpoddar 0:d2e6b3ce6988 81 printPoints(dealerPoints);
jayvpoddar 0:d2e6b3ce6988 82 wait(1);
jayvpoddar 0:d2e6b3ce6988 83 }
jayvpoddar 0:d2e6b3ce6988 84 }
jayvpoddar 0:d2e6b3ce6988 85
jayvpoddar 0:d2e6b3ce6988 86 void getBet()
jayvpoddar 0:d2e6b3ce6988 87 {
jayvpoddar 0:d2e6b3ce6988 88 uLCD.cls();
jayvpoddar 0:d2e6b3ce6988 89 uLCD.printf("How much will you bet?\n(10-500)");
jayvpoddar 0:d2e6b3ce6988 90 int len=0;
jayvpoddar 0:d2e6b3ce6988 91 int amount=0;
jayvpoddar 0:d2e6b3ce6988 92 while(len<3) {
jayvpoddar 0:d2e6b3ce6988 93 int key=0;
jayvpoddar 0:d2e6b3ce6988 94 int i=0;
jayvpoddar 0:d2e6b3ce6988 95 int value=mpr121.read(0x00);
jayvpoddar 0:d2e6b3ce6988 96 value +=mpr121.read(0x01)<<8;
jayvpoddar 0:d2e6b3ce6988 97 // LED demo mod
jayvpoddar 0:d2e6b3ce6988 98 i=0;
jayvpoddar 0:d2e6b3ce6988 99 // puts key number out to LEDs for demo
jayvpoddar 0:d2e6b3ce6988 100 for (i=0; i<12; i++) {
jayvpoddar 0:d2e6b3ce6988 101 if (((value>>i)&0x01)==1) key=i+1;
jayvpoddar 0:d2e6b3ce6988 102
jayvpoddar 0:d2e6b3ce6988 103 }
jayvpoddar 0:d2e6b3ce6988 104 if(key != 0 ) {
jayvpoddar 0:d2e6b3ce6988 105 if(key>10) {
jayvpoddar 0:d2e6b3ce6988 106 break;
jayvpoddar 0:d2e6b3ce6988 107 } else {
jayvpoddar 0:d2e6b3ce6988 108 len++;
jayvpoddar 0:d2e6b3ce6988 109 amount*=10;
jayvpoddar 0:d2e6b3ce6988 110 amount+=key-1;
jayvpoddar 0:d2e6b3ce6988 111 uLCD.printf("%d",key-1);
jayvpoddar 0:d2e6b3ce6988 112 wait(.25);
jayvpoddar 0:d2e6b3ce6988 113 }
jayvpoddar 0:d2e6b3ce6988 114 }
jayvpoddar 0:d2e6b3ce6988 115 }
jayvpoddar 0:d2e6b3ce6988 116 bet=max(min(amount,500),10);
jayvpoddar 0:d2e6b3ce6988 117 bet = min(bet,money);
jayvpoddar 0:d2e6b3ce6988 118 uLCD.printf("\nBet = %d",bet);
jayvpoddar 0:d2e6b3ce6988 119
jayvpoddar 0:d2e6b3ce6988 120 }
jayvpoddar 0:d2e6b3ce6988 121 void setup()
jayvpoddar 0:d2e6b3ce6988 122 {
jayvpoddar 0:d2e6b3ce6988 123 uLCD.color(ORANGE);
jayvpoddar 0:d2e6b3ce6988 124
jayvpoddar 0:d2e6b3ce6988 125
jayvpoddar 0:d2e6b3ce6988 126 getBet();
jayvpoddar 0:d2e6b3ce6988 127 uLCD.cls();
jayvpoddar 0:d2e6b3ce6988 128 uLCD.locate(6,0.5);
jayvpoddar 0:d2e6b3ce6988 129 uLCD.printf("Dealer");
jayvpoddar 0:d2e6b3ce6988 130
jayvpoddar 0:d2e6b3ce6988 131 uLCD.locate(6,7.5);
jayvpoddar 0:d2e6b3ce6988 132 uLCD.printf("Player");
jayvpoddar 0:d2e6b3ce6988 133
jayvpoddar 0:d2e6b3ce6988 134 uLCD.filled_rectangle(0,112,127,148,DGREY);
jayvpoddar 0:d2e6b3ce6988 135 gameDeck.shuffleDeck();
jayvpoddar 0:d2e6b3ce6988 136 initialDeal();
jayvpoddar 0:d2e6b3ce6988 137
jayvpoddar 0:d2e6b3ce6988 138 }
jayvpoddar 0:d2e6b3ce6988 139
jayvpoddar 0:d2e6b3ce6988 140 // Callback routine is interrupt activated by a debounced pb1 hit
jayvpoddar 0:d2e6b3ce6988 141 void pb1_hit_callback (void)
jayvpoddar 0:d2e6b3ce6988 142 {
jayvpoddar 0:d2e6b3ce6988 143 hit();
jayvpoddar 0:d2e6b3ce6988 144
jayvpoddar 0:d2e6b3ce6988 145 }
jayvpoddar 0:d2e6b3ce6988 146
jayvpoddar 0:d2e6b3ce6988 147 // Callback routine is interrupt activated by a debounced pb2 hit
jayvpoddar 0:d2e6b3ce6988 148 void pb2_hit_callback (void)
jayvpoddar 0:d2e6b3ce6988 149 {
jayvpoddar 0:d2e6b3ce6988 150 isPlayer=false;
jayvpoddar 0:d2e6b3ce6988 151
jayvpoddar 0:d2e6b3ce6988 152 }
jayvpoddar 0:d2e6b3ce6988 153 void walletSize()
jayvpoddar 0:d2e6b3ce6988 154 {
jayvpoddar 0:d2e6b3ce6988 155 uLCD.cls();
jayvpoddar 0:d2e6b3ce6988 156 uLCD.printf("NOTE:\nEnter input on pad followed by key 10\n\n");
jayvpoddar 0:d2e6b3ce6988 157 uLCD.printf("top pushbutton is hit and bottom is stand");
jayvpoddar 0:d2e6b3ce6988 158
jayvpoddar 0:d2e6b3ce6988 159 wait(5);
jayvpoddar 0:d2e6b3ce6988 160 uLCD.cls();
jayvpoddar 0:d2e6b3ce6988 161 uLCD.printf("How much will you start with?\n(1000-10000)");
jayvpoddar 0:d2e6b3ce6988 162 int len=0;
jayvpoddar 0:d2e6b3ce6988 163 int amount=0;
jayvpoddar 0:d2e6b3ce6988 164 while(len<5) {
jayvpoddar 0:d2e6b3ce6988 165 int key=0;
jayvpoddar 0:d2e6b3ce6988 166 int i=0;
jayvpoddar 0:d2e6b3ce6988 167 int value=mpr121.read(0x00);
jayvpoddar 0:d2e6b3ce6988 168 value +=mpr121.read(0x01)<<8;
jayvpoddar 0:d2e6b3ce6988 169 // LED demo mod
jayvpoddar 0:d2e6b3ce6988 170 i=0;
jayvpoddar 0:d2e6b3ce6988 171 // puts key number out to LEDs for demo
jayvpoddar 0:d2e6b3ce6988 172 for (i=0; i<12; i++) {
jayvpoddar 0:d2e6b3ce6988 173 if (((value>>i)&0x01)==1) key=i+1;
jayvpoddar 0:d2e6b3ce6988 174
jayvpoddar 0:d2e6b3ce6988 175 }
jayvpoddar 0:d2e6b3ce6988 176 if(key != 0 ) {
jayvpoddar 0:d2e6b3ce6988 177 if(key>10) {
jayvpoddar 0:d2e6b3ce6988 178 break;
jayvpoddar 0:d2e6b3ce6988 179 } else {
jayvpoddar 0:d2e6b3ce6988 180 len++;
jayvpoddar 0:d2e6b3ce6988 181 amount*=10;
jayvpoddar 0:d2e6b3ce6988 182 amount+=key-1;
jayvpoddar 0:d2e6b3ce6988 183 uLCD.printf("%d",key-1);
jayvpoddar 0:d2e6b3ce6988 184 wait(.25);
jayvpoddar 0:d2e6b3ce6988 185 }
jayvpoddar 0:d2e6b3ce6988 186 }
jayvpoddar 0:d2e6b3ce6988 187 }
jayvpoddar 0:d2e6b3ce6988 188 money=max(min(amount,50000),1000);
jayvpoddar 0:d2e6b3ce6988 189
jayvpoddar 0:d2e6b3ce6988 190 uLCD.printf("\nWallet = %d",money);
jayvpoddar 0:d2e6b3ce6988 191
jayvpoddar 0:d2e6b3ce6988 192 }
jayvpoddar 0:d2e6b3ce6988 193 void game();
jayvpoddar 0:d2e6b3ce6988 194 int main()
jayvpoddar 0:d2e6b3ce6988 195 {
jayvpoddar 0:d2e6b3ce6988 196 pb1.mode(PullUp);
jayvpoddar 0:d2e6b3ce6988 197 pb2.mode(PullUp);
jayvpoddar 0:d2e6b3ce6988 198 // Delay for initial pullup to take effect
jayvpoddar 0:d2e6b3ce6988 199 wait(.01);
jayvpoddar 0:d2e6b3ce6988 200 // Setup Interrupt callback functions for a pb hit
jayvpoddar 0:d2e6b3ce6988 201 pb1.attach_deasserted(&pb1_hit_callback);
jayvpoddar 0:d2e6b3ce6988 202 pb2.attach_deasserted(&pb2_hit_callback);
jayvpoddar 0:d2e6b3ce6988 203 // Start sampling pb inputs using interrupts
jayvpoddar 0:d2e6b3ce6988 204 pb1.setSampleFrequency();
jayvpoddar 0:d2e6b3ce6988 205 pb2.setSampleFrequency();
jayvpoddar 0:d2e6b3ce6988 206 //uLCD.color(ORANGE);
jayvpoddar 0:d2e6b3ce6988 207 //uLCD.printf("How much money to play with?(minimum bet $10)");
jayvpoddar 0:d2e6b3ce6988 208 walletSize();
jayvpoddar 0:d2e6b3ce6988 209 game();
jayvpoddar 0:d2e6b3ce6988 210
jayvpoddar 0:d2e6b3ce6988 211 }
jayvpoddar 0:d2e6b3ce6988 212 int sumHand(Card[]);
jayvpoddar 0:d2e6b3ce6988 213 void result(int);
jayvpoddar 0:d2e6b3ce6988 214 void dealerTurn();
jayvpoddar 0:d2e6b3ce6988 215 void game()
jayvpoddar 0:d2e6b3ce6988 216 {
jayvpoddar 0:d2e6b3ce6988 217 while(money>=100) {
jayvpoddar 0:d2e6b3ce6988 218 isPlayer = true;
jayvpoddar 0:d2e6b3ce6988 219 setup();
jayvpoddar 0:d2e6b3ce6988 220 uLCD.locate(0,14);
jayvpoddar 0:d2e6b3ce6988 221 uLCD.printf("Cash=%d",money);
jayvpoddar 0:d2e6b3ce6988 222 uLCD.locate(10,14);
jayvpoddar 0:d2e6b3ce6988 223 uLCD.printf("Bet=%d",bet);
jayvpoddar 0:d2e6b3ce6988 224 while(isPlayer) {
jayvpoddar 0:d2e6b3ce6988 225 if(sumHand(playerHand)>21) {
jayvpoddar 0:d2e6b3ce6988 226 result(2);
jayvpoddar 0:d2e6b3ce6988 227 }
jayvpoddar 0:d2e6b3ce6988 228 }
jayvpoddar 0:d2e6b3ce6988 229 dealerTurn();
jayvpoddar 0:d2e6b3ce6988 230 }
jayvpoddar 0:d2e6b3ce6988 231 while(1) {
jayvpoddar 0:d2e6b3ce6988 232 uLCD.cls();
jayvpoddar 0:d2e6b3ce6988 233 uLCD.locate(3,7);
jayvpoddar 0:d2e6b3ce6988 234 uLCD.printf("GAME OVER");
jayvpoddar 0:d2e6b3ce6988 235 wait(1);
jayvpoddar 0:d2e6b3ce6988 236 }
jayvpoddar 0:d2e6b3ce6988 237 }
jayvpoddar 0:d2e6b3ce6988 238 void result(int outcome)
jayvpoddar 0:d2e6b3ce6988 239 {
jayvpoddar 0:d2e6b3ce6988 240 uLCD.cls();
jayvpoddar 0:d2e6b3ce6988 241 if(outcome == 0) {
jayvpoddar 0:d2e6b3ce6988 242
jayvpoddar 0:d2e6b3ce6988 243 uLCD.locate(6,7);
jayvpoddar 0:d2e6b3ce6988 244 uLCD.printf("Player Won ");
jayvpoddar 0:d2e6b3ce6988 245 money += bet;
jayvpoddar 0:d2e6b3ce6988 246 } else if(outcome == 1) {
jayvpoddar 0:d2e6b3ce6988 247 uLCD.locate(6,7);
jayvpoddar 0:d2e6b3ce6988 248 uLCD.printf("Game Draw");
jayvpoddar 0:d2e6b3ce6988 249
jayvpoddar 0:d2e6b3ce6988 250 } else if(outcome == 2) {
jayvpoddar 0:d2e6b3ce6988 251 uLCD.locate(6,7);
jayvpoddar 0:d2e6b3ce6988 252 uLCD.printf("Player Lost ");
jayvpoddar 0:d2e6b3ce6988 253 money -=bet;
jayvpoddar 0:d2e6b3ce6988 254 }
jayvpoddar 0:d2e6b3ce6988 255 wait(1);
jayvpoddar 0:d2e6b3ce6988 256 game();
jayvpoddar 0:d2e6b3ce6988 257 }
jayvpoddar 0:d2e6b3ce6988 258 void dealerTurn()
jayvpoddar 0:d2e6b3ce6988 259 {
jayvpoddar 0:d2e6b3ce6988 260 isPlayer = false;
jayvpoddar 0:d2e6b3ce6988 261 uLCD.locate(4,3);
jayvpoddar 0:d2e6b3ce6988 262 uLCD.printf("%s%s",dealerHand[1].convertRank(),dealerHand[1].convertSuit());
jayvpoddar 0:d2e6b3ce6988 263 uLCD.locate(6,6.5);
jayvpoddar 0:d2e6b3ce6988 264 dealerPoints = sumHand(dealerHand);
jayvpoddar 0:d2e6b3ce6988 265 printPoints(dealerPoints);
jayvpoddar 0:d2e6b3ce6988 266 wait(1);
jayvpoddar 0:d2e6b3ce6988 267 while(dealerPoints<17) {
jayvpoddar 0:d2e6b3ce6988 268 hit();
jayvpoddar 0:d2e6b3ce6988 269 }
jayvpoddar 0:d2e6b3ce6988 270 if(dealerPoints>21) {
jayvpoddar 0:d2e6b3ce6988 271 result(0);
jayvpoddar 0:d2e6b3ce6988 272 } else if(playerPoints>dealerPoints) {
jayvpoddar 0:d2e6b3ce6988 273 result(0);
jayvpoddar 0:d2e6b3ce6988 274 } else if(playerPoints<dealerPoints) {
jayvpoddar 0:d2e6b3ce6988 275 result(2);
jayvpoddar 0:d2e6b3ce6988 276 } else {
jayvpoddar 0:d2e6b3ce6988 277 result(1);
jayvpoddar 0:d2e6b3ce6988 278 }
jayvpoddar 0:d2e6b3ce6988 279 }
jayvpoddar 0:d2e6b3ce6988 280
jayvpoddar 0:d2e6b3ce6988 281
jayvpoddar 0:d2e6b3ce6988 282 int sumHand(Card hand[])
jayvpoddar 0:d2e6b3ce6988 283 {
jayvpoddar 0:d2e6b3ce6988 284 int sum=0;
jayvpoddar 0:d2e6b3ce6988 285 int aces=0;
jayvpoddar 0:d2e6b3ce6988 286 int count= isPlayer? playerCount:dealerCount;
jayvpoddar 0:d2e6b3ce6988 287 for(int i=0; i<count; i++) {
jayvpoddar 0:d2e6b3ce6988 288 Card card = hand[i];
jayvpoddar 0:d2e6b3ce6988 289 if(card._rank==1) {
jayvpoddar 0:d2e6b3ce6988 290 sum+=11;
jayvpoddar 0:d2e6b3ce6988 291 aces++;
jayvpoddar 0:d2e6b3ce6988 292 } else if(card._rank < 11) {
jayvpoddar 0:d2e6b3ce6988 293 sum+=card._rank;
jayvpoddar 0:d2e6b3ce6988 294 } else {
jayvpoddar 0:d2e6b3ce6988 295 sum+=10;
jayvpoddar 0:d2e6b3ce6988 296 }
jayvpoddar 0:d2e6b3ce6988 297 }
jayvpoddar 0:d2e6b3ce6988 298 if(sum>21) {
jayvpoddar 0:d2e6b3ce6988 299 if(aces>0) {
jayvpoddar 0:d2e6b3ce6988 300 if(isPlayer) {
jayvpoddar 0:d2e6b3ce6988 301 while(aces>0 && sum > 21) {
jayvpoddar 0:d2e6b3ce6988 302 sum-=10;
jayvpoddar 0:d2e6b3ce6988 303 aces--;
jayvpoddar 0:d2e6b3ce6988 304 }
jayvpoddar 0:d2e6b3ce6988 305 } else {
jayvpoddar 0:d2e6b3ce6988 306 if(sum>=27) {
jayvpoddar 0:d2e6b3ce6988 307 while(aces>0 && sum > 21) {
jayvpoddar 0:d2e6b3ce6988 308 sum-=10;
jayvpoddar 0:d2e6b3ce6988 309 aces--;
jayvpoddar 0:d2e6b3ce6988 310 }
jayvpoddar 0:d2e6b3ce6988 311 }
jayvpoddar 0:d2e6b3ce6988 312
jayvpoddar 0:d2e6b3ce6988 313 }
jayvpoddar 0:d2e6b3ce6988 314 }
jayvpoddar 0:d2e6b3ce6988 315 }
jayvpoddar 0:d2e6b3ce6988 316 return sum;
jayvpoddar 0:d2e6b3ce6988 317 }