#include #include int chips,bet; int a, i, j, k, n, m, swapped; long long value, playerscore, computerscore; char *numbers[]={ "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "jack", "queen", "king", "ace" }; char *suits[]={ "hearts", "clubs", "diamonds", "spades" }; chips=5; struct card { int suit; int number; }; struct card player[3]; struct card computer[3]; struct card cardone; struct card cardtwo; struct card cardthree; int playerdeal() { while (a==0) { for (i=0; i<3; i++) { n=rand(); player[i].suit=(n%4); m=rand(); player[i].number=(m%13); } while ((player[0].suit==player[1].suit && player[0].number==player[1].number) || (player[0].suit==player[2].suit && player[0].number==player[2].number) || (player[2].suit==player[1].suit && player[2].number==player[1].number)) { for (i=0; i<3; i++) { n=rand(); player[i].suit=(n%4); m=rand(); player[i].number=(m%13); } } if (player[0].number<=player[1].number && player[1].number<=player[2].number) { break; } } } int computerdeal() { while (a==0) { for (i=0; i<3; i++) { n=rand(); computer[i].suit=(n%4); m=rand(); computer[i].number=(m%13); } while ((computer[0].suit==computer[1].suit && computer[0].number==computer[1].number) || (computer[0].suit==computer[2].suit && computer[0].number==computer[2].number) || (computer[2].suit==computer[1].suit && computer[2].number==computer[1].number)) { for (i=0; i<3; i++) { n=rand(); computer[i].suit=(n%4); m=rand(); computer[i].number=(m%13); } } if (computer[0].number<=computer[1].number && computer[1].number<=computer[2].number) { break; } } } int straightflush () { value=0; if (cardone.suit==cardtwo.suit && cardtwo.suit==cardthree.suit) { if (cardone.number+1==cardtwo.number && cardone.number+2==cardthree.number) { value=(cardthree.number+1)*pow(13,10); } if (cardone.number+1==0 && cardtwo.number==1 && cardthree.number==12) { value=(cardtwo.number+1)*pow(13,10); } } return value; } int threeofakind () { value=0; if (cardone.number==cardtwo.number && cardtwo.number==cardthree.number) { value=(cardone.number+1)*pow(13,9); } return value; } int straight () { value=0; if (cardone.number+1==cardtwo.number && cardone.number+2==cardthree.number) { value=(cardthree.number+1)*pow(13,8); } if (cardone.number+1==0 && cardtwo.number==1 && cardthree.number==12) { value=(cardtwo.number+1)*pow(13,8); } return value; } int flush () { value=0; if (cardone.suit==cardtwo.suit && cardtwo.suit==cardthree.suit) { value=(cardthree.number+1)*pow(13,7)+(cardtwo.number+1)*pow(13,6)+(cardone.number+1)*pow(13,5); } return value; } int pair () { value=0; if (cardone.number==cardtwo.number) { value=(cardone.number+1)*pow(13,4)+(cardthree.number+1)*pow(13,3); } if (cardtwo.number==cardthree.number) { value=(cardtwo.number+1)*pow(13,4)+(cardone.number+1)*pow(13,3); } if (cardone.number==cardthree.number) { value=(cardone.number+1)*pow(13,4)+(cardtwo.number+1)*pow(13,3); } return value; } int highcard () { value=0; value=(cardthree.number+1)*pow(13,2)+(cardtwo.number+1)*pow(13,1)+(cardone.number+1); return value; } int playerevaluate(struct card first, struct card second, struct card third) { cardone=player[0]; cardtwo=player[1]; cardthree=player[2]; playerscore=straightflush()+threeofakind()+straight()+flush()+pair()+highcard(); return playerscore; } int computerevaluate(struct card first, struct card second, struct card third) { cardone=computer[0]; cardtwo=computer[1]; cardthree=computer[2]; computerscore=straightflush()+threeofakind()+straight()+flush()+pair()+highcard(); return computerscore; } int main () { srand(time(NULL)); a=0; printf("Welcome to DILLIGAF poker. You have %d chips and will be charged one chip to play the game, leaving you with %d chips.\n", chips, chips-1); chips=chips-1; playerdeal(); playerscore=playerevaluate(player[0],player[1],player[2]); printf("Your hand is as follows:\n"); for (i=0; i<3; i++) { printf("Card %d is a %s of %s.\n", i+1, numbers[player[i].number], suits[player[i].suit]); } printf("The score for your hand is %ll.\n",playerscore); printf("How many chips would you like to bet?\n"); scanf("%d", &bet); chips=chips-bet; computerdeal(); computerscore=computerevaluate(computer[0],computer[1],computer[2]); printf("The computer's hand is as follows:\n"); for (i=0; i<3; i++) { printf("Card %d is a %s of %s.\n", i+1, numbers[computer[i].number], suits[computer[i].suit]); } printf("The score for the computer's hand is %ll.\n",computerscore); if (playerscore>computerscore && playerscore>pow(13,10)) { chips=chips+(bet*5); printf("You won with a straight flush. You now have %d chips. Congratulations.\n",chips); } else if (playerscore>computerscore && playerscore>pow(13,9)) { chips=chips+(bet*4); printf("You won with three of a kind. You now have %d chips. Congratulations.\n",chips); } else if (playerscore>computerscore) { chips=chips+(bet*2); printf("You won. You now have %d chips. Congratulations.\n",chips); } else if (playerscore==computerscore) { chips=chips+bet; printf("You tied the computer. You get back what you bet, so you now have %d chip(s).\n",chips); } else { printf("You lost. You have %d chips.\n",chips); } }