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)
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')
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)
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])
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)
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)
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
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)
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)
def test_play_card_wrong_value(self): deck = Deck() hands = deck.distribute() hand = Hand() hand.set(hands[0]) self.assertRaises(ValueError, hand.play, 8)
def test_distribute_deck_wrong_two(self): """ Test distribution with wrong two value """ deck = Deck() self.assertRaises(ValueError, deck.distribute, 3)