Python事件处理程序方法不在条件中返回值

时间:2010-07-04 01:12:28

标签: python conditional pygame

我对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),要么我已经花了很长时间才能正确编码,但是是的。非常感谢帮助。

2 个答案:

答案 0 :(得分:3)

你不是错过了一些括号吗?

if self.controlUpdate() == True:

答案 1 :(得分:1)

编辑:问题是pygame.event.get()返回并且从事件队列中删除所有事件。这意味着每次调用controlUpdate()时,事件队列都将为空,并且for循环内的任何内容都不会被执行。