У меня проблемы с возвратом функции в Python 3 для основной азартной игры - PullRequest
1 голос
/ 29 октября 2019

Вот та часть, которая, как мне кажется, вызывает проблемы.

def update():
       player1_money=player1()
       player2_money=player2()
       player2_money=player2_money
       player1_money=player1_money
       return player1_money
       return player2_money
    update()       

ИЛИ

else:
                print("                         Sorry! Better luck next time.")
                player1_money=player1_money-bet1
                print (player1_name + "'s balance is now " , player1_money)
                break
            return (player1_money)
            return player1

Вот мой код для справки :

from random import *
import time

print("This a game of chance. The computer chooses a random numeber from 1 to 30. ")
print("")
print("""You can bet on any number from 0 to 30.You will be given £100 to start with\n
and you can bet any  amount you want.\n
Here are the following condition for you to win.\n
If the random number you choose is also choosen by the computer and the number is:\n
Option 1.An even number you get 2x  money back.\n 
Option 2.A multiple of 10 you get 3x  money back.\n 
Option 3.A prime number you get 5x  money back.\n 
Option 4.Is below 5 you get a 2x bonus.""")

print("")
player1_name=input("                          Enter player one's name: ")
player2_name=input("                          Enter player two's name: ")



def player1():

   player1_money=100
   print(player1_name +"'s turn: ")
   print("")
   print(player1_name +"'s balance is now", player1_money)                   
   comp=randint(1,30)




   while True:

       try:                
            bet1=int(input("Enter the amount you want to bet: "))        
            if bet1>100 or bet1<1:
               print("                                            Invalid bet")
               continue

            user1=int(input("Please enter a number between 1 to 30: "))
            if user1>30 or user1<1:
               print("                       Invalid number")
               continue


            if user1%2 == 0 and comp%2==0 and comp==user1:
                print("You get 2x  money back.")
                player1_money = (bet1*2) + player1_money
                print("                      CONGRATS! Your lucky number matches option 1")
                print ("Player one's balance is now "  , player1_money)

                break

            if  user1%10==0 and comp%10==0 and comp==user1:
                print("You get 3x  money back.")
                player1_money = (bet1*3) + player1_money
                print("CONGRATS! Your lucky number matches option 2")
                print ("Player one's balance is now " , player1_money)

                break

            if user1>1 and user1<5:
                print("                      You get a 2x bonus.")
                player1_money = (bet1*2) + player1_money
                print("                      CONGRATS! Your lucky number matches option 3")
                print ("Player one's balance is now " , player1_money)
                break

            for i in range (2, user1):
                     if (user1%i)==0 and comp==user1:
                         print("                            You get 5x  money back.")
                         player1_money = (bet1*5) + player1_money
                         print("                   CONGRATS! Your lucky number matches option 4")
                         print ("Player one's balance is now " , player1_money)

                         break
            else:
                print("                         Sorry! Better luck next time.")
                player1_money=player1_money-bet1
                print (player1_name + "'s balance is now " , player1_money)
                break
            return (player1_money)
            return player1




       except:
           print("                        OOPS! Something went wrong.")
           cont1=input("Do you wish to restart?(Y or N): ").lower()
           while True:
               if cont1==("y"):
                  player1()
               elif cont1==("n"):
                    print("             Sorry!Closing game...")
                    time.sleep(2)
                    quit()
               else:
                  print("                 Invalid response!")



def update():
   player1_money=player1()
   player2_money=player2()
   player2_money=player2_money
   player1_money=player1_money
   return player1_money
   return player2_money
update()                






#--------------------------------------------------------------------------------------------------------------------------------------------



def player2():



   print("")
   print("==========================================================")
   print("")
   player2_money=100
   print(player2_name +"'s turn: ")
   print(player2_name +"'s balance is now", player2_money)



   comp=randint(1,30)

   while True:


       try:           



            bet2=int(input("Enter the amount you want to bet: "))        
            if bet2>100 or bet2<2:
               print("                       Invalid bet")
               continue

            user2=int(input("Please enter a number between 1 to 30: "))
            if user2>30 or user2<1:
               print("Invalid number")
               continue


            if user2%2 == 0 and comp%2==0 and comp==user2:
                print("You get 2x  money back.")
                player2_money = (bet2*2) + player2_money
                print("                      CONGRATS! Your lucky number matches option 1")
                print ("Player one's balance is now "  , player2_money)

                break

            if  user2%10==0 and comp%10==0 and comp==user2:
                print("You get 3x  money back.")
                player2_money = (bet2*3) + player2_money
                print("                   CONGRATS! Your lucky number matches option 2")
                print ("Player one's balance is now " , player2_money)

                break

            if user2>1 and user2<5:
                print("                      You get a 2x bonus.")
                player2_money = (bet2*2) + player2_money
                print("                      CONGRATS! Your lucky number matches option 3")
                print ("Player one's balance is now " , player2_money)

                break

            for i in range (2, user2):
                     if (user2%i)==0 and comp==user2:
                         print("You get 5x  money back.")
                         player2_money = (bet2*5) + player2_money
                         print("                   CONGRATS! Your lucky number matches option 4")
                         print ("Player one's balance is now " , player2_money)

                         break
            else:
                print("                Sorry! Better luck next time.")
                player2_money=player2_money-bet2
                print (player2_name + "'s balance is now " , player2_money)
                break
            return (player2_money)
            return player2





       except:
           print("OOPS! Something went wrong.")
           cont=input("Do you wish to restart?(Y or N): ").lower()
           while True:
               if cont==("y"):
                  player1()
                  break
               elif cont==("n"):
                  print("")
                  print("                          Sorry!Closing game...")
                  time.sleep(2)
                  quit()
               else:
                  print("                          Invalid response!")


def update():
   player1_money=player1()
   player2_money=player2()
   player2_money=player2_money
   player1_money=player1_money
   return player1_money
   return player2_money


player1()
player2()


while True:
   res=input("Do you want to continue?(Y/N): ").lower()
   if res==("y"):
      update()
      player1()
   elif res==("n"):
      print("                       Hope you enjoyed the game")
      time.sleep(2)
      quit()
   else:
      print("                       Invalid response!")

Моя проблема:

Когда я запускаю код, он работает просто отлично. Однако, когда он возвращается к игроку 1 после однократного запуска, переменная player1_money не обновляется, как я хочу.

Мой вопрос:

  1. Как я могуобновите код, чтобы при следующем запуске обновлялась переменная player1_money.

  2. Есть ли другой способ написания этой программы, так что требуется меньше кода или он эффективен влюбой возможный способ?

...