Random Code
// Matthew E. Brundage
// March 20, 2000
// C++ 5.13 (poker, part II)
#include <iomanip.h>
#include <stdlib.h>
#include <time.h>
void shuffle(int[][13]);
void deal(int, const int[][13], const char *[], const char *[]);
void printtotals(const int[][13], const char *[], const char *[], int, int[]);
void determinehands(int, const int[][13], const char *[], const char *[], int[2]);
int main()
{
const char *suit[4] = {"Clubs", "Diamonds", "Hearts", "Spades"};
const char *face[13] = {"Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King", "Ace"};
int deck[4][13] = {0}, whowins[2] = {0}, highcard[2] = {0}, count = 0, anykey;
cout << "\nFive-card poker hand #1 is:\n";
srand(time(0));
shuffle(deck);
deal(count, deck, face, suit);
printtotals(deck, face, suit, count, highcard);
determinehands(count, deck, face, suit, whowins);
cout << "Press any key to deal the second hand.\n";
cin >> anykey;
cout << "\nFive-card poker hand #2 is:\n";
count = 1;
deal(count, deck, face, suit);
printtotals(deck, face, suit, count, highcard);
determinehands(count, deck, face, suit, whowins);
cout << "Score: " << whowins[0] << " to " << whowins[1] << ".\n";
if (whowins[0] > whowins[1])
cout << "Hand 1 wins.\n";
else if (whowins[0] < whowins[1])
cout << "Hand 2 wins.\n";
else if (highcard[0] > highcard[1])
cout << "Hand 1 wins. (high card)\n";
else if (highcard[0] < highcard[1])
cout << "Hand 2 wins. (high card)\n";
else
cout << "It's a tie. I suggest playing again.\n\n";
return 0;
}
void shuffle(int wDeck[][13])
{
int row, column;
for(int card = 1; card <= 52; card++)
{ do
{ row = rand() % 4;
column = rand() % 13;
}
while(wDeck[row][column] != 0);
wDeck[row][column] = card;
}
}
void deal(int count, const int wDeck[][13], const char *wFace[], const char *wSuit[])
{
int oneorsix = 1, fiveorten = 5;
if (count == 1)
{ oneorsix = 6;
fiveorten = 10;
}
for(int card = oneorsix; card <= fiveorten; card++)
for(int row = 0; row <= 3; row++)
for(int column = 0; column <= 12; column++)
if(wDeck[row][column] == card)
cout << setw(6) << setiosflags(ios::left)
<< wFace[column] << " of " << setw(8)
<< setiosflags(ios::left) << wSuit[row] << "\n";
cout << "\n";
}
void printtotals (const int wDeck[][13], const char *wFace[], const char *wSuit[], int count, int highcard[])
{
int oneorsix = 1, fiveorten = 5;
if (count == 1)
{ oneorsix = 6;
fiveorten = 10;
}
int rowfrequency[4] = {0}, columnfrequency[13] = {0};
for(int card = oneorsix; card <= fiveorten; card++)
for(int row = 0; row <= 3; row++)
for(int column = 0; column <= 12; column++)
if(wDeck[row][column] == card)
{ rowfrequency[row]++;
columnfrequency[column]++;
}
for(int rowcount = 0; rowcount <= 3; rowcount++)
if (rowfrequency[rowcount] != 0)
cout << rowfrequency[rowcount] << " " << wSuit[rowcount] << "\n";
cout << "\n";
for(int columncount = 0; columncount <=12; columncount++)
if (columnfrequency[columncount] != 0)
{ cout << columnfrequency[columncount] << " " << wFace[columncount] <<"\n";
if (count == 0)
highcard[0] = columncount;
else
highcard[1] = columncount;
}
cout << "\n";
}
void determinehands (int count, const int wDeck[][13], const char *wFace[], const char *wSuit[], int whowins[2])
{
int oneorsix = 1, fiveorten = 5;
if (count == 1)
{ oneorsix = 6;
fiveorten = 10;
}
int rowfrequency[4] = {0}, columnfrequency[13] = {0}, paircount = 0, pair1, pair2;;
for(int card = oneorsix; card <= fiveorten; card++)
for(int row = 0; row <= 3; row++)
for(int column = 0; column <= 12; column++)
if(wDeck[row][column] == card)
{ rowfrequency[row]++;
columnfrequency[column]++;
}
for(int rowcount = 0; rowcount <= 3; rowcount++)
if (rowfrequency[rowcount] == 5)
{ cout << "BY CRACKY, YOU'VE GOT A FLUSH!\n";
whowins[count] = 6;
}
else if (rowfrequency[rowcount] == 4)
cout << "Cool! You've got four of one suit!\n";
for (int column = 0; column <= 9; column++)
if ((columnfrequency[column] == 1) && (columnfrequency[column+1] == 1) && (columnfrequency[column+2] == 1) && (columnfrequency[column+3] == 1) && (columnfrequency[column+4] == 1))
{ cout << "YOU JUST GOT A STRAIGHT!\n";
whowins[count] = 4;
}
for(column = 0; column <= 12; column++)
if (columnfrequency[column] == 4)
{ cout << "Wow! YOU'VE GOT FOUR OF A KIND! (of " << wFace[column] << "s)\n";
whowins[count] = 5;
}
else if (columnfrequency[column] == 3)
{ cout << "Wow! You've got three of a kind! (of " << wFace[column] << "s)\n";
whowins[count] = 3;
}
else if (columnfrequency[column] == 2)
{ if (paircount == 0)
pair1 = column;
else
pair2 = column;
++paircount;
}
if (paircount == 1)
{ cout << "You've got a pair! (of " << wFace[pair1] << "s)\n";
whowins[count] = 1;
}
if (paircount == 2)
{ cout << "Wow! You've got two pairs! (of " << wFace[pair1] << "s and " << wFace[pair2] << "s)\n";
whowins[count] = 2;
}
}