【问题标题】:Pygame : event.type works only for one casePygame:event.type 仅适用于一种情况
【发布时间】: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”。
你有什么想法可以解决我的问题吗?非常感谢!

【问题讨论】:

    标签: python events pygame keyboard


    【解决方案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(很可能在最后)而不是两次

    【讨论】:

      猜你喜欢
      • 2016-06-08
      • 1970-01-01
      • 2016-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多