所以我着手做一個簡單的hang子手遊戲,一切正常,整個代碼都可以工作,但它缺乏在遊戲結束時允許用戶重放的功能。因此,我着手將所有編寫的代碼放入各種函數中。所以我可以在需要時調用函數(我認爲這是允許重放能力的最合理的方法)。隨後出現了各種問題,但其中一個突出。我該如何編寫一個可以從另一個def調用變量的程序?
罪魁禍首(我認爲)是,我不能順利拿到價值在全球範圍內更新。我在網站上閱讀過類似的問題,但無法成功地適應我的情況。我有一個示例代碼顯示正是我的意思:
def GameMode():
choice = input('Play alone or play with friends? A F : ')
choice = choice.upper()
if choice == 'A':
wordslotmachine = ['stand','emerald','splash']
word = random.choice(wordslotmachine)
word = word.upper()
Rules()
elif choice == 'F':
word = input('Enter your word for your friends to guess: ')
word = word.upper()
Rules()
else:
choice = input('Please enter A or F: ')
choice = choice.upper()
我需要的程序記住什麼的「字」的值,並在另一種方法用這個詞(這個方法是由另一種方法運行顯示下面的「規則()」):
def MainGame():
guesses = ''
turns = 10
underscore = 0
seconds = 1
checker = 0
cheaterchance = 5
while turns > 0: #check if the turns are more than zero
for char in word: # for every character in secret_word
if char in guesses: # see if the character is in the players guess
print(char+' ', end='')
else:
print('_ ', end='')# if not found, print a dash
underscore += 1
if underscore == 0:
print(': You got it!')
Wait()
NewGame()
break
#A block of if's to check for cheating
if guess not in word:
print('Your guesses so far: '+guesses)
turns -= 1
if turns == 0:
break
else:
print('')
print('Try again. You have',turns,'more guesses')
print('Delayed chance to answer by',seconds,'seconds')
counter = 1
print(0,'.. ', end='')
while counter < seconds:
time.sleep(1)
print(counter,'.. ', end='')
counter += 1
if counter == seconds:
time.sleep(1)
print(counter,'.. done!', end='')
print('')
print('')
seconds += 1
underscore = 0
else:
print('Your guesses so far: '+guesses)
underscore = 0
#The else portion of the code to check for cheating
我試過在函數外定義「word」。這樣做並不能解決問題,GameMode()不會成功更新「word」的值。而且,無論函數外部定義的「單詞」的值是否會被MainGame()調用和使用。但是,這樣做會出現另一個問題
有鑑於此,以前工作的代碼(它成功地讀取輸入正確更新遊戲狀態),現在不工作。即使用戶輸入正確的字母,程序也會將輸入讀取爲不正確。
這是到目前爲止,我還遇到了,還沒有找到一種方法來克服他們的兩個問題。
注:我已經成功地創建了一個方法,使遊戲回放,能夠通過將整個原始代碼(無功能),while循環中。不過,我仍然非常想知道如何讓代碼使用函數來工作。
編輯:這是規則()函數:
def Rules():
#Bunch of prints to explain the rules
MainGame()
print('Start guessing...')
等待()僅僅是一個帶有倒計時延遲功能。
這些被調用的函數,而不是 「定義」。 –
如果它解決了你的問題,請接受我的答案 – Illusionist