为什么event.key在我的代码中途无法正常工作?

时间:2020-03-14 12:01:45

标签: python pygame

所以,我一直在PyGame中从事一个项目。为了测试货币系统,我决定按键时增加您的存款。我尝试过将if语句移出游戏循环。这是我的代码:

gameRun = True
while gameRun:
    for event in pygame.event.get():
        if event.key == pygame.K_p:
            print("This Should Work")
            currency.balance.amount += 1
            pygame.display.update()

我还有其他几行代码,但是我相信这些行有问题。非常感谢!

1 个答案:

答案 0 :(得分:1)

是否有原因导致event.key在我的代码中途无法正常工作?

我想您有多个事件循环,您的代码中分别存在对pygame.event.get()的调用。
注意pygame.event.get()从队列中删除事件。如果您有多个事件循环,那么只有一个随机循环会获取事件,其他所有循环都是空手。这会导致您错过事件。

在主应用程序循环中一次获取事件列表,并在多个事件循环中使用相同的事件列表。例如:

gameRun = True
while gameRun:
    events = pygame.event.get()

    for event in events:
        if event.key == pygame.K_p:
            print("This Should Work")
            currency.balance.amount += 1
            pygame.display.update()

    # [...]

    foo(event)

    # [...]

    for event in events:
        # [...]
def foo(events):
    for event in events:
        # [...]