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())
Beispiel #2
0
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!"