From ddf1aa81d5f5e199962f087fd61b074560ae97cd Mon Sep 17 00:00:00 2001 From: cerberus Date: Mon, 27 Oct 2025 17:39:16 +0100 Subject: [PATCH] redid Game.compare_hands() method --- src/pyjack/game.py | 56 +++++++++++++++++++++++++++------------------- 1 file changed, 33 insertions(+), 23 deletions(-) diff --git a/src/pyjack/game.py b/src/pyjack/game.py index 0bc1450..0c9ff17 100644 --- a/src/pyjack/game.py +++ b/src/pyjack/game.py @@ -1,3 +1,4 @@ +import re from pyjack.dealer import Dealer from pyjack.deck import Deck from pyjack.player import Player @@ -25,33 +26,42 @@ class Game: *Returns* the result string (e.g., "Player Wins!").""" # HACK: this might work but certainly needs to be fixed. - # check if Player or Dealer busts - if self.player.hand.value > 21: + + player_value = self.player.hand.value + dealer_value = self.dealer.hand.value + player_cards = len(self.player.hand.cards) + dealer_cards = len(self.dealer.hand.cards) + + # Check player bust: + if player_value > 21: + self.player.chips -= bet return "Player Lost" - elif self.dealer.hand.value > 21 and self.player.hand.value < 22: + # Check dealer bust: + if dealer_value > 21: self.player.chips += bet return "Player Wins" - elif self.dealer.hand.value < 22 and self.player.hand.value < 22: - # Checks for Blackjack - if self.player.hand.value == 21 and self.dealer.hand.value != 21: - return "Player Wins 3:2" - else: - if self.dealer.hand.value == 21: - if self.player.hand.value == 21: - return "Tie" - else: - return "Player Lost" - # Checks the values if either the Player busts or has - # Blackjack - elif self.player.hand.value > self.dealer.hand.value: - return "Player Wins" - else: - if self.player.hand.value == self.dealer.hand.value: - return "Tie" - else: - return "Player Lost" + # Check for Blackjack (21 with 2 cards) + + is_player_bj = player_value == 21 and player_cards == 2 + is_dealer_bj = dealer_value == 21 and dealer_cards == 2 + + if is_player_bj and not is_dealer_bj: + self.player.chips += bet * 1.5 + return "Player Wins 3:2" + elif is_dealer_bj: + self.player.chips -= bet + return "Player Lost" + + # Check for normal values + if player_value > dealer_value: + self.player.chips += bet + return "Player Wins" + + elif player_value < dealer_value: + self.player.chips -= bet + return "Player Lost" else: - return "Values could not be compared." + return "Tie"