Advertisement
oanap123

Activity3

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