我目前正在Python 3中使用pygame制作游戏。我的代码的一部分是:
if (ballrect.bottom >= brick.top) and (ballrect.top <= brick.bottom) and (ballrect.left >= brick.right) and (ballrect.right <= left):
其中ballrect和brick是pygame.Rect变量。运行时,程序崩溃,我得到以下内容:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "E:\WinPython-64bit-3.4.3.4\python-3.4.3.amd64\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 685, in runfile
execfile(filename, namespace)
File "E:\WinPython-64bit-3.4.3.4\python-3.4.3.amd64\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 85, in execfile
exec(compile(open(filename, 'rb').read(), filename, 'exec'), namespace)
File "E:/Comp_Sci/game-balls/pad_bounce_3.py", line 158, in <module>
if (ballrect.bottom >= brick.top) and (ballrect.top <= brick.bottom) and (ballrect.left >= brick.right) and (ballrect.right <= left):
NameError: name 'left' is not defined
和'left'应该是pygame.Rect类的一个属性。更有趣的是,我在代码中多次使用'left'属性并且工作正常......
我做错了什么?
编辑:我发现了这个问题。发生的事情是,有时候,有时候没有定义直立。答案 0 :(得分:1)
条件结束时的变量'left'是否已定义? and (ballrect.right <= left):
你的意思是brick.left吗?尝试:
if (ballrect.bottom >= brick.top) and (ballrect.top <= brick.bottom) and (ballrect.left >= brick.right) and (ballrect.right <= brick.left):
据我所知,使用brick.collidepoint(ballrect)
答案 1 :(得分:0)
我发现了这个问题。发生的事情是,有时候,有时候没有定义直立。