Ho alcune classi finora.
- Mano memorizza informazioni come SB, BB, ante, raccolta di Giocatori
- HandState eredita dalla classe Hand. ha membri come fase {POSTING BLINDS, PREFLOP, FLOP, TURN, RIVER, SHOWDOWN}, pot. Considero ogni azione in una mano di poker come una mano. Giocatori ante ante (se presenti), small blind e big blind blinds, il primo giocatore ad agire (UTG) chiama il blind, il secondo giocatore (UTG + 1) alza, ecc ...
- Player membri: nome, posizione, elenco di azioni finora, stack, ecc.
- Azione membri: tipo {FOLD, CALL, RAISE, RERAISE}, importo
Il programma riceve come input i bui, i giocatori, quale giocatore agire. Poiché l'input che ottengo è string (è un programma di console), devo compilare il root handState.
Dopo che ho il root handState, posso costruire un gameTree dove ogni nodo è un handState. ad esempio:.
stacks = "1000,2000,2300,1400,230";
actions = "200";
playerToAct = 2;
BB = 400;
SB = 200;
function makeRoot()
{
stacks = makeArray(stacks)
for(i=0; i < stacks.size; i++)
{
player = new Player;
player.position = "UTG"
if (i > 0)
player.position += i;
if (i == stacks.size-2)
{
player.position = "SB";
player.bet(SB);
}
if (i == stacks.size-1)
{
player.position = "BB";
player.bet(BB);
}
}
}
Il mio problema è che Player e HandState non hanno alcuna connessione. Cosa succede se il giocatore non ha abbastanza chip per pagare BigBlind (230 < 400)? Sai Baba ha abbastanza chips, ma se punta 200, il piatto di HandState non lo saprà? Dovrei tenere traccia di entrambe le classi?
//HandState
player.bet(200);
this.pot += 200;
//Player
bet(amount)
{
this.stack -= amount;
this.actions.push(new Action(amount, "BET"));
}
Spero che ci sia un programmatore esperto con alcune conoscenze del poker per raccontare un'opinione, criticare il mio approccio.