【发布时间】:2020-12-07 18:28:24
【问题描述】:
最近在 Pyglet 中制作游戏时,我反复遇到一个问题。游戏基本上是一个换道游戏,你需要换道以防止与追逐者发生碰撞,导致你输掉游戏,并出现结束画面,让你重新开始游戏。
我设置了一个变量loose,它存储了一个布尔数据。 loose 将是 True,如果我们与追逐者发生碰撞,False,如果我们没有。此变量最初设置为False,但在我的碰撞检测算法中(位于我的更新函数中)它设置为True。
global loose
loose = False
...
def update(dt):
...
if collision:
loose = True
...
稍后当我使用检测到点击重启按钮的鼠标事件时,
@window.event
def on_mouse_press(x, y, button, modifiers):
global loose
if mouse_clicked:
if loose:
...
loose = False
...
我在if loose: 的行中收到错误
UnboundLocalError: 在赋值之前引用了局部变量 'loose'
我不明白为什么会发生这种情况,有什么办法可以解决这个错误。
注意:代码已简化以保持问题简短。如果我注释掉我引用loose 的实例,代码就可以完美运行。
【问题讨论】:
-
我不敢相信有人支持这个问题。
-
global lloose与global loose不同(“松散”和“失去”也是不同的东西)。 -
@Matthias 哦!抱歉,错字已修复
标签: python python-3.x game-development pyglet