import re from pyjack.dealer import Dealer from pyjack.deck import Deck from pyjack.player import Player class Game: """The Game class is the central coordinator, managing the flow of the entire round, from setup to payout.""" # TODO: - play_round() function # - show_cards function def __init__(self) -> None: """Creates instances of 'Deck', 'Player', and 'Dealer'.""" self.deck = Deck() self.player = Player(0) self.dealer = Dealer(1000) def compare_hands(self, bet: int) -> str: """*Resolution/Payout*: Compares final hand values, checks for Bust, Blackjack, and highest value. *Updates* player.chips based on the outcome and the bet. *Returns* the result string (e.g., "Player Wins!").""" # HACK: this might work but certainly needs to be fixed. # check if Player or Dealer busts 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" # Check dealer bust: if dealer_value > 21: self.player.chips += bet return "Player Wins" # 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 "Tie"