class TestPlayer(unittest.TestCase): def setUp(self): self.deck = Deck() self.deck.populate() self.player = Player("Jake") self.card = Card("Spades", 10) self.card2 = Card("Spades", 10) self.card3 = Card("Spades", 5) def test_has_name(self): self.assertEqual("Jake", self.player.name) def test_hand_starts_empty(self): self.assertEqual(0, len(self.player.hand)) def test_can_take_card(self): self.assertEqual(0, len(self.player.hand)) new_card = self.deck.deal() self.player.take_card(new_card) self.assertEqual(1, len(self.player.hand)) def test_take_card_updates_hand_value(self): self.assertEqual(0, self.player.totalHandValue) self.player.take_card(self.card) self.assertEqual(10, self.player.totalHandValue) def test_shows_if_bust(self): self.assertEqual(False, self.player.is_bust()) self.player.take_card(self.card) self.player.take_card(self.card2) self.player.take_card(self.card3) self.assertEqual(True, self.player.is_bust())
class Game: def __init__(self): self.deck = Deck() self.players = [] self.player = Player("Jake") self.dealer = Dealer("Dealer") self.no_winner = Player("Error") self.players.append(self.player) self.players.append(self.dealer) def start(self): self.deck.populate() self.deck.shuffle() self.deal_cards() print("You have " + str(self.player.totalHandValue)) self.take_go(self.player) self.dealer.play(self.deck, self.player) # winner = self.check_winner() print(self.check_winner()) def deal_cards(self): for player in self.players: new_card = self.deck.deal() new_card2 = self.deck.deal() player.take_card(new_card) player.take_card(new_card2) def take_go(self, player): while player.is_bust() == False and player.ended_go is False: print(player.name + " currently has " + str(player.totalHandValue)) player.get_user_input(self.deck) def check_winner(self): winner = self.dealer if (21 - self.player.totalHandValue) < ( 21 - winner.totalHandValue) and self.player.is_bust() is False: winner = self.player elif self.dealer.is_bust() and self.player.is_bust() is False: winner = self.player if winner == self.player: return "Congratulations, you won!" else: return "Unlucky, the dealer won!"