问题描述
我正在制作我的第一个 pygame 项目,并且进展顺利。我编写了以下代码来检查输入,到目前为止一切正常。
def check_events(self):
for event in pygame.event.get():
if event.type == pygame.QUIT:
self.running,self.playing = False,False
self.curr_menu = False
self.curr_level.run_level = False
sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_DOWN:
self.DOWN_KEY = True
if event.key == pygame.K_UP:
self.UP_KEY = True
if event.key == pygame.K_RETURN:
self.START_KEY = True
if event.key == pygame.K_BACKSPACE or event.key == pygame.K_ESCAPE:
self.BACK_KEY = True
if event.key == pygame.K_LEFT:
self.LEFT_KEY = True
if event.key == pygame.K_RIGHT:
self.RIGHT_KEY = True
if event.key == pygame.K_SPACE:
self.SPACE_KEY = True
if event.key == pygame.K_RSHIFT or event.key == pygame.K_LSHIFT:
self.SHIFT_KEY = True
if event.type == pygame.KEYUP:
if event.key == pygame.K_DOWN:
self.DOWN_KEY = False
if event.key == pygame.K_UP:
self.UP_KEY = False
if event.key == pygame.K_RETURN:
self.START_KEY = False
if event.key == pygame.K_BACKSPACE or event.key == pygame.K_ESCAPE:
self.BACK_KEY = False
if event.key == pygame.K_LEFT:
self.LEFT_KEY = False
if event.key == pygame.K_RIGHT:
self.RIGHT_KEY = False
if event.key == pygame.K_SPACE:
self.SPACE_KEY = False
if event.key == pygame.K_RSHIFT or event.key == pygame.K_LSHIFT:
self.SHIFT_KEY = False
我想为 x (SHIFT)
和 y (SPACE)
轴添加冲刺,但它无法正常工作。每当按住 SPACE
和 RIGHT
时,pygame
不会注册 UP
键被按下,每当我按住 SPACE
和 LEFT
时,{ {1}} 不会同时注册 pygame
和 UP
。
不知何故,按住 shift 不会干扰箭头键的注册。
由于我在冲刺过程中遇到的问题,我开始进一步调查并意识到 DOWN
在 pygame
和 UP
时无法识别我按下 LEFT
键同时按下,但可以识别 RIGHT
按键。
问题出在我的代码中吗?
解决方法
如果你想处理按下的事件,你需要使用:
pygame.key.get_pressed()
返回按键状态是否按下(True,False)
示例:
key_pressed = pygame.key.get_pressed()
if key_pressed[pygame.K_LSHIFT]:
sprintX()
if key_pressed[pygame.K_SPACE]:
sprintY()