Exemple #1
0
 def test_distribute_deck(self):
     """ Test deck distribution """
     deck = Deck()
     hands = deck.distribute()
     for hand in hands:
         self.assertEqual(len(hand), 8)
     self.assertEqual(len(deck), 0)
Exemple #2
0
 def test_sort_wrong_trump(self):
     """ Test hand sorting with wrong trump value """
     deck = Deck()
     hands = deck.distribute()
     hand = Hand()
     hand.set(hands[0])
     self.assertRaises(ValueError, hand.sort, 'trump')
Exemple #3
0
 def test_play_card(self):
     """ Test correct card played """
     deck = Deck()
     hands = deck.distribute()
     hand = Hand()
     hand.set(hands[0])
     hand.play(0)
     self.assertEqual(len(hand.get()), 7)
Exemple #4
0
 def test_create_hand(self):
     """ Test correct hand creation """
     deck = Deck()
     hands = deck.distribute()
     hand = Hand()
     hand.set(hands[0])
     self.assertEqual(hand.get(full=True), hands[0])
     self.assertEqual(hand.get(full=False), hands[0])
Exemple #5
0
 def test_create_deck(self):
     """ Test deck creation """
     deck = Deck()
     self.assertEqual(len(deck), 32)
     self.assertEqual(deck.get()[0].get_value(), 0)
     self.assertEqual(deck.get()[0].get_color(), 0)
     self.assertEqual(deck.get()[-1].get_value(), 7)
     self.assertEqual(deck.get()[-1].get_color(), 3)
Exemple #6
0
 def test_sort_hand(self):
     """ Test correct hand sorting """
     deck = Deck()
     hands = deck.distribute()
     hand = Hand()
     hand.set(hands[0])
     hand.sort(3)
     expected_hand = '[7 of Club, 8 of Club, 9 of Club, Jack of Diamond, Queen of Diamond, Queen of Spade, ' \
                     'King of Spade, Jack of Spade]'
     self.assertEqual(str(hand), expected_hand)
Exemple #7
0
 def __init__(self, players):
     player_names = ['Player0', 'Player1', 'Player2', 'Player3']
     self.players = [
         players[i](name=player_names[i], index=i) for i in range(4)
     ]
     self.teams = [
         Team(self.players[0], self.players[2]),
         Team(self.players[1], self.players[3])
     ]
     self.first_player = 0
     self.deck = Deck()
     self.gui = None
Exemple #8
0
class Coinche:
    def __init__(self, players):
        player_names = ['Player0', 'Player1', 'Player2', 'Player3']
        self.players = [
            players[i](name=player_names[i], index=i) for i in range(4)
        ]
        self.teams = [
            Team(self.players[0], self.players[2]),
            Team(self.players[1], self.players[3])
        ]
        self.first_player = 0
        self.deck = Deck()
        self.gui = None

    def play_game(self, gui):
        self.gui = gui
        self.deck.shuffle()
        while self.teams[0].get_score() < 1000 and self.teams[1].get_score(
        ) < 1000 and not self.gui.quitGUI:
            self.distribute_cards()
            bidding_phase = Bidding(self.players, self.teams,
                                    self.first_player, self.gui)
            bidding, bidding_team = bidding_phase.play_bidding()
            if bidding_team is None:
                self.collect_players_cards()
            else:
                # TODO: Round
                # TODO: Scores
                # self.collect_teams_cards(bidding_team)
                self.collect_players_cards()
                self.teams[0].won_cards, self.teams[1].won_cards = [], []
            self.first_player = (self.first_player + 1) % 4

    def distribute_cards(self):
        self.deck.cut()
        hands = self.deck.distribute(random.randint(0, 2))
        for i in range(4):
            idx_player = (self.first_player + i) % 4
            self.players[idx_player].hand.set(hands[i])
            self.players[idx_player].hand.sort()
            self.gui.show_cards(idx_player)

    def sort_all_hands(self, trump):
        for player in self.players:
            player.hand.sort(trump)

    def collect_players_cards(self):
        deck = []
        for i in range(4):
            idx_player = (self.first_player + i) % 4
            deck += self.players[idx_player].hand.get(full=True)
        self.deck.reset(deck)

    def collect_teams_cards(self, bidding_team):
        deck0, deck1 = self.teams[0].won_cards, self.teams[1].won_cards
        deck = deck0 + deck1 if bidding_team == 0 else deck1 + deck0
        self.deck.reset(deck)
Exemple #9
0
 def test_shuffle_deck(self):
     """ Test deck shuffle """
     deck = Deck()
     previous_deck = deck.get()
     deck.shuffle()
     shuffled_deck = deck.get()
     same, i = True, 0
     while same and i < 32:
         if previous_deck[i] != shuffled_deck[i]:
             same = False
         i += 1
     self.assertEqual(same, False)
Exemple #10
0
 def test_play_card_wrong_value(self):
     deck = Deck()
     hands = deck.distribute()
     hand = Hand()
     hand.set(hands[0])
     self.assertRaises(ValueError, hand.play, 8)
Exemple #11
0
 def test_distribute_deck_wrong_two(self):
     """ Test distribution with wrong two value """
     deck = Deck()
     self.assertRaises(ValueError, deck.distribute, 3)