/** Posts blinds to the table's current small and big blind. */ public void blinds() { int smallBlind = settings.getSmallBlind(); PokerPlayer player = getSmallBlind(); player.removeChips(smallBlind); player.raiseBet(smallBlind); pot.addChips(smallBlind); player = getBigBlind(); int bigBlind = settings.getBigBlind(); player.removeChips(bigBlind); player.raiseBet(bigBlind); pot.addChips(bigBlind); pot.raiseBet(bigBlind); }
/** Rotates dealer and blinds, eliminates players, and prepares table for next hand. */ public void handEnd() { // Begin end hand phase phase = PokerPhase.HAND_END; // Eliminate players with no money for (PokerPlayer player : new ArrayList<>(getPlayers())) { if (player.getChips() == 0) { removePlayer(player); } } int playersLeft = getPlayers().size(); if (playersLeft > 0) { // Rotate dealer, small blind, and big blind getPlayers().add(0, getPlayers().remove(getPlayerCount() - 1)); // Eliminate players that can't afford blind while (playersLeft > 1) { PokerPlayer smallBlind = getSmallBlind(); if (smallBlind.getChips() < settings.getSmallBlind()) { removePlayer(smallBlind); playersLeft--; continue; } break; } while (playersLeft > 2) { PokerPlayer bigBlind = getBigBlind(); if (bigBlind.getChips() < settings.getBigBlind()) { removePlayer(bigBlind); playersLeft--; continue; } break; } } // Reset deck, open table, and wait to start next game deck.reset(); tableCards.clear(); for (PokerPlayer player : getPlayers()) { player.nextHand(); } setOpen(true); phase = PokerPhase.STANDBY; }
@Override public void removePlayer(PokerPlayer player) { super.removePlayer(player); if (pot != null) { pot.removePlayer(player); } if (getPlayerCount() < settings.getMinPlayers() && !(phase == PokerPhase.STANDBY || phase == PokerPhase.HAND_END)) { stop(); } else { switch (phase) { case PREFLOP: case FLOP: case TURN: case RIVER: betting(); } } }