Example #1
0
class Dealer:
    def __init__(self):
        self.table = Table(2)
        self.deck = Deck()

    def seat_player(self, player):
        self.table.seat_player(player)

    def go(self):
        print("Game is starting")
        self._deal()

    def deal(self):
        self.deck.reset()
        seats = self.table.seats
        for seat in seats:
            if not seat.is_free:
                seat.player.clear_hand()
                hand = []
                for i in range(5):
                    seat.player.give_card(self.deck.draw_card())

    def _printGameState(self):
        self.table.print_state()

    def process_actions(self):
        for seat in self.table.seats:
            if not seat.is_free:
                seat.player.print_state()
                action = seat.player.collect_action()
                seat.player.take_cards(action)
                for i in range(len(action)):
                    seat.player.give_card(self.deck.draw_card())
                seat.player.print_state()

    def declare_winner(self):
        hands = []
        for seat in self.table.seats:
            if not seat.is_free:
                hands.append(HandResult(seat.player.hand, seat.player))
        round_result = RoundResult(hands)
        winning_hands = round_result.find_winning_hands()

        for seat in self.table.seats:
            if not seat.is_free:
                seat.player.tell_result(round_result)

        print("Round Winner(s)!: ")
        for winning_hand in winning_hands:
            print(winning_hand.player.name + " " + str(winning_hand.hand_type))