Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class BlackjackController:
- """Blackjack controller."""
- def __init__(self, deck: Deck, view: 'BlackjackView'):
- """
- Start new blackjack game.
- :param deck: deck to draw cards from.
- :param view: view to communicate with.
- """
- self.view = view
- if deck.is_shuffled is False:
- deck.shuffle()
- if deck.is_shuffled is True:
- self.lets_the_game_begin(deck, view)
- def lets_the_game_begin(self, deck: Deck, view: 'BlackjackView'):
- """
- Just helping function.
- :param deck:
- :param view:
- :return:
- """
- self.hands_of_fate(deck)
- wish = True
- if self.player.score == 21:
- self.view.player_won(self.state)
- return
- elif self.player.score < 21:
- want_wish = view.ask_next_move(self.state)
- if want_wish == 'H':
- while wish is True:
- self.player.add_card(deck.draw())
- if self.player.score == 21:
- self.view.player_won(self.state)
- return
- elif self.player.score > 21:
- self.view.player_lost(self.state)
- return
- else:
- want_wish = view.ask_next_move(self.state)
- if want_wish == 'S':
- wish = False
- self.dealers_choice(deck)
- return
- def hands_of_fate(self, deck: Deck):
- """
- Both players hand.
- :param deck:
- :return:
- """
- self.player = Hand()
- self.PyCharm = Hand()
- self.state = {'dealer': self.PyCharm, 'player': self.player}
- self.player.add_card(deck.draw())
- self.PyCharm.add_card(deck.draw())
- self.player.add_card(deck.draw())
- self.PyCharm.add_card(deck.draw())
- def dealers_choice(self, deck: Deck):
- """
- Dealer makes his choice.
- :return:
- """
- while self.PyCharm.score > self.player.score:
- self.PyCharm.add_card(deck.draw())
- if self.PyCharm.score > self.player.score and self.PyCharm.score < 22:
- self.view.player_lost(self.state)
- return
- if self.PyCharm.score > self.player.score and self.PyCharm.score > 21:
- self.view.player_won(self.state)
- return
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement