예제 #1
0
    def play(self):
        last_action = None
        self.end_seat = self.filtered_seats[-1]
        self.align_seat_deques()

        while True:
            seat = self.filtered_seats[0]

            turn = Turn(
                self.seats,
                self.filtered_seats,
                self.cards,
                self.current_bet,
                last_action,
            )

            action = turn.play()

            if action:
                last_action = action
                self.resolve_action(seat, action)

            if len(self.filtered_seats) == 1:
                self.LOGGER.debug("Player {} wins".format(
                    self.filtered_seats[0].index))
                self.move_all_bets_to_pots()
                return list(self.filtered_seats)

            if seat is self.end_seat:
                # bets have been called
                self.move_all_bets_to_pots()
                return [
                    seat for seat in self.remaining_seats
                    if seat in self.filtered_seats
                ]

            self.filtered_seats.rotate(-1)
            self.align_seat_deques()