Poker Algorithm.

D

daniel.kaner

Does anyone here know the algorithm for texas hold em which is a poker
game? The algorithm should include the winning conditions for the
game, like straight, flush, pair, etc. Thank you so much!

Code:

#include <iostream>
#include <ctime>
#include <cmath>
#include <windows.h>
#include <cstdlib>

using namespace std;

int compMONEYONE, compMONEYTWO, compMONEYTHREE, compMONEYFINAL;
int compMONEY = 1000;
int playerMONEY = 1000;
int compBETONE, compBETTWO, compBETTHREE, compBETFINAL;
int placeBETONE, placeBETTWO, placeBETTHREE, placeBETFINAL;
int card[7];
int suitC[7];
int rankC[7];

const char* rank[] = {"Ace", "Two", "Three", "Four", "Five", "Six",
"Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King"};
const char* suit[] = {"Hearts!", "Spades!", "Diamonds!",
"Shamrock!"};

int numPlayers;
// int random;

char choice;
char PlayAgain;

void preGame()
{
srand(GetTickCount());

//loop so that all the cards are different, if one is the same
as another, the loop restarts
do
{
//random number from 1-52 which is a card deck
card[0] = ((rand() % 52) + 1);
//cout << card[0] << endl;
card[1] = ((rand() % 52) + 1);
card[2] = ((rand() % 52) + 1);
card[3] = ((rand() % 52) + 1);
card[4] = ((rand() % 52) + 1);
card[5] = ((rand() % 52) + 1);
card[6] = ((rand() % 52) + 1);
}while(card[0] == card[1] || card[0] == card[2] || card[0] ==
card[3] || card[0] == card[4] || card[0] == card[5] || card[0] ==
card[6] || card[1] == card[2] || card[1] == card[3] || card[1] ==
card[4] || card[1] == card[5] || card[1] == card[6] || card[2] ==
card[3] || card[2] == card[4] || card[2] == card[5] || card[2] ==
card[6] || card[3] == card[4] || card[3] == card[5] || card[3] ==
card[6] || card[4] == card[5] || card[4] == card[6] || card[5] ==
card[6]);

//ranks - ace, one, two, three, four, five, six, seven, eight,
nine, ten, jack, queen, king
//remainder of number which then goes through the console testing
loop
//ranks are all different or loop restarts

rankC[0] = (card[0] % 13);
//cout << rank[0] << endl;
rankC[1] = (card[1] % 13);
//cout << rank[1] << endl;
rankC[2] = (card[2] % 13);
//cout << rank[2] << endl;
rankC[3] = (card[3] % 13);
//cout << rank[3] << endl;
rankC[4] = (card[4] % 13);
//cout << rank[4] << endl;
rankC[5] = (card[5] % 13);
//cout << rank[5] << endl;
rankC[6] = (card[6] % 13);
//cout << rank[6] << endl;

//4 suits - hearts, spades, shamrocks, diamonds
suitC[0] = (rand() % 4);
suitC[1] = (rand() % 4);
suitC[2] = (rand() % 4);
suitC[3] = (rand() % 4);
suitC[4] = (rand() % 4);
suitC[5] = (rand() % 4);
suitC[6] = (rand() % 4);

/* if(numPlayers > 5 || numPlayers < 1)
{
cout << "Please enter the number of players that you would
like to include in this game(no more than 5): ";
cin >> numPlayers;
}*/
}

void betGame()
{

cout << "Player Money Total: $" << playerMONEY << endl;
cout << "Computer Money Total: $" << compMONEY << endl;
// random = (rand() % 1);

// if(random == 0)
// {
cout << "Small blind: $25 put up by the computer." << endl;
cout << "Big blind: $50 put up by the player." << endl;
cout << "Player Money Total: $" << playerMONEY - 50 << endl;
cout << "Computer Money Total: $" << compMONEY - 25 << endl;
compMONEYONE = compMONEY - 25;
/* }
else
{
cout << "Small blind: $25 put up by the player." << endl;
cout << "Big blind: $50 put up by the computer." << endl;
cout << "Player Money Total: $" << playerMONEY - 25 <<
endl;
cout << "Computer Money Total: $" << compMONEY - 50 <<
endl;
}*/

cout << "Player's First Card: " << rank[rankC[0]] << " of " <<
suit[suitC[0]] << endl;

cout << "Player's Second Card: " << rank[rankC[1]] << " of " <<
suit[suitC[1]] << endl;

//SECOND YOU FLIP 1 CARD AND YOU SEE YOUR CARDS AND 1 CARD -- BET #2

cout << "How much would you like to bet?";
cin >> placeBETONE;
compBETONE = (rand() % compMONEYONE);
cout << "Computer bet: " << compBETONE << endl;
cout << "Player Money Total: $" << playerMONEY - 50 -
placeBETONE << endl;
cout << "Computer Money Total: $" << compMONEY - 25 -
compBETONE << endl;
compMONEYTWO = compMONEY - 25 - compBETONE;


cout << "Flop First Card: " << rank[rankC[2]] << " of " <<
suit[suitC[2]] << endl;

cout << "Flop Second Card: " << rank[rankC[3]] << " of "
<< suit[suitC[3]] << endl;

cout << "Flop Third Card: " << rank[rankC[4]] << " of " <<
suit[suitC[4]] << endl;


placeBETTWO = -1;
while(placeBETTWO < 0 || placeBETTWO > 25)
{
cout << "How much would you like to bet?";
cin >> placeBETTWO;
compBETTWO = (rand() % compMONEYTWO);
cout << "Computer bet: " << compBETTWO << endl;
cout << "Player Money Total: $" << playerMONEY - 50 -
placeBETONE - placeBETTWO << endl;
cout << "Computer Money Total: $" << compMONEY - 25 -
compBETONE - compBETTWO << endl;
compMONEYTHREE = compMONEY - 25 - compBETONE - compBETTWO;

cout << "Turn Card: " << rank[rankC[5]] << " of " <<
suit[suitC[5]] << endl;
}

placeBETTHREE = -1;
while(placeBETTHREE < 0 || placeBETTHREE > 25)
{
cout << "How much would you like to bet?";
cin >> placeBETTHREE;
compBETTHREE = (rand() % compMONEYTHREE);
cout << "Computer bet: " << compBETTHREE << endl;
cout << "Player Money Total: $" << playerMONEY - 50 -
placeBETONE - placeBETTWO - placeBETTHREE << endl;
cout << "Computer Money Total: $" << compMONEY - 25 -
compBETONE - compBETTWO - compBETTHREE << endl;
compMONEYFINAL = compMONEY - 25 - compBETONE - compBETTWO
- compBETTHREE;

cout << "River Card: " << rank[rankC[6]] << " of " <<
suit[suitC[6]] << endl;;
}

placeBETFINAL = -1;
while(placeBETFINAL < 0 || placeBETFINAL > 25)
{
cout << "How much would you like to bet?";
cin >> placeBETFINAL;
compBETFINAL = (rand() % compMONEYFINAL);
cout << "Computer bet: " << compBETFINAL << endl;
cout << "Player Money Total: $" << playerMONEY - 50 -
placeBETONE - placeBETTWO - placeBETTHREE - placeBETFINAL << endl;
cout << "Computer Money Total: $" << compMONEY - 25 -
compBETONE - compBETTWO - compBETTHREE - compBETFINAL << endl;
}

//WINNING CONDITIONS

cout << "Do You Want To Play Again: " << endl;
cin >> PlayAgain;
}

int main()
{
do
{
cout << "Welcome to Texas Hold 'Em!" << endl;

preGame();
betGame();

}while(PlayAgain == 'y');

}
 
C

Christopher

Does anyone here know the algorithm for texas hold em which is a poker
game? The algorithm should include the winning conditions for the
game, like straight, flush, pair, etc. Thank you so much!

Do your own homework please.
Can you explain how to programatically check for the differant poker
hands?
Can you explain how to programatically rank those hands and check a
set for highest rank?

<snip>
        //loop so that all the cards are different, if one is the same
as another, the loop restarts
        do
        {
            //random number from 1-52 which is a card deck
            card[0] = ((rand() % 52) + 1);
            //cout << card[0] << endl;
            card[1] = ((rand() % 52) + 1);
            card[2] = ((rand() % 52) + 1);
            card[3] = ((rand() % 52) + 1);
            card[4] = ((rand() % 52) + 1);
            card[5] = ((rand() % 52) + 1);
            card[6] = ((rand() % 52) + 1);
        }while(card[0] == card[1] || card[0] == card[2] || card[0] ==
card[3] || card[0] == card[4] || card[0] == card[5] || card[0] ==
card[6] || card[1] == card[2] || card[1] == card[3] || card[1] ==
card[4] || card[1] == card[5] || card[1] == card[6] || card[2] ==
card[3] || card[2] == card[4] || card[2] == card[5] || card[2] ==
card[6] || card[3] == card[4] || card[3] == card[5] || card[3] ==
card[6] || card[4] == card[5] || card[4] == card[6] || card[5] ==
card[6]);

That is rather a poor way of doing things.
Why not make a class that represents a card - having its value and
suit?
Why not make a class that represents a deck that you can insert, draw,
and shuffle from?
Then you can draw from the deck, realistically, instead of reolling
random numbers over and over every time a card is already taken.
Your randomness here also takes away from the real life behavior of a
deck of cards.

You can also make some functions that take any number of these cards
as a param, and evaluates thier "poker hand worth", or compares two
sets of cards.

You can then make some sets that represents each players hand and the
common cards.


<snip the rest>
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,756
Messages
2,569,540
Members
45,024
Latest member
ARDU_PROgrammER

Latest Threads

Top