Pygame 如何使用同一个键启用和禁用一个功能?

Pygame how to enable and disable a function with the same key?

在制作暂停菜单时,我发现无法使用同一键暂停和继续游戏。

假设我想用转义键来做到这一点。 然后,如果我只是按下它,游戏将暂停几微秒,但会继续,因为 pause() 函数也以转义键结束。

我还注意到,如果我将用于结束 pause() 函数执行的键更改为不同于暂停游戏的键,一切都会正常,但我不希望这样。

那我应该怎么做才能避免这种情况,一键暂停和继续游戏呢?

添加一个paused状态。根据 paused.
的状态实现事件处理 使用 pygame.time.get_ticks() 来测量时间。计算暂停模式应该结束的时间。到达时间后设置paused = False

paused = False
pause_end_time = 0

while running:
    current_time = pygame.time.get_ticks()
    if current_time > pause_end_time:
        paused = False

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_ESCAPE:
                paused = not paused
                pause_end_time = current_time + 3000 # pause for 3 seconds

        if not paused:
            # game event handling
            if event.type == pygame.KEYDOWN:
                # [...]

    # [...]