Advertisement
Alekal

Untitled

Dec 4th, 2018
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.49 KB | None | 0 0
  1.  
  2. class BlackjackController:
  3. """Blackjack controller."""
  4.  
  5. def __init__(self, deck: Deck, view: 'BlackjackView'):
  6. """
  7. Start new blackjack game.
  8.  
  9. :param deck: deck to draw cards from.
  10. :param view: view to communicate with.
  11. """
  12. self.view = view
  13. if deck.is_shuffled is False:
  14. deck.shuffle()
  15. if deck.is_shuffled is True:
  16. self.lets_the_game_begin(deck, view)
  17.  
  18. def lets_the_game_begin(self, deck: Deck, view: 'BlackjackView'):
  19. """
  20. Just helping function.
  21.  
  22. :param deck:
  23. :param view:
  24. :return:
  25. """
  26. self.hands_of_fate(deck)
  27. wish = True
  28. if self.player.score == 21:
  29. self.view.player_won(self.state)
  30. return
  31. elif self.player.score < 21:
  32. want_wish = view.ask_next_move(self.state)
  33. if want_wish == 'H':
  34. while wish is True:
  35. self.player.add_card(deck.draw())
  36. if self.player.score == 21:
  37. self.view.player_won(self.state)
  38. return
  39. elif self.player.score > 21:
  40. self.view.player_lost(self.state)
  41. return
  42. else:
  43. want_wish = view.ask_next_move(self.state)
  44. if want_wish == 'S':
  45. wish = False
  46. self.dealers_choice(deck)
  47. return
  48.  
  49. def hands_of_fate(self, deck: Deck):
  50. """
  51. Both players hand.
  52.  
  53. :param deck:
  54. :return:
  55. """
  56. self.player = Hand()
  57. self.PyCharm = Hand()
  58. self.state = {'dealer': self.PyCharm, 'player': self.player}
  59. self.player.add_card(deck.draw())
  60. self.PyCharm.add_card(deck.draw())
  61. self.player.add_card(deck.draw())
  62. self.PyCharm.add_card(deck.draw())
  63.  
  64. def dealers_choice(self, deck: Deck):
  65. """
  66. Dealer makes his choice.
  67.  
  68. :return:
  69. """
  70. while self.PyCharm.score > self.player.score:
  71. self.PyCharm.add_card(deck.draw())
  72. if self.PyCharm.score > self.player.score and self.PyCharm.score < 22:
  73. self.view.player_lost(self.state)
  74. return
  75. if self.PyCharm.score > self.player.score and self.PyCharm.score > 21:
  76. self.view.player_won(self.state)
  77. return
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement