Модуль pygame 'pygame.event.get ()' не работает с методом? - PullRequest
1 голос
/ 26 марта 2019

Я сделал игру и использовал модуль Pygame для ввода с клавиатуры. однако, это, кажется, не отвечает. ошибки нет, но нажатие клавиш ничего не делает, когда я запускаю код.

Я пытался использовать pygame.key, но он не работает.

Понятия не имею, что не так с этим кодом.

import pygame
pygame.init()
class keypress():
    def check(self):
        for event in pygame.event.get():
                if event.type == pygame.KEYDOWN:
                        if event.key == pygame.KEYDOWN:
                            print("Hey, you pressed the key, '0'!")
                        if event.key == pygame.K_1:
                            print("Doing whatever")
                        else:
                            pass
a = keypress()
if __name__ == "__main__":
        while True:
            a.check()

Когда я нажимаю клавиши, это практически ничего не делает.

1 Ответ

2 голосов
/ 26 марта 2019

Pygame не будет работать без определенного экрана / окна .

При открытом окне и исправлении пары незначительных ошибок в обработке ввода ~

  • event.key нужно проверить на pygame.K_0, а не на KEYDOWN снова
  • Отступы странные в цикле main.
  • Нет (все еще) способа выйти

Это работает в основном так, как кажется, код описывает:

import pygame
pygame.init()
WINDOW_WIDTH = 400
WINDOW_HEIGHT= 400
screen = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))

class keypress():
    def check(self):
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                # TODO - handle exiting
                pass
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_0:
                    print("Hey, you pressed the key, '0'!")
                elif event.key == pygame.K_1:
                    print("Doing whatever")


a = keypress()
if __name__ == "__main__":
    while True:
        a.check()
...