Advertisement
Alekal

Untitled

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