2017-04-23 105 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