【发布时间】:2014-07-13 23:23:17
【问题描述】:
我试图让一个矩形向并列的精灵射击,并在它击中时击败它。就我而言,当我单击空间并以 5 像素 move.ip[5,0] 的速度发射时,应该创建矩形,但我看不到矩形。我的代码有什么问题,为什么我看不到矩形。
我的代码:
MESH = ((playerRect.topright[1] + 1), (playerRect.topright[1] + 1), (playerRect.centery - 10), (playerRect.centery + 10))
shootRect = pygame.draw.rect(screen, WHITE, MESH)
def baddieHasHitShoot():
if baddieRect.colliderect(shootRect):
return True
return False
if event.type == KEYDOWN:
if event.key == ord(' '):
shootRect()
move.ip[5, 0]
if baddieHasHitShoot():
if score > topScore:
score = topscore
break
错误:
Traceback (most recent call last):
line 105, in <module>
shootRect()
TypeError: 'pygame.Rect' object is not callable
【问题讨论】:
-
不确定它是否会修复它,但您需要从
shootRect() -> shootRect中删除括号,您的错误是由于尝试调用shootRect()这是一个pygame.Rect对象并且不可调用。 -
现在又出现了一个错误
Traceback (most recent call last): File "***.py", line 106, in <module> move.ip[5, 0] NameError: name 'move' is not defined -
move 没有按照错误提示定义,move 应该是什么?也可能最好不要在任何地方使用
shootRect。 -
如果您从
baddieHasHitShoot()中删除变量,您将遇到.colliderect(shootRect)的问题 -
因为
.colliderect()期望pygame.Rect()但现在shootRect是函数名称:)
标签: python python-3.x pygame