如何解决PyGame 未注册第三次按键
我正在制作我的第一个 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()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。