private Action actPostFlopNotButton() { // acts first if (eL(3)) { return checkFold(); } else if (eL(5)) { if (dory.hasOpponentRaisedThisStreet()) { if (dory.lastOpponentRaiseSize() > pV(1)) return fold(); else return call(); } else { return putPotPercentage(equity, eVals[3], eVals[5], pVals[1], pVals[2]); } } else if (eL(7)) { if (dory.hasOpponentRaisedThisStreet()) { return call(); } else { return putPotPercentage(equity, eVals[5], eVals[7], pVals[2], pVals[4]); } } else { return putAllinMinusOne(); } }
private Action actPreFlopButton() { // small blind acts first if (eL(0)) { if (dory.hasOpponentRaisedThisStreet()) { // opponent raised if (dory.lastOpponentRaiseSize() > sVals[0]) return fold(); else // he raised an amount less than sVals[0] return call(); } else { return call(); } } else if (eL(2)) { if (dory.hasOpponentRaisedThisStreet()) { if (dory.lastOpponentRaiseSize() > sVals[1]) return fold(); else // he raised an amount less than sVals[1] return call(); } else return putLin(equity, eVals[0], eVals[2], sVals[1], sVals[2]); } else if (eL(4)) { if (dory.hasOpponentRaisedThisStreet()) { if (dory.hasOpponentRaisedTwiceThisStreet()) return call(); else return putMin(); } else return putLin(equity, eVals[2], eVals[4], sVals[2], sVals[3]); } else if (eL(6)) { return putLin(equity, eVals[4], eVals[6], sVals[3], sVals[4]); } else { return putAllinMinusOne(); } }
public Action act() { reset(); for (LegalAction legalAction : legalActions) { if (legalAction.getType().equalsIgnoreCase("RAISE")) { raiseAction = legalAction; canRaise = true; } else if (legalAction.getType().equalsIgnoreCase("BET")) { betAction = legalAction; canBet = true; } else if (legalAction.getType().equalsIgnoreCase("CHECK")) { canCheck = true; } else if (legalAction.getType().equalsIgnoreCase("CALL")) { canCall = true; } else if (legalAction.getType().equalsIgnoreCase("DISCARD")) { canDiscard = true; if (chosenDiscardCard == null) chooseDiscardCard(); return discardCard(); } } for (PerformedAction performedAction : lastActions) { if (performedAction.getType().equalsIgnoreCase("DEAL")) { ec.setBoard(board); if (performedAction.getStreet().equalsIgnoreCase("FLOP")) { chooseDiscardCard(); // this will also update equity } else { equity = ec.calculateTotalEquity(); } } else if (performedAction.getType().equalsIgnoreCase("POST") && performedAction.getActor().equalsIgnoreCase(maj.myName)) { equity = ec.calculateTotalEquity(); } } maj.update(lastActions); dory.update(); if (board[2] == null) return actPreFlop(); else if (board[3] == null) { return actPostFlop(); } else if (board[4] == null) return actPostTurn(); else return actPostRiver(); }
private Action actPostFlopButton() { // acts second if (eL(1)) { return checkFold(); } else if (eL(2)) { if (dory.hasOpponentCheckedThisStreet()) { if (dory.hasOpponentRaisedThisStreet()) // he checked, I raised, he raised return fold(); else return putPotPercentage(equity, eVals[1], eVals[2], pVals[1], pVals[2]); } else if (dory.opponentBetSizeThisStreet() <= pV(0)) return call(); else return fold(); } else if (eL(4)) { if (dory.hasOpponentCheckedThisStreet()) { return putPotPercentage(equity, eVals[2], eVals[4], pVals[1], pVals[2]); } else if (dory.opponentBetSizeThisStreet() <= pV(1)) { if (dory.hasOpponentRaisedThisStreet()) // he checked, I raised, he raised return fold(); else return putPotPercentage(equity, eVals[2], eVals[4], pVals[1], pVals[2]); } else if (dory.opponentBetSizeThisStreet() <= pV(2)) return call(); else return fold(); } else if (eL(6)) { if (dory.hasOpponentCheckedThisStreet()) { if (dory.hasOpponentRaisedThisStreet()) // he checked then I raised then he raised return putMin(); else return putPotPercentage(equity, eVals[4], eVals[6], pVals[4], pVals[6]); } else if (dory.hasOpponentBetThisStreet()) { if (dory.hasOpponentRaisedThisStreet()) // he bet, I raised, he raised return putMin(); else return putPotPercentage(equity, eVals[4], eVals[6], pVals[5], pVals[7]); } else // should never be executed return putAllinMinusOne(); } else return putAllinMinusOne(); }