Exemplo n.º 1
0
 def get_adjacent_states(self):
     adj_states = []
     for i in range(len(self.player_hands[self.current_player]))[::-1]:
         if len(self.player_valid_cards) < 1 or self.player_valid_cards[self.current_player][i]:
             new_state = EuchreState(self.current_player, [h[:] for h in self.player_hands], [v[:] for v in self.player_valid_cards], self.player_points[:], self.cards_in_play[:], self.trump_suit, self.round_suit)
             card_taken = new_state.player_hands[new_state.current_player][i]
             if all(new_state.cards_in_play):
                 new_state.cards_in_play = [0, 0, 0, 0]
                 new_state.round_suit = card_taken.suit
                 for j, h in enumerate(new_state.player_hands):
                     new_state.player_valid_cards[j] = []
                     for c in h:
                         new_state.player_valid_cards[j].append(c.suit == new_state.round_suit)
                     if all(v == False for v in new_state.player_valid_cards[j]):
                         for k in range(len(new_state.player_valid_cards[j])):
                             new_state.player_valid_cards[j][k] = True
             new_state.cards_in_play[new_state.current_player] = Card.get_card_value(card_taken, new_state.trump_suit, new_state.round_suit)
             del new_state.player_hands[new_state.current_player][i]
             del new_state.player_valid_cards[new_state.current_player][i]
             new_state.current_player = (new_state.current_player + 1) % len(new_state.player_hands)
             if all(new_state.cards_in_play):
                 winner_ind = new_state.cards_in_play.index(max(new_state.cards_in_play))
                 new_state.current_player = winner_ind - 1
                 new_state.player_points[winner_ind] += 1
             adj_states.append(new_state)
     return adj_states
Exemplo n.º 2
0
 def player_choose_card(self, player, card):
     self.view.deactivate_player_turn(self.players[self.current_turn],
                                      self.current_turn)
     chosen_card = self.players[self.current_turn].take_card(card)
     value = Card.get_card_value(chosen_card, self.trump, self.round_suit)
     self.end_turn(self.players[self.current_turn], self.current_turn,
                   chosen_card, value)
Exemplo n.º 3
0
 def next_turn(self):
     if self.turns_left_in_round < 1:
         self.cards_in_play = [0, 0, 0, 0]
         self.view.new_round()
         self.round_suit = ""
     self.current_turn = (self.current_turn + 1) % len(self.players)
     self.turns_left_in_round = (self.turns_left_in_round - 1) % len(
         self.players)
     self.view.update_current_player(str(self.current_turn + 1))
     for p in self.players:
         p.update_valid_cards(self.round_suit)
     if self.user_player and (self.current_turn == 0):
         self.view.activate_player_turn(self.players[0], 0)
     else:
         card = self.players[self.current_turn].choose_card(
             self.trump, self.round_suit, self.cards_in_play, self.players,
             self.current_turn)
         value = Card.get_card_value(card, self.trump, self.round_suit)
         self.end_turn(self.players[self.current_turn], self.current_turn,
                       card, value)
Exemplo n.º 4
0
 def prioritize_hand(self, trump):
     self.hand_priorities = []
     for i, c in enumerate(self.hand.cards):
         self.hand_priorities.append(Card.get_card_value(c, trump))