2016-08-29 3 views
1

Я программирую игровой автомат для школы и не могу заставить машину повторно запускаться после ее завершения. Я относительно новичок и хотел бы получить честную обратную связь. Как я могу запустить свою программу? Это код, с которым я пытаюсь это сделать. Я только что изменил свой код, чтобы выглядеть так.Создание игрового автомата для школы

import random 
import sys 


print "Hi there user, welcome to the amazing poker machine simulator." 
print "Your opening account has in it $1000." 
print "To win a jackpot, three leprachauns must be in a row." 
print "Enter yes or no when prompted to finish or continue the program." 

balance = 1000 
balance == int(balance) 
winnings = 0 
winnings == int(winnings) 

Symbols = ["Leprachaun", "Goldbar", "Pyramid", "Blackcat"] 

# Subroutines: Checking the Bet input and amount 
def betcheck(betamount): 
    if betamount.isdigit() == True: 
     betamount == int(betamount) 
     rightbet = True 
    else: 
     rightbet = False 
     print "Please enter a whole number, no decimals and a bet on or below the balance." 
    return rightbet 

# Limiting the bet 
def betlimit(betamount): 
    if betamount > balance == False: 
     goodlimit = False 
     print "That bet is too high!" 
    else: 
     goodlimit = True 
    return goodlimit 

# Checking the 'Ask' input to play the machine. 
def askinputcheck(answerinput): 
    if answerinput == "Yes" or answerinput == "yes" or answerinput == "y" or answerinput == "No" or answerinput == "no" or answerinput == "n": 
     rightanswerinput = True 
    else: 
     rightanswerinput = False 
     print "This is an incorrect input, please type an appropriate answer in." 
    return rightanswerinput 

# Printing and sorting symbols. 
def spinning(reels): 
    global balance 
    if reelone == "Leprachaun" and reeltwo == "Leprachaun" and reelthree == "Leprachaun": 
     winnings = int(betamount) + int(balance) * 1000 
     print "You won the jackpot! Congragulations! This is how much your account contains $", winnings 
    elif reelone == "Goldbar" and reeltwo == "Goldbar" and reelthree == "Goldbar": 
     winnings = int(betamount) + int(balance) * 500 
     print "You won a considerable return! Awesome! Your balance and wins are $", winnings 
    elif reelone == "Pyramid" and reeltwo == "Pyramid" and reelthree == "Pyramid": 
     winnings = int(betamount) + int(balance) * 250 
     print "You won a good return! Its a conspiracy! This is all of your money total $", winnings 
    elif reelone == "Blackcat" and reeltwo == "Blackcat" and reelthree == "Blackcat": 
     winnings = int(balance) - int(betamount) 
     print "Unfortunately you didn't win anything, bad luck! You rewards are $", winnings 
    else: 
     winnings = int(balance) - int(betamount) 
     print "Bad luck! Maybe next time you'll win! Your remaining cash is $", winnings 
     print winnings 
    return reels 

# If you have no money 
def rebalance(balance):   
    while balance == 0 == True and startagain == True: 
     unbalance = True 
     balance = 1000 
     print "You ran out of money, here is $1000" 
    else: 
     unbalance = False 
     print "You still have money." 
     return unbalance 

# Leads to Bet input check. 
Validbet = False 
while Validbet == False: 
    betamount = raw_input("Please enter amount you wish to bet: ") 
    Validbet = betcheck(betamount) 

betamount == int(betamount) 

# Leads to betlimit 
appropriatelimit = betlimit(betamount) 

# RandomSymbolGen + 3 reels 
reelone = random.sample(["Leprachaun", "Goldbar", "Goldbar", "Pyramid", "Pyramid", "Pyramid", "Blackcat", "Blackcat", "Blackcat", "Blackcat"],1) 
reeltwo = random.sample(["Leprachaun", "Goldbar", "Goldbar", "Pyramid", "Pyramid", "Pyramid", "Blackcat", "Blackcat", "Blackcat", "Blackcat"],1) 
reelthree = random.sample(["Leprachaun", "Goldbar", "Goldbar", "Pyramid", "Pyramid", "Pyramid", "Blackcat", "Blackcat", "Blackcat", "Blackcat"],1) 

reels = [reelone, reeltwo, reelthree] 

slotspin = spinning(reels) 

print reels 

# Leads to Ask input check. (At the bottom due to program order) 
validask = False 
while validask == False: 
    answerinput = raw_input("Would you like to play again?: ") 
    validask = askinputcheck(answerinput) 

# Leads to restart  
startagain = False 
while startagain == False: 
    startagain = answerinput 

while True: 
    if answerinput == "Yes" or answerinput == "yes" or answerinput == "y": 
     startagain = True 
     balance = int(winnings) + int(balance) 
     print "You have $", balance 
     pass 
    elif answerinput == "No" or answerinput == "no" or answerinput == "n": 
     startagain = False 
     balance = winnings 
     print "You ended the game with", balance 
     break 
    else: 
     print "This is an incorrect input, please answer yes or no." 


# Leads to rebalance 
if answerinput == "Yes" or answerinput == "yes" or answerinput == "y" and balance == 0: 
    balance = rebalance(balance) 
+0

Связанные: [? Как я повторно запустить код в Python] (http://stackoverflow.com/q/11459102/1014587) – Mast

+0

Вы бы обычно запустить основную функцию или эквивалент в пределах while и вырваться, если вы не хотите его перезапускать. Не зная, как написана остальная часть вашей программы, трудно сказать больше. Надеюсь, у вас есть основная процедура, которую вы вызываете, чтобы начать свою программу, иначе это будет сложно. – mata

+0

, если вы новичок в программировании, этот код выглядит очень красивым :) – lelloman

ответ

0

Имея свободное время, я изменил ваш код.
Код, который вы поставили, пронизан небольшими кодировками и логическими ошибками. Вам лучше всего использовать команду diff между вашим исходным кодом и кодом ниже, чтобы узнать, где много различий, и нет никакой гарантии, что теперь это ошибка.
Надеюсь, вы не планируете обманывать своих учеников, рутина rebalance - это искривленная работа будущего зайца-акулы. ;)

import random 

print "Hi there user, welcome to the amazing poker machine simulator." 
print "Your opening account has in it $1000." 
print "To win a jackpot, three leprachauns must be in a row." 
print "Enter yes or no when prompted to finish or continue the program." 

balance = 1000 


Symbols = ["Leprachaun", "Goldbar", "Pyramid", "Blackcat"] 

# Subroutines: Checking the Bet input and amount 
def betcheck(betamount): 
    if betamount.isdigit() == True: 
     betamount == int(betamount) 
     rightbet = True 
    else: 
     rightbet = False 
     print "Please enter a whole number, no decimals and a bet on or below the balance." 
    return rightbet 

# Limiting the bet 
def betlimit(betamount): 
    if betamount > balance: 
     goodlimit = balance 
     print "That bet is too high! - bet adjusted to ", goodlimit 
    else: 
     goodlimit = betamount 
    return goodlimit 

# Checking the 'Ask' input to play the machine. 
def askinputcheck(answerinput): 
    if answerinput.lower().startswith('y') or answerinput.lower().startswith("n"): 
     rightanswerinput = True 
    else: 
     rightanswerinput = False 
     print "This is an incorrect input, please type an appropriate answer in." 
    return rightanswerinput 

# Printing and sorting symbols. 
def spinning(reels, betamount): 
    reelone, reeltwo, reelthree = reels[0], reels[1], reels[2] 
    global balance 
    winnings = 0 
    if reelone == "Leprachaun" and reeltwo == "Leprachaun" and reelthree == "Leprachaun": 
     winnings = int(betamount) * 10 + int(balance) 
     print "You won the jackpot! Congragulations! This is how much your account contains $", winnings 
    elif reelone == "Goldbar" and reeltwo == "Goldbar" and reelthree == "Goldbar": 
     winnings = int(betamount) *5 + int(balance) 
     print "You won a considerable return! Awesome! Your balance and wins are $", winnings 
    elif reelone == "Pyramid" and reeltwo == "Pyramid" and reelthree == "Pyramid": 
     winnings = int(betamount) *2 + int(balance) 
     print "You won a good return! Its a conspiracy! This is all of your money total $", winnings 
    elif reelone == "Blackcat" and reeltwo == "Blackcat" and reelthree == "Blackcat": 
     winnings = int(balance) - int(betamount) 
     print "Unfortunately you didn't win anything, bad luck! You rewards are $", winnings 
    else: 
     winnings = int(balance) - int(betamount) 
     print "Bad luck! Maybe next time you'll win! Your remaining cash is $", winnings 
    balance = winnings 
    return reels 

# If you have no money 
def rebalance(startagain): 
    global balance 
    if balance < 1 and startagain == True: 
     unbalance = True 
     balance = 1000 
     print "You ran out of money, here is $1000" 
    else: 
     unbalance = False 
     print "You still have money." 
    return unbalance 

# Leads to Bet input check. 
def my_mainloop(): 
    global balance 
    while True: 
     Validbet = False 
     while Validbet == False: 
      betamount = raw_input("Please enter amount you wish to bet: ") 
      Validbet = betcheck(betamount) 

     betamount = int(betamount) 
     # Leads to betlimit 
     betamount = betlimit(betamount) 

     # RandomSymbolGen + 3 reels 
     if betamount > 0: 
      reelone = random.sample(["Leprachaun", "Goldbar", "Goldbar", "Pyramid", "Pyramid", "Pyramid", "Blackcat", "Blackcat", "Blackcat", "Blackcat"],1) 
      reeltwo = random.sample(["Leprachaun", "Goldbar", "Goldbar", "Pyramid", "Pyramid", "Pyramid", "Blackcat", "Blackcat", "Blackcat", "Blackcat"],1) 
      reelthree = random.sample(["Leprachaun", "Goldbar", "Goldbar", "Pyramid", "Pyramid", "Pyramid", "Blackcat", "Blackcat", "Blackcat", "Blackcat"],1) 

      reels = [reelone, reeltwo, reelthree] 
      print "\n",reels,"\n" 
      slotspin = spinning(reels, betamount) 


     # Leads to Ask input check. (At the bottom due to program order) 
     validask = False 
     while validask == False: 
      answerinput = raw_input("\nWould you like to play again?: ") 
      validask = askinputcheck(answerinput) 

     if answerinput.lower().startswith("y"): 
      startagain = True 
      print "You have $", balance 
     elif answerinput.lower().startswith("n"): 
      startagain = False 
      print "You ended the game with", balance 
      break 
     else: 
      print "This is an incorrect input, please answer yes or no." 

      # Leads to rebalance 
     if answerinput.lower().startswith("y") and balance < 1: 
      rebalance(startagain) 

if __name__ == "__main__": 
    my_mainloop()