Files
project_game/chris_demo/dealer.py
jandrews ce69c6b474 fykfyk
2026-01-16 13:00:39 -05:00

92 lines
2.9 KiB
Python

from deck import Deck
class Dealer:
"""The Dealer runs the game, following these rules:
I have a card class that returns a card value
I have a dealer file that has a function that deals the first two cards
I'm still a little lost on how this works into the Game class
and how to organize the play.
I want to:
1. deal two cards to each dealer and player
2. hide one of the dealers cards
3. present the user with their cards and let them
choose * hit me OR * stay.
4. If they hit, deal another card to them and calculate if they
went over 21. If they went over 21 end the game with BUST Dealer WINS!.
If they didn't go over 21, calculate their score and allow the dealer
their turn.
5. If they stay, calculate their score and let the dealer have their turn.
6. Dealer - checks their cards and compares them to the player. Then
chooses to hit or stay. Print choice to screen. If they hit, show the card
to the player.
"""
display = False
playing = False
dealer_origin = (1, 3)
player_origin = (1, 5)
def __init__(self, position):
self.position = position
self.dealer_cards = []
self.player_cards = []
def play_turn(self, game):
if not self.playing:
self.set_up_new_round(game)
self.playing = True
def handle_keystroke(self, keystroke, game):
game.log(keystroke)
if keystroke == "h":
self.deal_card_to_player()
game.state["score"] = self.get_player_score()
def set_up_new_round(self, game):
self.deck = Deck(self.position)
for agent in self.deck.get_agents():
game.add_agent(agent)
self.deal_card_to_dealer(hidden=True)
self.deal_card_to_dealer(hidden=False)
self.deal_card_to_player()
self.deal_card_to_player()
game.state["score"] = self.get_player_score()
def deal_card_to_dealer(self, hidden=True):
card = self.deck.draw()
if hidden:
card.hide()
else:
card.show()
card.set_position(self.get_position_of_next_dealer_card())
self.dealer_cards.append(card)
def deal_card_to_player(self, hidden=False):
card = self.deck.draw()
if hidden:
card.hide()
else:
card.show()
card.set_position(self.get_position_of_next_player_card())
self.player_cards.append(card)
def get_position_of_next_player_card(self):
x, y = self.player_origin
return (x + 4 * len(self.player_cards), y)
def get_position_of_next_dealer_card(self):
x, y = self.dealer_origin
return (x + 4 * len(self.dealer_cards), y)
def get_player_score(self):
"""if score >21 set A va """
return sum([card.value() for card in self.player_cards])
def end_round(self, game):
for agent in self.deck.get_agents():
game.remove_agent(agent)