Playertotal closes file fclose fclose return exit
//playHand() function
void playHand(FILE* cards, int* dealerWin, int* ranOut) {
int card_points, player_points = 0, dealer_points = 0;
//player gets first card
card_points = getCard(cards, player_points);
player_points += card_points;
printf("Player plays first card. Player score:%d\n",
player_points);
//dealer gets first card
card_points = getCard(cards, dealer_points);
dealer_points += card_points;
printf("Dealer plays first card. Dealer score:%d\n",
dealer_points);
//player gets second card
card_points = getCard(cards, player_points);
player_points += card_points;
printf("Player plays second card. Player score:%d\n",
player_points);
//dealer gets second card
card_points = getCard(cards, dealer_points);
dealer_points += card_points;
printf("Dealer plays second card. Dealer score:%d\n",
dealer_points);
//check if blackjack or not
if (player_points == 21) {
printf("Player has blackjack. Player score:%d\n",
player_points);
printf("Dealer looses. Dealer score:%d\n", dealer_points);
*dealerWin = 0;
return;
}
if (dealer_points == 21) {
printf("Dealer has blackjack. Dealer score:%d\n",
dealer_points);
printf("Player looses. Player score:%d\n", player_points);
*dealerWin = 1;
return;
}
//player plays for more cards
while ((card_points = getCard(cards, player_points)) == 0) {
if (card_points == 0) //ran out of cards
{
printf("Ran out of cards. Hand ends.\n");
*ranOut = 1;
break;
}
if ((player_points + card_points) >= 16) //refuse card player
points 16 or more
{
printf("Player refuses more cards. Player score:%d\n",
player_points);
break;
} else if ((player_points + card_points) > 21) //check if
dealer wins
{
printf("Player looses. Player score:%d\n",
player_points);
printf("Dealer wins. Dealer score:%d\n",
dealer_points);
*dealerWin = 1; //dealer wins
return; //ends the hand
} else {
player_points += card_points;
printf("Player gets a card. Player score:%d\n",
player_points);
}
}
//dealer plays for more cards if player points are less than
21.
if (player_points < 21) {
while ((card_points = getCard(cards, dealer_points)) == 0)
{
if (card_points == 0) //ran out of cards
{
printf("Ran out of cards. Hand ends.\n");
*ranOut = 1;
break;
}
if ((dealer_points + card_points) >= 17) //refuse card
dealer points 16 or more
{
printf("Dealer refuses more cards. Dealer
score:%d\n",
dealer_points);
break;
} else if ((dealer_points + card_points) > 21) //check if
player wins
{
printf("Dealer looses. Dealer score:%d\n",
dealer_points);
printf("Player wins. Player score:%d\n",
player_points);
*dealerWin = 0; //player wins
return; //ends the hand
} else {
dealer_points += card_points;
printf("Dealer gets a card. Dealer score:%d\n",
dealer_points);
}
}
}
//check if ran out of cards
if (*ranOut == 1) {
//check if there is a tie
if (player_points == dealer_points)
*dealerWin = 1; //in case of a tie, dealer wins
}
}