2017-04-23 80 views
0

我正在嘗試創建一個可以選擇想要成爲哪個角色的蛇遊戲。我的遊戲中有默認的角色是goomba。有一個「角色」屏幕,從那裏,我想能夠選擇我想要與按鈕的角色。我曾嘗試做無法在pygame中創建不同的遊戲角色

elif currentchar == "mario": 
      charU = pygame.image.load('mario up') 
      charD = pygame.image.load('mario down') 
      charL = pygame.image.load('mario left') 
      charR = pygame.image.load('mario right') 
      gameLoop() 

但它出現了「NameError:name'currentchar'未定義」。如果我定義它,我不知道該怎麼做。 完整的代碼可以在這裏找到: https://pastebin.com/7gtvdf8E 任何幫助表示讚賞。 預先感謝您。

編輯:哎呀我粘貼之前有點修補,忘記改變它。這裏是真正的pastebin https://pastebin.com/sYNHqPyD 編輯:當我按「馬里奧」,沒有任何反應

+0

194行,我相信你的意思是'currentchar =「mario」',只有一個'='而不是'=='。另外,*之後的'elif' *沒有意義。你確定if塊是否放置正確? –

+0

是的,我打算使用一個「=」。它仍然沒有工作。我不知道該怎麼辦。 – PikachuPopcorn

+0

在這種情況下,您的錯誤將會/應該會有所不同。如果不是,則應粘貼完整的錯誤追溯。 –

回答

0

爲了使新的角色圖片可見顯示他們的功能必須知道在另一個功能發生的變化。這就是全局變量出現的地方。如果您將變量設爲全局變量,您將看到變化並且代碼將按您的要求工作。

檢查出了什麼命令global手段,在這裏所做的:

Using global variables in a function other than the one that created them

比投入在其中您有charUcharD,...直接變量在第一線def functionName():後各功能:

global charU, charD, charL, charR 
+0

啊,謝謝!這是有道理的。我會明天測試它。我目前正在使用手機,因此我現在無法進行測試。如果有效,我會給你最好的答案 – PikachuPopcorn

+0

如果我這樣做,它會出現語法錯誤= – PikachuPopcorn

+0

是的,如果你首先執行assigment並且之後執行全局聲明,則會出現語法錯誤...全局必須出現首先在函數體的最頂端。 – Claudio