Pygame:event.type 仅适用于一种情况

Posted

技术标签:

【中文标题】Pygame:event.type 仅适用于一种情况【英文标题】:Pygame : event.type works only for one case 【发布时间】:2021-12-28 08:07:00 【问题描述】:

我的 pygame 代码有问题,该代码看起来正确但无法正常工作。 我想根据按下的键做不同的动作;当我放两个案例时,只有一个有效。 我把我的代码放在下面:

        gamestate.draw(window)
        pygame.display.update()

        for event in pygame.event.get():
            if event.type == pygame.QUIT or (event.type == pygame.KEYDOWN and event.type == pygame.K_ESCAPE):
                finis = True
            if (event.type == pygame.KEYDOWN and event.key == pygame.K_UP):
                print("ok")
        pygame.display.update()

在这里,当我按下 UP 键时,我的代码在终端中打印“ok”,但当我按住退出键时不会退出。 不是这种特殊情况不起作用,在我按下转义键时它退出并且当我按下向上键时没有打印“ok”。 你有什么想法可以解决我的问题吗?非常感谢!

【问题讨论】:

【参考方案1】:

pygame.K_ESCAPE 不是事件类型,但您检查 event.type

... and event.type == pygame.K_ESCAPE

应该是:

... and event.key == pygame.K_ESCAPE

通常如果您必须在pygame.KEYDOWN 事件上检查多个键,则使用嵌套的ifs:

if event.type == pygame.KEYDOWN:
    if event.key == pygame.K_ESCAPE:
        finis = True
    if event.key == pygame.K_UP:
        print('ok')

您还需要在循环中只调用一次pygame.display.update(很可能在最后)而不是两次

【讨论】:

以上是关于Pygame:event.type 仅适用于一种情况的主要内容,如果未能解决你的问题,请参考以下文章

VBA 排序代码仅适用于一张纸,但不适用于多张

剑道网格在插入期间启用编辑,在编辑期间禁用(仅适用于一列)

pygame记录

JS window.addEventListener仅适用于一页

Outlook VBA 代码仅适用于一台计算机

ASP.NET Core 2.1 中的数据保护仅适用于一台机器