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; } }