Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2020
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.24 KB | None | 0 0
  1. from random import shuffle
  2. import time
  3.  
  4. class Card:
  5. suits = ["spades","hearts","diamonds","clubs"]
  6. values = [None, None, "2","3","4","5","6","7","8","9",
  7. "10","Jack","Queen","King","Ace"]
  8.  
  9. def __init__(self, value, suit):
  10. # suit and value should be integers
  11.  
  12. self.value = value
  13. self.suit = suit
  14.  
  15. if self.value == 1:
  16. self.value = 11
  17.  
  18. elif self.value > 10:
  19. self.value = 10
  20.  
  21.  
  22. def __repr__(self):
  23. return self.values[self.value] + " of " + self.suits[self.suit]
  24.  
  25. class Deck:
  26.  
  27. def __init__(self):
  28. self.cards = []
  29. for i in range(2,15):
  30. for j in range(4):
  31. self.cards.append(Card(i, j))
  32. shuffle(self.cards)
  33.  
  34. def remove_card(self):
  35. if len(self.cards) == 0:
  36. return
  37.  
  38. return self.cards.pop()
  39.  
  40.  
  41. class Game:
  42.  
  43. def __init__(self):
  44. self.deck = Deck()
  45. n = input("What's your name? ")
  46. self.player = Mob(n)
  47.  
  48. def ask_hit(self):
  49. while True:
  50. hit = input("Would you like to hit? Type yes or no. ")
  51. if hit == "yes":
  52. p1_newcard = self.deck.remove_card()
  53. print("Your card is {}" .format(p1_newcard))
  54. return p1_newcard.value
  55. if hit == "no":
  56. self.player.fold = True
  57. return False
  58.  
  59. def dealer_draw(self, p1, p2, bet):
  60. p2_newcard = self.deck.remove_card()
  61. print("Dealer draw's a {}" .format(p2_newcard))
  62. p2 += p2_newcard.value
  63. if p2 < 17:
  64. self.check_play(p1, p2, bet)
  65. elif p2 > 21:
  66. print("Dealer bust, you win {} chips!" .format(self.bet))
  67. self.player.chips += self.bet
  68. self.bet_()
  69. else:
  70. self.check_play(p1, p2, bet)
  71.  
  72. def check_play(self, p1, p2, bet):
  73. self.bet = int(bet)
  74.  
  75. if p1 > 21:
  76. print("You bust! You lose {} chips" .format(self.bet))
  77. self.player.chips -= self.bet
  78. self.bet_()
  79.  
  80. elif p1 == 21:
  81. self.bet = self.bet * 2
  82. print("Blackjack! You win {} chips!" .format(self.bet))
  83. self.player.chips += self.bet
  84. self.bet_()
  85.  
  86. elif p2 == 21:
  87. print("Blackjack! You lose {} chips." .format(self.bet))
  88. self.player.chips -= self.bet
  89. self.bet_()
  90.  
  91. elif p1 == p2:
  92. print("Push!")
  93. self.bet_()
  94.  
  95. elif self.player.fold is False:
  96. hit = self.ask_hit()
  97. if hit:
  98. p1 += hit
  99. self.check_play(p1, p2, bet)
  100. elif hit is False:
  101. self.check_play(p1, p2, bet)
  102. elif p2 > p1:
  103. if p2 >= 17:
  104. print("You lose {} chips." .format(self.bet))
  105. self.player.chips -= self.bet
  106. self.bet_()
  107.  
  108. elif p2 < 17:
  109. self.dealer_draw(p1, p2, bet)
  110. self.check_play(p1, p2, bet)
  111.  
  112. elif p1 > p2:
  113.  
  114. print("You win {} chips!" .format(self.bet))
  115. self.player.chips += self.bet
  116. self.bet_()
  117.  
  118.  
  119.  
  120. def start(self):
  121.  
  122. print("Welcome to Blackjack!")
  123. cards = self.deck.cards
  124. self.bet_()
  125.  
  126.  
  127. def bet_(self):
  128. if self.player.chips > 0:
  129.  
  130. bet = input("You have {} chips {}! What's your bet? " .format(self.player.chips, self.player.name))
  131.  
  132. self.player.fold = False
  133.  
  134. if bet.isdigit():
  135. if self.player.chips >= int(bet):
  136.  
  137. p1_card1 = self.deck.remove_card()
  138. p2_card1 = self.deck.remove_card()
  139. p1_card2 = self.deck.remove_card()
  140. p2_card2 = self.deck.remove_card()
  141.  
  142. print("You bet {}" .format(bet))
  143. print("Your first card is {}" .format(p1_card1))
  144. time.sleep(1)
  145. print("Dealer's first card is {}" .format(p2_card1))
  146. time.sleep(1)
  147. print("Your second card is {}" .format(p1_card2))
  148. time.sleep(1)
  149. print("Dealer's second card is {}" .format(p2_card2))
  150.  
  151. p1_total = p1_card1.value + p1_card2.value
  152. p2_total = p2_card1.value + p2_card2.value
  153.  
  154. print("You have {}" .format(p1_total))
  155. print("Dealer has {}" .format(p2_total))
  156.  
  157. self.check_play(p1_total, p2_total, bet)
  158.  
  159. else:
  160. print("You don't have that many chips.")
  161. self.bet_()
  162.  
  163. else:
  164. print("Must print an integer")
  165. self.bet_()
  166. else:
  167. print("All out of chips!")
  168.  
  169.  
  170.  
  171.  
  172. class Mob:
  173. chips = 10
  174. fold = False
  175.  
  176. def __init__(self, name):
  177. self.name = name
  178.  
  179.  
  180.  
  181.  
  182. game = Game()
  183. game.start()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement