2015-08-27 141 views
0

我希望這個程序允許用戶在他們通過或退出時重新啓動遊戲,如果他們不想再次玩遊戲,但我不知道該怎麼辦它。你能幫我解決這個問題嗎? 如果我輸錯了下面的代碼,請糾正我。 下面是我用Python編寫遊戲代碼:允許用戶重新啓動或退出的Python程序

import random 

secret_number = random.randrange(1, 101) 

guess = 0 
tries = 0 

while guess != secret_number: 
    guess = int(input("Guess a number: ")) 
    tries = tries + 1 

    if guess < secret_number: 
     print("Too low!") 

    elif guess > secret_number: 
     print("Too high!") 

    else: 
     print("You got it!") 
     print("Number of tries: ", tries) 

    userInput = input("Enter 'R' to restart or 'X' to exit").capitalize() 

    if userInput == "R": 
     #code to restart the game goes here 

    elif gameReply == "X": 
     #code to exit the game goes here 

回答

1
  1. 你的縮進是錯誤的。
  2. 您可以嘗試使用較小的random.randrange(),而您是測試您的程序。
  3. 遊戲結束後,如果用戶輸入hello,您想要做什麼?在以下程序中,如果不是xX,則基本上會繼續並再次播放。

這裏是固定的版本:

import random 
import sys 

while True: # outer game loop 

    print('Welcome to the game.') 

    secret_number = random.randrange(1, 5) 

    guess = 0 
    tries = 0 

    while guess != secret_number: 
     guess = int(input("Guess a number: ")) 
     tries = tries + 1 

     if guess < secret_number: 
      print("Too low!") 

     elif guess > secret_number: 
      print("Too high!") 

     else: 
      print("You got it!") 
      print("Number of tries: ", tries) 

    userInput = input("Enter 'R' to restart or 'X' to exit").capitalize() 

    if userInput == "X": 
     print('Goodbye.') 
     sys.exit(-1) # exits the program 
+0

我佩服你的代碼,我試了一下,它確實工作得很完美,但有一些東西我不明白:1.是你導入的一個叫做「sys」的模塊;這個模塊用於什麼? 2.你正在使用的外部循環看起來很酷,但我不明白那裏發生了什麼,爲什麼說「While True:」。 3.在程序結束時,你現在使用這個代碼「sys.exit(-1)」,我知道代碼應該退出程序,但爲什麼它的參數是(-1)。如果你讓我瞭解我不瞭解的內容,我會很高興。提前致謝。 –

+0

@NathanSiafa歡迎您。 1. ['sys'](https://docs.python.org/2/library/sys.html#module-sys)是系統特定參數和函數的模塊。 2.外循環是所謂的遊戲循環,請參閱[本文](http://gamedev.stackexchange.com/questions/651/tips-for-writing-the-main-game-loop)。 3.其實我現在認識到使用['sys.exit()'](https://docs.python.org/2/library/sys.html#sys.exit)(不帶-1)在這裏會更好。你給sys.exit()的參數基本上是爲了調試等目的。 – Sait

-1

您可以使用sys.exit()來停止腳本和包裝你的代碼放到一個方法,這樣你就可以當用戶想重新啓動再次調用它。另外,使用raw_input而不是輸入作爲輸入需要Python代碼。

例如:

import random 
import sys 

def my_game(): 
    secret_number = random.randrange(1, 101) 

    guess = 0 
    tries = 0 

    while guess != secret_number: 
     guess = int(input("Guess a number: ")) 
     tries = tries + 1 

     if guess < secret_number: 
      print("Too low!") 

     elif guess > secret_number: 
      print("Too high!") 

     else: 
      print("You got it!") 
      print("Number of tries: ", tries) 

     userInput = raw_input("Enter 'R' to restart or 'X' to exit").capitalize() 

     if userInput == "R": 
      my_game() 

     elif userInput == "X": 
      sys.exit() 

my_game() 
+0

縮進在這裏是錯誤的,因爲print說「嘗試次數」,在這個版本中沒有意義。 – Sait

+0

@Sait請糾正我 - 縮進錯在哪裏?每次用戶輸入「R」時,嘗試的次數都會重置,並在每個循環處遞增。 – mongjong

0

重新開始比賽:嗯,你可以聲明初始化遊戲的功能,然後調用它,如果你想重新開始。

退出:

sys.exit()

我已經編寫了一個類似的遊戲:你可以看看它HERE。這是我的第一個Python代碼

0

對於重新啓動,您可以設置嘗試零和continue,因爲你在一個循環。

if userInput == "R": 
    tries = 0 
    continue 

對於退出,sys.exit()是贏家。

elif gameReply == "X": 
    sys.exit() 
+0

有邏輯但玩家只允許猜一次 –

相關問題