Метод обработчика событий Python, не возвращающий значение в условном выражении - PullRequest
0 голосов
/ 04 июля 2010

Я совершенно новичок в python (и я давно уже не программировал).Я пытаюсь вызвать метод, который действует как обработчик событий в маленькой игре типа «привет мир», но он не работает вообще.Я использую библиотеку pygames 1.9.1 с python 2.6.1 на OSX 10.6.3.

Так что это в цикле 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 в условном выражении.Я чувствую, что либо пропустил что-то из книги по питону, которую я изучал (The Pyll Learning Python), либо я просто слишком долго отдыхал от правильного кодирования, но да.Буду очень признателен за помощь.

Ответы [ 2 ]

3 голосов
/ 04 июля 2010

Вы не пропустили несколько скобок?

if self.controlUpdate() == True:

1 голос
/ 04 июля 2010

Редактировать: Проблема в том, что pygame.event.get() и возвращает, и удаляет все события из очереди событий.Это означает, что каждый раз, когда вы вызываете controlUpdate(), очередь событий будет пустой и ничего внутри цикла for выполняться не будет.

...