Working on more poker logic improvements
This commit is contained in:
@@ -140,7 +140,6 @@ void conversationQueueFlopTurnRiver() {
|
|||||||
uint8_t i, count;
|
uint8_t i, count;
|
||||||
pokerplayer_t *player;
|
pokerplayer_t *player;
|
||||||
|
|
||||||
QUEUE_ITEM = QUEUE_BEGIN_BETTING;
|
|
||||||
|
|
||||||
switch(POKER_COMMUNITY_SIZE) {
|
switch(POKER_COMMUNITY_SIZE) {
|
||||||
case 0:
|
case 0:
|
||||||
@@ -171,13 +170,25 @@ void conversationQueueFlopTurnRiver() {
|
|||||||
for(i = 0; i < count; i++) {
|
for(i = 0; i < count; i++) {
|
||||||
POKER_COMMUNITY[POKER_COMMUNITY_SIZE++] = POKER_DECK[--POKER_DECK_SIZE];
|
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() {
|
void conversationQueueWinnerDecide() {
|
||||||
pokerpot_t *pot;
|
pokerpot_t *pot;
|
||||||
uint8_t i, j, countOfPotsWithChips, chipsEach;
|
uint8_t i, j, countOfPotsWithChips, chipsEach;
|
||||||
|
|
||||||
QUEUE_ITEM = QUEUE_DEBUG;
|
QUEUE_ITEM = QUEUE_BEGIN;
|
||||||
|
|
||||||
countOfPotsWithChips = 0;
|
countOfPotsWithChips = 0;
|
||||||
for(i = 0; i < POKER_POT_COUNT; i++) {
|
for(i = 0; i < POKER_POT_COUNT; i++) {
|
||||||
@@ -214,6 +225,9 @@ void conversationQueueWinnerDecide() {
|
|||||||
|
|
||||||
// TODO: Decide on a winner for real.
|
// TODO: Decide on a winner for real.
|
||||||
conversationTextboxString(DEBUG_WINNER_DECIDED);
|
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');
|
tiles[5] = mainGetChar('F');
|
||||||
}
|
}
|
||||||
|
|
||||||
if(j == POKER_PLAYER_BETTER) {
|
if((POKER_PLAYERS[j].state & POKER_PLAYER_STATE_HAS_BET_THIS_ROUND) == 0) {
|
||||||
tiles[6] = mainGetChar('<');
|
|
||||||
} else {
|
|
||||||
tiles[6] = COMMON_TILE_3;
|
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++) {
|
for(j = 0; j < POKER_COMMUNITY_SIZE_MAX; j++) {
|
||||||
|
@@ -52,6 +52,7 @@ void pokerInit() {
|
|||||||
void pokerNewRound() {
|
void pokerNewRound() {
|
||||||
uint8_t i, j, k;
|
uint8_t i, j, k;
|
||||||
uint8_t found;
|
uint8_t found;
|
||||||
|
pokerplayer_t *player;
|
||||||
|
|
||||||
// Reset round state
|
// Reset round state
|
||||||
POKER_COMMUNITY_SIZE = 0;
|
POKER_COMMUNITY_SIZE = 0;
|
||||||
@@ -84,15 +85,23 @@ void pokerNewRound() {
|
|||||||
found = 0;
|
found = 0;
|
||||||
POKER_PLAYER_DEALER++;
|
POKER_PLAYER_DEALER++;
|
||||||
|
|
||||||
|
// Update players for the round.
|
||||||
for(i = 0; i < POKER_PLAYER_COUNT_MAX; i++) {
|
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_FOLDED |
|
||||||
POKER_PLAYER_STATE_HAS_BET_THIS_ROUND
|
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?
|
// 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;
|
k = (POKER_PLAYER_DEALER + i) % POKER_PLAYER_COUNT_MAX;
|
||||||
|
|
||||||
if(found == 0) {// Have we found the dealer?
|
if(found == 0) {// Have we found the dealer?
|
||||||
@@ -109,7 +118,7 @@ void pokerNewRound() {
|
|||||||
|
|
||||||
// Deal two cards to the player.
|
// Deal two cards to the player.
|
||||||
for(j = 0; j < POKER_PLAYER_HAND_SIZE_MAX; j++) {
|
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