def play_one_round(self): dealer = Dealer() # Create new dealer for every round self.pot_ = 3 # Clear the pot by setting it to small + big blinds self.winner_ = None self.players_[0].set_blind(0) # Player 0 is always small blind self.players_[1].set_blind(1) # Player 1 is always big blind self.show_game_status() for player in self.players_: player.set_cards(dealer.deal_pockets()) player.show_cards() if self.play_one_state(0): # pre-flop dealer.deal_flop() self.show_game_status() if self.play_one_state(1): # pre-turn self.show_game_status() dealer.deal_turn() if self.play_one_state(1): # pre-river dealer.deal_river() # Find the winner of the round if not self.winner_ == None: self.winner_.increase_stack(self.pot_) else: # User winner.py for player in self.players_: player.show_cards() winner_id = ShowHands.Winner(self.players_[0].pocket_cards_, self.players_[1].pocket_cards_, dealer.communitycards_) #print("Debugging Test winner_id : " + str(winner_id)) if not winner_id == None: for player in self.players_: if player.check_id(winner_id + 1): player.increase_stack(self.pot_) self.winner_ = player break else: #Then it's a tie!!! for player in self.players_: player.increase_stack(self.pot_ / 2) self.show_game_status()
class PokerGame : def __init__(self): self.p1 = Player(1) self.p2 = Player(2) self.dealer = Dealer() self.pot = 0 self.flop_cards = [] self.bet_flag = False self.check_flag = False self.cur_bet = 0 self.cur_round = 0 self.cur_player = 1 self.evaluator = FiveEval() def pre_flop(self): hands = self.dealer.deal_cards() self.p1.hand = hands[0] self.p2.hand = hands[1] self.cur_bet = 0 self.handle_move(self.p1.your_move(), 1) def flop(self): self.check_flag = False self.bet_flag = False self.see_pot() print "-----------------------------" print "Dealing flop" self.flop_cards = self.dealer.deal_flop() visible_flop = [] for card in self.flop_cards: visible_flop.append(str(self.evaluator.number_lookup_table[self.evaluator.deckcardsFace[card]])+str(self.evaluator.suit_lookup_table[self.evaluator.deckcardsSuit[card]])) print "Flop: " + str(visible_flop) self.cur_bet = 0 self.handle_move(self.p1.your_move(), 1) def see_stack_sizes(self): print "------------------------------" print "Stack Sizes" print("Player 1 stack: " + str(self.p1.stack)) print("Player 2 stack: " + str(self.p2.stack)) def see_pot(self): print "------------------------------" print "Pot Size: $" + str(self.pot) def handle_move(self, move, id): if move[0] == 'F': self.bet_flag = False print "Player " + str(move[1]) + "folded" self.end_round(move[1]) elif move[0] == 'B' and self.bet_flag == False: self.cur_bet = move[1] self.pot = self.pot + self.cur_bet self.bet_flag = True print "Player " + str(move[2]) + " bet $" + str(self.cur_bet) self.change_turn(move[2]) elif move[0] == 'CA' and self.bet_flag == True: self.pot = self.pot + self.cur_bet self.bet_flag = False print "Player " + str(move[2]) + " called the bet" self.next_round() elif move[0] == 'C' and self.bet_flag == False: if self.check_flag == False: print "Player " + str(move[1]) + " checked" self.check_flag = True self.change_turn(move[1]) else: print "Player " + str(move[1]) + " checked" self.check_flag = False self.next_round() else: print "False Move" self.repeat_turn() def change_turn(self, cur_player): print "-----------------------------" if cur_player == 1: self.cur_player = cur_player self.handle_move(self.p2.your_move(),2) else: self.cur_player = cur_player self.handle_move(self.p1.your_move(),1) def next_round(self): self.cur_round = self.cur_round + 1 if self.cur_round == 1: self.flop() if self.cur_round == 2: self.evaluate() def repeat_turn(self): if self.cur_round == 1: self.handle_move(self.p1.your_move(),1) else: self.handle_move(self.p2.your_move(),2) def end_round(self, folded_player): print "Player " + str(folded_player) + " folded." def evaluate(self): self.cur_round += 1 self.see_pot() p1_hand = self.p1.hand + self.flop_cards p2_hand = self.p2.hand + self.flop_cards score_p1 = self.evaluator.getRankOfFive(p1_hand[0],p1_hand[1],p1_hand[2],p1_hand[3],p1_hand[4]) score_p2 = self.evaluator.getRankOfFive(p2_hand[0],p2_hand[1],p2_hand[2],p2_hand[3],p2_hand[4]) if score_p1 > score_p2: print "Player 1 wins $" + str(self.pot) self.p1.stack += self.pot elif score_p2 > score_p1: print "Player 2 wins $" + str(self.pot) self.p2.stack += self.pot else: print "Split pot" self.p2.stack += (0.5*self.pot) self.p1.stack += (0.5*self.pot) self.see_stack_sizes()
from rank import winner
def play_one_round(self): # Create new dealer for every round dealer = Dealer() # Clear the pot by setting it to small + big blinds self.pot = 3 self.winner = None # Player 0 is always small blind and Player 1 is always big blind self.players[0].set_blind(0) self.players[1].set_blind(1) self.players[0].set_cards(dealer.deal_pockets()) self.players[1].set_cards(dealer.deal_pockets()) self.show_game_status() # Three steps, they are pre-flop, pre-turn, pre-river respectively if self.play_one_state(0): # pre-flop dealer.deal_flop() self.show_game_status() if self.play_one_state(1): # pre-turn self.show_game_status() dealer.deal_turn() if self.play_one_state(1): # pre-river dealer.deal_river() pass pass pass pass # Find the winner of the round if self.winner is not None: self.winner.increase_stack(self.pot) pass else: for player in self.players: player.show_cards() pass pass winner_id = winner(self.players[0], self.players[1], dealer.communitycards) print("Debugging Test winner_id : " + str(winner_id)) # Restore the original hands for loop_i in range(6, 1, -1): for player in self.players: player.hands.pop(loop_i) pass pass pass # Winner get the pot. If it's a tie, halve the pot respectively if winner_id is not None: for player in self.players: if player.check_id(winner_id): player.increase_stack(self.pot) self.winner = player break pass pass pass else: for player in self.players: player.increase_stack(self.pot / 2) pass pass pass self.show_game_status() pass