Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
159 changes: 90 additions & 69 deletions poker/hand.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,88 +75,109 @@ def take_action(self, action, bet=0):
self.turn = PLAYER if (self.turn == CPU) else CPU

elif action == BET:
if self.last_action == RAISE:
result = "You can't bet now"
elif self.turn == PLAYER and self.players[0].money < bet:
result = "You don't have enough money"
else:
self.last_action = action
self.pot += bet
self.last_bet = bet
if self.turn == PLAYER:
if self.players[0].money == bet:
self.all_in_value = True
self.players[0].money -= bet
self.turn = PLAYER if (self.turn == CPU) else CPU
result = 'All In Done'
else:
self.players[0].money -= bet
else:
self.players[1].money -= bet
self.turn = PLAYER if (self.turn == CPU) else CPU
result = self.action_bet(bet)

elif action == CALL:
result = self.action_call()

elif action == FOLD:
result = self.action_fold()

elif action == RAISE:
if self.last_action == BET or self.last_action == RAISE:
if self.turn == PLAYER:
self.players[0].money -= self.last_bet
elif self.turn == CPU:
self.players[1].money -= self.last_bet
self.pot += self.last_bet
if self.all_in_value:
result = self.all_in()
result = self.action_raise(bet)

return result

def action_bet(self, bet) -> str:
result = BET + ' done!'

if self.last_action == RAISE:
result = "You can't bet now"
elif self.turn == PLAYER and self.players[0].money < bet:
result = "You don't have enough money"
else:
self.last_action = BET
self.pot += bet
self.last_bet = bet
if self.turn == PLAYER:
if self.players[0].money == bet:
self.all_in_value = True
self.players[0].money -= bet
self.turn = PLAYER if (self.turn == CPU) else CPU
result = 'All In Done'
else:
res = self.next_stage()
if res:
result = res
self.players[0].money -= bet
else:
result = "You can't CALL now"
self.players[1].money -= bet
self.turn = PLAYER if (self.turn == CPU) else CPU
return result

elif action == FOLD:
if self.last_action == BET or self.last_action == RAISE:
if self.turn == CPU:
self.players[0].money += self.pot
elif self.turn == PLAYER:
self.players[1].money += self.pot
result = "the {} win".format(PLAYER if (self.turn == CPU)
else CPU)
def action_call(self) -> str:

result = "You can't CALL now"
if self.last_action == BET or self.last_action == RAISE:
index = 0 if self.turn == PLAYER else 1
self.players[index].money -= self.last_bet
self.pot += self.last_bet

if self.all_in_value:
result = self.all_in()
else:
result = "You can't FOLD now"
result = self.next_stage()

elif action == RAISE:
if not result:
result = CALL + ' done!'
return result

if self.last_action == BET or self.last_action == RAISE:
turn_money = None
def action_fold(self) -> str:

if self.turn == PLAYER:
if self.last_action == BET or self.last_action == RAISE:
if self.turn == CPU:
self.players[0].money += self.pot
elif self.turn == PLAYER:
self.players[1].money += self.pot
result = "the {} win".format(PLAYER if (self.turn == CPU)
else CPU)
else:
result = "You can't FOLD now"

turn_money = self.players[0].money
return result

else:
turn_money = self.players[1].money

if self.turn == PLAYER and self.players[0].money < bet:
result = "You don't have enough money"
elif bet >= (2 * self.last_bet):
self.last_action = action
self.pot += bet
self.last_bet = bet - self.last_bet
if self.turn == PLAYER:
self.players[0].money -= bet
else:
self.players[1].money -= bet
self.turn = PLAYER if (self.turn == CPU) else CPU
def action_raise(self, bet) -> str:
result = ''
turn_money = None

elif bet < (2 * self.last_bet) and bet == turn_money:
self.last_action = action
self.pot += turn_money
self.last_bet = turn_money
if self.turn == PLAYER:
self.players[0].money -= turn_money
else:
self.players[1].money -= turn_money
result = self.all_in()
else:
result = "You must raise at least twice last bet"
if self.turn == PLAYER:
turn_money = self.players[0].money

else:
turn_money = self.players[1].money

if self.turn == PLAYER and self.players[0].money < bet:
result = "You don't have enough money"

elif bet >= (2 * self.last_bet):
self.last_action = RAISE
self.pot += bet
self.last_bet = bet - self.last_bet
if self.turn == PLAYER:
self.players[0].money -= bet
else:
self.players[1].money -= bet
self.turn = PLAYER if (self.turn == CPU) else CPU

elif bet < (2 * self.last_bet) and bet == turn_money:
self.last_action = RAISE
self.pot += turn_money
self.last_bet = turn_money
if self.turn == PLAYER:
self.players[0].money -= turn_money
else:
self.players[1].money -= turn_money
result = self.all_in()
else:
result = "You must raise at least twice last bet"

return result

Expand Down