Working on more poker logic improvements
This commit is contained in:
@@ -140,7 +140,6 @@ void conversationQueueFlopTurnRiver() {
|
||||
uint8_t i, count;
|
||||
pokerplayer_t *player;
|
||||
|
||||
QUEUE_ITEM = QUEUE_BEGIN_BETTING;
|
||||
|
||||
switch(POKER_COMMUNITY_SIZE) {
|
||||
case 0:
|
||||
@@ -171,13 +170,25 @@ void conversationQueueFlopTurnRiver() {
|
||||
for(i = 0; i < count; i++) {
|
||||
POKER_COMMUNITY[POKER_COMMUNITY_SIZE++] = POKER_DECK[--POKER_DECK_SIZE];
|
||||
}
|
||||
|
||||
// Check how many players need to bet, if it's zero then all players are
|
||||
// either folded or all-in
|
||||
if(pokerGetRemainingBetterCount() == 0x00) {
|
||||
if(POKER_COMMUNITY_SIZE == POKER_COMMUNITY_SIZE_MAX) {
|
||||
QUEUE_ITEM = QUEUE_WINNER_DECIDE;
|
||||
} else {
|
||||
QUEUE_ITEM = QUEUE_FLOP;
|
||||
}
|
||||
} else {
|
||||
QUEUE_ITEM = QUEUE_BEGIN_BETTING;
|
||||
}
|
||||
}
|
||||
|
||||
void conversationQueueWinnerDecide() {
|
||||
pokerpot_t *pot;
|
||||
uint8_t i, j, countOfPotsWithChips, chipsEach;
|
||||
|
||||
QUEUE_ITEM = QUEUE_DEBUG;
|
||||
QUEUE_ITEM = QUEUE_BEGIN;
|
||||
|
||||
countOfPotsWithChips = 0;
|
||||
for(i = 0; i < POKER_POT_COUNT; i++) {
|
||||
@@ -214,6 +225,9 @@ void conversationQueueWinnerDecide() {
|
||||
|
||||
// TODO: Decide on a winner for real.
|
||||
conversationTextboxString(DEBUG_WINNER_DECIDED);
|
||||
|
||||
// New Round
|
||||
pokerNewRound();
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
20
src/main.c
20
src/main.c
@@ -146,12 +146,24 @@ void main() {
|
||||
tiles[5] = mainGetChar('F');
|
||||
}
|
||||
|
||||
if(j == POKER_PLAYER_BETTER) {
|
||||
tiles[6] = mainGetChar('<');
|
||||
} else {
|
||||
if((POKER_PLAYERS[j].state & POKER_PLAYER_STATE_HAS_BET_THIS_ROUND) == 0) {
|
||||
tiles[6] = COMMON_TILE_3;
|
||||
} else {
|
||||
tiles[6] = mainGetChar('H');
|
||||
}
|
||||
set_bkg_tiles(0x00, j, 7, 1, tiles);
|
||||
|
||||
if((POKER_PLAYERS[j].state & POKER_PLAYER_STATE_OUT) == 0) {
|
||||
tiles[7] = COMMON_TILE_3;
|
||||
} else {
|
||||
tiles[7] = mainGetChar('O');
|
||||
}
|
||||
|
||||
if(j == POKER_PLAYER_BETTER) {
|
||||
tiles[8] = mainGetChar('<');
|
||||
} else {
|
||||
tiles[8] = COMMON_TILE_3;
|
||||
}
|
||||
set_bkg_tiles(0x00, j, 9, 1, tiles);
|
||||
}
|
||||
|
||||
for(j = 0; j < POKER_COMMUNITY_SIZE_MAX; j++) {
|
||||
|
@@ -52,6 +52,7 @@ void pokerInit() {
|
||||
void pokerNewRound() {
|
||||
uint8_t i, j, k;
|
||||
uint8_t found;
|
||||
pokerplayer_t *player;
|
||||
|
||||
// Reset round state
|
||||
POKER_COMMUNITY_SIZE = 0;
|
||||
@@ -84,15 +85,23 @@ void pokerNewRound() {
|
||||
found = 0;
|
||||
POKER_PLAYER_DEALER++;
|
||||
|
||||
// Update players for the round.
|
||||
for(i = 0; i < POKER_PLAYER_COUNT_MAX; i++) {
|
||||
POKER_PLAYERS[i].state &= ~(
|
||||
player = POKER_PLAYERS + i;
|
||||
player->timesRaised = 0;
|
||||
player->state &= ~(
|
||||
POKER_PLAYER_STATE_FOLDED |
|
||||
POKER_PLAYER_STATE_HAS_BET_THIS_ROUND
|
||||
);
|
||||
POKER_PLAYERS[i].timesRaised = 0;
|
||||
|
||||
// Update out state.
|
||||
if(player->chips == 0) player->state |= POKER_PLAYER_STATE_OUT;
|
||||
|
||||
// Is the player out?
|
||||
if((player->state & POKER_PLAYER_STATE_OUT) != 0) continue;
|
||||
|
||||
// Have we found the dealer, small blind, and big blind players?
|
||||
if(found != 3 && (POKER_PLAYERS[i].state & POKER_PLAYER_STATE_OUT) == 0){
|
||||
if(found != 3) {
|
||||
k = (POKER_PLAYER_DEALER + i) % POKER_PLAYER_COUNT_MAX;
|
||||
|
||||
if(found == 0) {// Have we found the dealer?
|
||||
@@ -109,7 +118,7 @@ void pokerNewRound() {
|
||||
|
||||
// Deal two cards to the player.
|
||||
for(j = 0; j < POKER_PLAYER_HAND_SIZE_MAX; j++) {
|
||||
POKER_PLAYERS[i].hand[j] = POKER_DECK[--POKER_DECK_SIZE];
|
||||
player->hand[j] = POKER_DECK[--POKER_DECK_SIZE];
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user