微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PyGame 未注册第三次按键

如何解决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)添加冲刺,但它无法正常工作。每当按住 SPACERIGHT 时,pygame 不会注册 UP 键被按下,每当我按住 SPACELEFT 时,{ {1}} 不会同时注册 pygameUP。 不知何故,按住 shift 不会干扰箭头键的注册

由于我在冲刺过程中遇到的问题,我开始进一步调查并意识到 DOWNpygameUP 时无法识别我按下 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 举报,一经查实,本站将立刻删除。