奇怪的pygame在python 3中的矩形故障

时间:2016-01-09 18:43:41

标签: python python-3.x pygame

我目前正在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'属性并且工作正常......

我做错了什么?

编辑:我发现了这个问题。发生的事情是,有时候,有时候没有定义直立。

2 个答案:

答案 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)

我发现了这个问题。发生的事情是,有时候,有时候没有定义直立。