Advertisement
oanap123

Activity3

Jul 11th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 9.10 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.     name = ''
  10.  
  11.     restore()
  12.  
  13.     if name != "" and money != -1:
  14.         resume = input("Resume saved game '" + name + "'? (y/n) ")
  15.         if resume == 'y':
  16.             print(name + "has $" + money)
  17.             print()
  18.  
  19.             #Run game and loop if the user wants to keep playing
  20.             while play_again_counter == 0:
  21.                 bet = input_bet(bet, money)
  22.                 if bet == 0:
  23.                     print("Player has quit")
  24.                     save(name, money)
  25.                     exit()
  26.                 else:
  27.                     play_again_counter = 0
  28.                 winnings = play_hand(name, bet)
  29.                 money += winnings
  30.                 print()
  31.                 print(name + " has $" + str(money))
  32.                 print()
  33.  
  34.         else:
  35.             #Get user's name and print out starting value
  36.             name = input("Name? ")
  37.             print(name + " has $1,000")
  38.             print()
  39.  
  40.             #Run game and loop if the user wants to keep playing
  41.             while play_again_counter == 0:
  42.                 bet = input_bet(bet, money)
  43.                 if bet == 0:
  44.                     print("Player has quit")
  45.                     save(name, money)
  46.                     exit()
  47.                 else:
  48.                     play_again_counter = 0
  49.                 winnings = play_hand(name, bet)
  50.                 money += winnings
  51.                 print()
  52.                 print(name + " has $" + str(money))
  53.                 print()
  54.  
  55.     else:
  56.         #Get user's name and print out starting value
  57.         name = input("Name? ")
  58.         print(name + " has $1,000")
  59.         print()
  60.  
  61.         #Run game and loop if the user wants to keep playing
  62.         while play_again_counter == 0:
  63.             bet = input_bet(bet, money)
  64.             if bet == 0:
  65.                 print("Player has quit")
  66.                 save(name, money)
  67.                 exit()
  68.             else:
  69.                 play_again_counter = 0
  70.             winnings = play_hand(name, bet)
  71.             money += winnings
  72.             print()
  73.             print(name + " has $" + str(money))
  74.             print()
  75.  
  76.  
  77. def save(name, money):
  78.     save_info = open('blackjack.save', 'w')
  79.  
  80.     save_info.write(str(name) + '\n')
  81.     save_info.write(str(money) + '\n')
  82.  
  83.     save_info.close()
  84.  
  85.  
  86. def restore():
  87.     try:
  88.         read_info = open('blackjack.save', 'r')
  89.  
  90.         #Read the lines of text
  91.         name_in_file = read_info.readline()
  92.         money_in_file = read_info.readline()
  93.  
  94.         #Strip \n from the text lines
  95.         name = name_in_file.rstrip('\n')
  96.         money = money_in_file.rstrip('\n')
  97.  
  98.     except FileNotFoundError:
  99.         name = ""
  100.         money = -1
  101.  
  102.     print(name)
  103.     print(money)
  104.  
  105.     return name, money
  106.  
  107.  
  108. def input_bet(bet, money):
  109.     while True:
  110.         #Ask for bet
  111.         bet_check = input("Bet? (0 to quit, Enter to stay at $" + str(bet) + ") ")
  112.  
  113.         #Check if player hit Enter
  114.         if bet_check == "":
  115.             #Check whether or not player has enough money in account to continue
  116.             #with the same bet
  117.             if bet < money:
  118.                 break
  119.             elif bet > money:
  120.                 print("You cannot bet more than $" + money)
  121.  
  122.         else:
  123.             #Check if input was integer
  124.             try:
  125.                 bet_check = int(bet_check)
  126.                 #Check if they want to quit
  127.                 if bet_check == 0:
  128.                     return 0
  129.                 #Check that bet check is not negative
  130.                 elif bet_check < 0:
  131.                     print("You cannot bet a negative amount")
  132.                 #Check that bet is less than amount in account
  133.                 else:
  134.                     if bet_check > money:
  135.                         print("You cannot bet more than $" + str(money))
  136.                     else:
  137.                         bet = bet_check
  138.                         break
  139.             #If input was not an integer
  140.             except ValueError:
  141.                 #Output error if input was a float
  142.                 try:
  143.                     bet_check = float(bet_check)
  144.                     print("You must bet a whole number")
  145.                 #Output error if input was not a number
  146.                 except ValueError:
  147.                     print("You must type a number")
  148.  
  149.     return bet
  150.  
  151.  
  152. def play_hand(name, bet):
  153.     #Deal intial cards for dealer and player
  154.     dealer_num = random.randint(2, 11)
  155.     print("Dealer received card of value " + str(dealer_num))
  156.     player_num1 = random.randint(2, 11)
  157.     print(name + " received card of value " + str(player_num1))
  158.     player_num2 = random.randint(2, 11)
  159.     print(name + " received card of value " + str(player_num2))
  160.  
  161.     #Calculate totals for dealer and player
  162.     dealer_total = dealer_num
  163.     print("Dealer total: " + str(dealer_total))
  164.     player_total = player_num1 + player_num2
  165.     print(name + " total: " + str(player_total))
  166.  
  167.     #Initialize counter variables
  168.     dealer_counter = 0
  169.     player_counter = 0
  170.  
  171.     #Check if player total is 21
  172.     if player_total == 21:
  173.         #Continue picking cards for dealer if player gets 21
  174.         while dealer_counter == 0:
  175.             dealer_card = random.randint(2, 11)
  176.             dealer_total += dealer_card
  177.             print("Dealer received card of value " + str(dealer_card))
  178.             print("Dealer total: " + str(dealer_total))
  179.             print(name + " total: " + str(player_total))
  180.             print()
  181.             if dealer_total >= 17:
  182.                 dealer_counter = 1
  183.         #Output results for dealer ending less than 21
  184.         if dealer_total < 21:
  185.             print(name + " wins")
  186.             winnings = bet
  187.             return winnings
  188.         #Output results for dealer tie with player
  189.         elif dealer_total == 21:
  190.             print("Push")
  191.             winnings = 0
  192.             return winnings
  193.         #Output results for dealer bust
  194.         else:
  195.             print("Dealer bust")
  196.             winnings = bet
  197.             return winnings
  198.  
  199.     #Check if player total is less than 21
  200.     elif player_total < 21:
  201.         #Ask player what move they want to make
  202.         while player_counter == 0:
  203.             move = input("Move? (h/s) ")
  204.             print()
  205.             #Continue dealing cards to player and outputting results for hit
  206.             if move == 'h':
  207.                 player_card = random.randint(2, 11)
  208.                 player_total += player_card
  209.                 print(name + " received card of value " + str(player_card))
  210.                 print("Dealer total: " + str(dealer_total))
  211.                 print(name + " total: " + str(player_total))
  212.                 print()
  213.                 if player_total >= 21:
  214.                     player_counter = 1
  215.             #Stop dealing cards to player for stay
  216.             elif move == 's':
  217.                 player_counter = 1
  218.  
  219.         #Check if player does not bust
  220.         if player_total <= 21:
  221.             #Continue picking cards for dealer if player stays
  222.             while dealer_counter == 0:
  223.                 dealer_card = random.randint(2, 11)
  224.                 dealer_total += dealer_card
  225.                 print("Dealer received card of value " + str(dealer_card))
  226.                 print("Dealer total: " + str(dealer_total))
  227.                 print(name + " total: " + str(player_total))
  228.                 print()
  229.  
  230.                 #Pick cards for dealer while his total is less than 17
  231.                 if dealer_total >= 17:
  232.                     dealer_counter = 1
  233.  
  234.             #Check if dealer ends less than 21
  235.             if dealer_total < 21:
  236.                 #Compare dealer total to player total and determine winner
  237.                 if dealer_total < player_total:
  238.                     print(name + " wins")
  239.                     winnings = bet
  240.                     return winnings
  241.                 elif dealer_total > player_total:
  242.                     print("Dealer wins")
  243.                     winnings = -bet
  244.                     return winnings
  245.                 else:
  246.                     print("Push")
  247.                     winnings = 0
  248.                     return winnings
  249.             #Check if dealer ends at 21
  250.             elif dealer_total == 21:
  251.                 #Compare dealer total to player total and determine winner
  252.                 if dealer_total == player_total:
  253.                     print("Push")
  254.                     winnings = 0
  255.                     return winnings
  256.                 else:
  257.                     print("Dealer wins")
  258.                     winnings = -bet
  259.                     return winnings
  260.             #Check if dealer busts
  261.             else:
  262.                 print("Dealer bust")
  263.                 winnings = bet
  264.                 return winnings
  265.  
  266.         #Check if player busts after move
  267.         elif player_total > 21:
  268.             print(name + " bust")
  269.             winnings = -bet
  270.             return winnings
  271.  
  272.     #Check if player busts after initial pick
  273.     else:
  274.         print(name + " bust")
  275.         winnings = -bet
  276.         return winnings
  277.  
  278. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement