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

如何使用pygame检测按键?

如何解决如何使用pygame检测按键?

我正在 pygame 中制作射击游戏,但是这段代码

checkfocus = pygame.key.get_focused()
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        if event.type == pygame.KEYDOWN:
#THIS PART DOES NOT WORK
            if event.type == pygame.K_w:
                print(checkfocus)
                print("up")
                pygame.key.set_repeat(0,1)
                yvalue -= 20
                if yvalue < 0:
                    yvalue = 0
                print(yvalue)
                pygame.time.wait(100)
                screen.fill((52,61,82))
                screen.blit(harryshoot,(20,yvalue))
                pygame.display.flip()

不知何故不起作用,尽管其他 if event.type 代码工作正常。这里有什么问题?为什么只有这段代码没有键盘输入?我试过更改密钥,但这没有帮助。(print("up") 也没有显示,所以不是代码本身不起作用)。

解决方法

pygame.K_w 不是事件类型,而是键。您需要验证事件类型为 pygame.KEYDOWN 且键为 pygame.K_w

while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        if event.type == pygame.KEYDOWN:
            if event.key== pygame.K_w:
                # [...]

键盘事件 KEYDOWNKEYUP(参见 pygame.event 模块)创建一个带有附加属性的 pygame.event.Event 对象。按下的键可以从 key 属性(例如 K_RETURN K_a)获得,mod 属性包含一个带有附加修饰符的位集(例如 {{1} })。 KMOD_LSHIFT 属性提供键盘输入的 Unicode 表示。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。