Advertisement
oanap123

Python Project 2

Jul 4th, 2018
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.39 KB | None | 0 0
  1. import random
  2.  
  3. def main():
  4.     #Initialize variables
  5.     play_again_counter = 0
  6.     winnings = 0
  7.     bet = 25
  8.     money = 1000
  9.  
  10.     #Get user's name and print out starting value
  11.     name = input("Name? ")
  12.     print(name + " has $1,000")
  13.     print()
  14.  
  15.     input_bet(bet, money)
  16.  
  17.     #Output updated account total for player
  18.     while play_again_counter == 0:
  19.         winnings = play_hand(name)
  20.         money += winnings
  21.         print()
  22.         print(name + " has $" + str(money))
  23.         print()
  24.  
  25.         #Ask player if they want to play again
  26.         check = input("Play again? (y/n) ")
  27.         print()
  28.         if check == 'y':
  29.             play_again_counter = 0
  30.         else:
  31.             play_again_counter = 1
  32.  
  33.  
  34. def input_bet(bet, money):
  35.     #Ask for bet
  36.     bet_check = input("Bet? (0 to quit, Enter to stay at $25) ")
  37.  
  38.     #Check that bet is a whole number
  39.     try:
  40.         bet_check % 1 == 0
  41.     except TypeError:
  42.         print("You must bet a whole number")
  43.  
  44.     #Check that bet is less than amount in account
  45.     try:
  46.         bet_check <= money
  47.     except ValueError:
  48.         print("You cannot bet more than $" + money)
  49.  
  50.     #Check that bet is not negative
  51.     try:
  52.         bet_check >= 0
  53.     except ValueError:
  54.         print("You cannot bet a negative amount")
  55.  
  56.     #Quit game if player inputs 0
  57.     if bet_check == 0:
  58.         print("Player has quit")
  59.         break
  60.     #Check if they have enough money in the account to bet the same amount
  61.     elif bet_check == "":
  62.         if bet_check < money:
  63.             bet_check = bet
  64.         elif bet_check > money:
  65.             print("You cannot bet more than $" + money)
  66.  
  67.  
  68. def play_hand(name):
  69.     #Deal intial cards for dealer and player
  70.     dealer_num = random.randint(2, 11)
  71.     print("Dealer received card of value " + str(dealer_num))
  72.     player_num1 = random.randint(2, 11)
  73.     print(name + " received card of value " + str(player_num1))
  74.     player_num2 = random.randint(2, 11)
  75.     print(name + " received card of value " + str(player_num2))
  76.  
  77.     #Calculate totals for dealer and player
  78.     dealer_total = dealer_num
  79.     print("Dealer total: " + str(dealer_total))
  80.     player_total = player_num1 + player_num2
  81.     print(name + " total: " + str(player_total))
  82.  
  83.     #Initialize counter variables
  84.     dealer_counter = 0
  85.     player_counter = 0
  86.  
  87.     #Check if player total is 21
  88.     if player_total == 21:
  89.         #Continue picking cards for dealer if player gets 21
  90.         while dealer_counter == 0:
  91.             dealer_card = random.randint(2, 11)
  92.             dealer_total += dealer_card
  93.             print("Dealer received card of value " + str(dealer_card))
  94.             print("Dealer total: " + str(dealer_total))
  95.             print(name + " total: " + str(player_total))
  96.             print()
  97.             if dealer_total >= 17:
  98.                 dealer_counter = 1
  99.         #Output results for dealer ending less than 21
  100.         if dealer_total < 21:
  101.             print(name + " wins")
  102.             winnings = 25
  103.             return winnings
  104.         #Output results for dealer tie with player
  105.         elif dealer_total == 21:
  106.             print("Push")
  107.             winnings = 0
  108.             return winnings
  109.         #Output results for dealer bust
  110.         else:
  111.             print("Dealer bust")
  112.             winnings = 25
  113.             return winnings
  114.  
  115.     #Check if player total is less than 21
  116.     elif player_total < 21:
  117.         #Ask player what move they want to make
  118.         while player_counter == 0:
  119.             move = input("Move? (h/s) ")
  120.             print()
  121.             #Continue dealing cards to player and outputting results for hit
  122.             if move == 'h':
  123.                 player_card = random.randint(2, 11)
  124.                 player_total += player_card
  125.                 print(name + " received card of value " + str(player_card))
  126.                 print("Dealer total: " + str(dealer_total))
  127.                 print(name + " total: " + str(player_total))
  128.                 print()
  129.                 if player_total >= 21:
  130.                     player_counter = 1
  131.             #Stop dealing cards to player for stay
  132.             elif move == 's':
  133.                 player_counter = 1
  134.  
  135.         #Check if player does not bust
  136.         if player_total <= 21:
  137.             #Continue picking cards for dealer if player stays
  138.             while dealer_counter == 0:
  139.                 dealer_card = random.randint(2, 11)
  140.                 dealer_total += dealer_card
  141.                 print("Dealer received card of value " + str(dealer_card))
  142.                 print("Dealer total: " + str(dealer_total))
  143.                 print(name + " total: " + str(player_total))
  144.                 print()
  145.  
  146.                 #Pick cards for dealer until his total is less than 17
  147.                 if dealer_total >= 17:
  148.                     dealer_counter = 1
  149.                 if dealer_total > player_total:
  150.                     dealer_counter = 1
  151.             #Check if dealer ends less than 21
  152.             if dealer_total < 21:
  153.                 #Compare dealer total to player total and determine winner
  154.                 if dealer_total < player_total:
  155.                     print(name + " wins")
  156.                     winnings = 25
  157.                     return winnings
  158.                 elif dealer_total > player_total:
  159.                     print("Dealer wins")
  160.                     winnings = -25
  161.                     return winnings
  162.                 else:
  163.                     print("Push")
  164.                     winnings = 0
  165.                     return winnings
  166.             #Check if dealer ends at 21
  167.             elif dealer_total == 21:
  168.                 #Compare dealer total to player total and determine winner
  169.                 if dealer_total == player_total:
  170.                     print("Push")
  171.                     winnings = 0
  172.                     return winnings
  173.                 else:
  174.                     print("Dealer wins")
  175.                     winnings = -25
  176.                     return winnings
  177.             #Check if dealer busts
  178.             else:
  179.                 print("Dealer bust")
  180.                 winnings = 25
  181.                 return winnings
  182.  
  183.         #Check if player busts after move
  184.         elif player_total > 21:
  185.             print(name + " bust")
  186.             winnings = -25
  187.             return winnings
  188.  
  189.     #Check if player busts after initial pick
  190.     else:
  191.         print(name + " bust")
  192.         winnings = -25
  193.         return winnings
  194.  
  195. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement