【问题标题】:Is pygame module, 'pygame.event.get()' not work on method?pygame 模块,'pygame.event.get()' 对方法不起作用吗?
【发布时间】:2019-08-16 10:41:25
【问题描述】:

我做了一个游戏并使用 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()

当我按键时,它基本上什么都不做。

【问题讨论】:

  • 不是 PyGame 专家,但使用 pygame.KEYDOWN 作为事件类型和键似乎有点奇怪。

标签: python events methods keyboard pygame


【解决方案1】:

Pygame will not work without a screen/window defined.

打开一个窗口,并修复了输入处理中的几个小错误 ~

  • 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()

【讨论】:

  • 谢谢。我可以改用什么模块?
  • @ONLYIFYOUCANREAD 在不打开窗口的情况下处理键盘输入的模块?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-09
  • 1970-01-01
  • 2019-11-01
  • 2021-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多