Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

In C code: Write a program that allows a user to play 5-Card-Draw Poker against

ID: 3821468 • Letter: I

Question

In C code:

Write a program that allows a user to play 5-Card-Draw Poker against the computer. Start with the following example code supplied by Deitel & Deitel (example code). This will help you get started with the game of Poker. Please read this site to team the rules of Poker http://en.wikipedia.org/wiki/5.card.draw. Complete the following step and you will have a working Poker game III Adapted from Deitel & Deitel's C. How to Program (6^th Edition): (1) In order to complete the game of 5-card-draw poker, you should complete the following functions: (a) Modify the card dealing function provided in the example code so that a five-card poker hand is dealt. (b) Write a function to determine if the hand contains a pair. (c) Write a function to determine if the hand contains two pairs. (d) Write a function to determine if the hand contains three of a kind (e.g. three jacks). (e) Write a function to determine if the hand contains four of a kind (e.g. four aces). (f) Write a function to determine if the hand contains a flush (i.e. all five cards of the same suit). (g) Write a function to determine if the hand contains a straight (i.e. five cards of consecutive face values). (2) Use the functions developed in (1) to deal two five card poker hands, evaluate each hand, and determine which is the better hand. (3) Simulate the dealer. The dealer's five-card hand is dealt "face down" so the player cannot see it. The program should then evaluate the dealer's hand, and based on the quality of the hand, the dealer should draw one, two, or three more cards to replace the corresponding number of unneeded cards in the original hand. The program should then re-evaluate the dealer's hand. (4) Make the program handle the dealer's five-card hand automatically. The player should be allowed to decide which cards of the player's hand to replace. The program should then evaluate both hands and determine who wins. Now use the program to play 10 games against the computer. You should be able to test and modify or refine your poker game based on these results!

Explanation / Answer


#include <stdio.h>
#include <stdlib.h>
#include <time.h>

typedef struct card
{
int card_number;
int face_index;
int suit_index;
} Card;

void shuffle (int wDeck[4][13]);
void deal (const int wDeck[][13], const char *wFace[], const char *wSuit[], Card p_hand[5]);
int is_pair (int num_faces[13]);

int main (void)
{
const char *suit[4] = {"Hearts", "Diamonds", "Clubs", "Spades"};

const char *face[13] = {"Ace", "Deuce", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King"};

int deck[4][13] = {0}, count = 0;

Card p1_hand[5] = {{0, 0, 0}};

int num_suits [4] = {0};
int num_faces[13] = {0};

srand ((unsigned) time (NULL)); /* seed random-number generator */

shuffle (deck);
deal (deck, face, suit, p1_hand);

printf ("card number: %d ", p1_hand[0].card_number);
printf ("suit number: %d ", p1_hand[0].suit_index);
printf ("face number: %d ", p1_hand[0].face_index);

for (count = 0; count < 5; count++)
{

num_suits[p1_hand[count].suit_index]++;
num_faces[p1_hand[count].face_index]++;

}

for (count = 0; count < 4; count++) // print out suits of cards


{


printf ("num_suits[%d]: %d ", count, num_suits[count]);


}

for (count = 0; count < 13; count++) // print out faces of cards


{


printf ("num_faces[%d]: %d ", count, num_faces[count]);


}

printf ("Status: %d ", is_pair (num_faces));

return 0;


}

void shuffle (int wDeck[][13])
{


int row = 0; /* row number */
int column = 0; /*column number */
int card = 0; /* card counter */

for (card = 1; card <= 52; card++)
{

do
{
row = rand () % 4;
column = rand () % 13;
} while (wDeck[row][column] != 0);

wDeck[row][column] = card;
}
}

void deal (const int wDeck[][13], const char *wFace[], const char *wSuit[], Card p_hand[5])
{
int row = 0; /* row number */
int column = 0; /*column number */
int card = 0; /* card counter */
int index = 0;

for (card = 1; card <= 5; card++, index++)
{
/
for (row = 0; row <= 3; row++)
{
for (column = 0; column <= 12; column++)
{
/* if slot contains current card, display card */
if (wDeck[row][column] == card)
{
p_hand[index].card_number = card;
p_hand[index].face_index = column;
p_hand[index].suit_index = row;

}
}
}
}
}

int is_pair (int num_faces[13])
{
int status = 0; // no pairs
int index = 0;

for (index = 0; index < 13; index++)
{
if (num_faces[index] == 2)
{
status = 1;
}
}

return status;

}