def classic(state: GameState) -> Optional[Bet]: if len(state.history) == 0: return Bet(selection="red", size=1) last_round = state.history[-1] if last_round.result == RoundResult.LOSS: return replace(last_round.bet, size=last_round.bet.size * 2) return Bet(selection="red", size=1)
def next_bet(state: GameState) -> Optional[Bet]: if len(state.history) == 0: return Bet(selection=1, size=1) last_round = state.history[-1] if last_round.result == RoundResult.LOSS: if state.round % 15 == 0: return replace(state.bet, size=last_round.bet.size * 2) else: return last_round.bet return Bet(selection=1, size=1)
def placeBets(self): blackOutcome = self.wheel.getOutcomeByName( Martingale.BLACK_OUTCOME_NAME) amount = 10 * (2**self.lossCount) currentBet = Bet(amount, blackOutcome) self.table.placeBet(currentBet) self.stake -= amount
def test_win(self): budgetBefore = self.p.budget outcome = self.w.getOutcomeByName("0") bet = Bet(self.t.minimum, outcome) self.p.win(bet) self.assertEqual(self.p.budget, budgetBefore + bet.amount * (outcome.odds + 1))
def placeBets(self, game): # Update table with player's bets try: #chosenCommand = input("Enter one or several bets, q to stop betting this round.") chosenCommand = "" while chosenCommand != "q": # Player can bet as long as he has money chosenOutcome = input("Enter outcome to bet on: ") chosenOutcome = "Number " + chosenOutcome chosenOutcome = game.wheel.getOutcome(chosenOutcome) chosenAmount = int(input("Enter amount to bet: ")) bet = Bet(chosenAmount, chosenOutcome) self.table.placeBet(bet) self.stake -= bet.amount print("Stake left: ", self.stake) chosenCommand = input( "Enter q to stop betting, any other key to continue.") except KeyboardInterrupt: print("Quitting") exit()
def testStakeOnLoseAndWin(self): self.assertEqual(self.m.stake, 1000) myBet = Bet(10, self.blackOutcome) self.m.placeBets() self.m.lose(myBet) self.assertEqual(self.m.stake, 990) self.m.placeBets() self.m.win(myBet) self.assertEqual(self.m.stake, 990) self.m.placeBets() self.m.win(myBet) self.assertEqual(self.m.stake, 1000)
def testIter(self): betList = [Bet(30, outcome), Bet(10, outcome), Bet(5, outcome)] t = Table(betList) for i, el in enumerate(t): self.assertEqual(betList[i], el)
def testIsValidUnderMinimum(self): betList = [Bet(TABLE_MINIMUM - 0.1, outcome)] t = Table(betList) with self.assertRaises(InvalidBet): t.isValid()
def testIsValidOverLimit(self): betList = [Bet(TABLE_LIMIT + 1, outcome)] t = Table(betList) with self.assertRaises(InvalidBet): t.isValid()
def testPlaceBet(self): ilegalBet = Bet(TABLE_LIMIT + 1, outcome) t = Table() with self.assertRaises(InvalidBet): t.placeBet(ilegalBet)
def testTableInit(self): betList = [Bet(30, outcome), Bet(10, outcome)] t = Table(betList) self.assertCountEqual(t.bets, betList)
def win(self, bet: Bet): self.stake += bet.winAmont() self.lossCount = 0
def testLoseAmount(self): o = Outcome('red', 1) b = Bet(1, o) self.assertEqual(b.loseAmount(), 1)
def initial_state(initial_units: int = 1000) -> GameState: return GameState(initial_units, initial_units, Bet(0, 0), 0, [])
def testStr(self): betList = [Bet(30, outcome)] t = Table(betList) self.assertEqual( str(t), "Bets list: ['Outcome: red, odds are 1, amount: 30']")
def testPlaceBets(self): self.p57.placeBets() self.assertEqual(len(self.t.bets), 1) placedBet: Bet = self.t.bets[0] self.assertEqual(placedBet.__str__(), Bet(10, self.w.getOutcomeByName('black')).__str__())
def next_bet(state: GameState) -> Optional[Bet]: return Bet(selection=0, size=1)
def all_in(state: GameState) -> Optional[Bet]: return Bet(selection="red", size=state.units)
def playBySpecificStrategy(self) -> None: blackBet = Bet(10, self.black) self.table.placeBet(blackBet)
def testWinAmount(self): o = Outcome('red', 1) b = Bet(1, o) self.assertEqual(b.winAmont(), 2)
def testLossCount(self): self.assertEqual(self.m.lossCount, 0) self.m.lose(Bet(1, self.blackOutcome)) self.assertEqual(self.m.lossCount, 1)
def testInit(self): o = Outcome('red', 1) b = Bet(30, o) self.assertEqual(type(b), type(Bet(30, o)))
def testWinLossCountInit(self): myBet = Bet(1, self.blackOutcome) self.m.lose(myBet) self.m.win(myBet) self.assertEqual(self.m.lossCount, 0)