def end_hand(self): if len(self.cards) == 0: return self.hand_hidden = False message = "" #case for player bust: if Rulebook.check_bust( Rulebook.check_hand_value(self.player.get_cards())): message = "Player busts! Dealer wins." #case for dealer bust: elif Rulebook.check_bust(Rulebook.check_hand_value(self.cards)): message = "Dealer busts! Player wins." #case for player beating dealer: elif Rulebook.check_player_win( Rulebook.check_hand_value(self.cards), Rulebook.check_hand_value(self.player.get_cards())): message = "Player wins!" #case for dealer beating player: elif Rulebook.check_dealer_win( Rulebook.check_hand_value(self.cards), Rulebook.check_hand_value(self.player.get_cards())): message = "Dealer wins!" #case for tie else: message = "Tie!" self.update_view(message) #Reset cards self.cards = [] self.player.collect_cards()
def make_dealer_move(self): if len(self.cards) == 0: return if Rulebook.check_dealer_hit(Rulebook.check_hand_value(self.cards)): self.cards.append(self.deck.draw_card()) if Rulebook.check_bust(Rulebook.check_hand_value(self.cards)): self.end_hand() return self.update_view() self.make_dealer_move()
def get_player_move(self): print("Hit? [Y/N]") option = input() if option.upper() == "Y": self.player.add_card(self.deck.draw_card()) if not Rulebook.check_bust( Rulebook.check_hand_value(self.player.get_cards())): self.update_view() self.get_player_move() else: self.end_hand()
def test_cdh_dealer_hit_ace(self): self.assertTrue(Rulebook.check_dealer_hit("3 or 13"))
def test_cdh_dealer_not_hit_ace(self): self.assertFalse(Rulebook.check_dealer_hit("10 or 20"))
def test_check_bust_ace_false(self): score = "15 or 25" self.assertFalse(Rulebook.check_bust(score))
def test_cdh_dealer_not_hit(self): self.assertFalse(Rulebook.check_dealer_hit("17"))
def test_chv_shown_ace(self): self.assertEqual(Rulebook.check_hand_value(['3', 'A'], True), "1 or 11")
def test_sts_large_val(self): self.assertEqual(50, Rulebook.string_to_score("50"))
def test_cdw_player_win(self): self.assertTrue(Rulebook.check_dealer_win("21", "2"))
def test_chv_ace(self): self.assertEqual(Rulebook.check_hand_value(['3', 'A']), "4 or 14")
def test_cpw_player_win(self): self.assertTrue(Rulebook.check_player_win("5", "21"))
def test_cpw_player_win_ace(self): self.assertTrue(Rulebook.check_player_win("20", "11 or 21"))
def test_check_bust_false(self): score = "20" self.assertFalse(Rulebook.check_bust(score))
def test_sts_ace_low_val(self): self.assertEqual(18, Rulebook.string_to_score("18 or 28"))
def test_sts_ace_val(self): self.assertEqual(21, Rulebook.string_to_score("11 or 21"))
def test_check_bust_true(self): score = "22" self.assertTrue(Rulebook.check_bust(score))
def test_cdw_player_not_win(self): #can be tie or loss. self.assertFalse(Rulebook.check_dealer_win("2", "10"))
def test_chv(self): self.assertEqual(Rulebook.check_hand_value(['3', '5']), "8")
def update_view(self, custom_message=""): ModelView.update_view( self.cards, self.player.get_cards(), Rulebook.check_hand_value(self.cards, self.hand_hidden), Rulebook.check_hand_value(self.player.get_cards()), self.hand_hidden, custom_message)
def test_chv_hidden_ace(self): self.assertEqual(Rulebook.check_hand_value(['A', '6'], True), "6")
def test_check_bust_ace_true(self): score = "25 or 35" self.assertTrue(Rulebook.check_bust(score))
def test_cdw_player_tie(self): self.assertFalse(Rulebook.check_dealer_win("21", "21"))
def test_sts_zero(self): self.assertEqual(0, Rulebook.string_to_score("0"))
def test_cdw_player_win_ace(self): self.assertTrue(Rulebook.check_dealer_win("11 or 21", "11"))
def test_cdh_dealer_hit(self): self.assertTrue(Rulebook.check_dealer_hit("15"))
def get_score(self): return Rulebook.check_hand_value(self.get_cards())
def test_check_bust_zero(self): score = "0" self.assertFalse(Rulebook.check_bust(score))