我对python完全不熟悉(因为我编码的时间已经有一段时间了)。 我试图在一个小“hello world”类型的游戏中调用一个充当事件处理程序的方法,但它根本不起作用。我在OSX 10.6.3上使用pygames 1.9.1 lib和python 2.6.1。
所以这是一个while循环:
self.exitCheck()
if self.controlUpdate == True:
self.playerX += 1
有问题的两种方法是:
def exitCheck(self):
for event in pygame.event.get():
if event.type == KEYDOWN:
if event.key == pygame.K_ESCAPE:
print "Escape pressed"
pygame.quit()
exit()
def controlUpdate(self):
for event in pygame.event.get():
if event.type == KEYDOWN:
if event.key == pygame.K_SPACE:
print "Spacebar pressed"
return True
elif event.type == KEYUP:
if event.key == pygame.K_SPACE:
print "Spacebar not pressed"
return False
else:
return False
exitCheck总是如此,但在条件中似乎永远不会调用controlUpdate。我觉得我要么错过了我经历过的蟒蛇书中的一些东西(可能是学习Python),要么我已经花了很长时间才能正确编码,但是是的。非常感谢帮助。
答案 0 :(得分:3)
你不是错过了一些括号吗?
if self.controlUpdate() == True:
答案 1 :(得分:1)
编辑:问题是pygame.event.get()
返回并且从事件队列中删除所有事件。这意味着每次调用controlUpdate()
时,事件队列都将为空,并且for
循环内的任何内容都不会被执行。