pygame 计时器不线性倒计时或严重滞后[重复]

问题描述 投票:0回答:1

我正在制作一个简单的单词搜索风格的游戏,并试图获得一个计时器,但计时器在稳定之前减少得太快。

TIMER_EVENT = pygame.USEREVENT + 1
pygame.time.set_timer(TIMER_EVENT, 1000)
    while True:
        for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
        if event.type == TIMER_EVENT: 
            time_limit -= 1
            draw_grid(grid_size)  # Update the grid to show the updated timer
            pygame.display.flip()
        pygame.time.delay(100)`

这是我当前的代码。我尝试添加延迟,但没有任何作用。当我运行该程序时,增量会不断变化。我还尝试了 pygame 计时器功能,该功能在开始时有很大的延迟,然后才正常下降,这也是不可能发生的。

timer pygame user-event
1个回答
0
投票

你永远不应该打电话给

pygame.time.delay(100)

示例:假设您当前位于将

USEREVENT
添加到队列之前的帧中,然后调用
pygame.time.delay(100)
。你的游戏停止了 100 毫秒。现在您有约 100 毫秒的秒延迟。

假设您处于应该添加事件之前大约 20 毫秒的帧中,然后调用

pygame.time.delay(100)
。你的游戏停止了 100 毫秒。现在你有大约 80 毫秒的第二延迟,等等。

永远不要这样做。

使用

pygame.time.Clock
限制帧速率。这不是最好的,但却是最简单的方法。

其他一些事情:

对于您的自定义事件,您可以使用

pygame.event.custom_type

每帧切勿多次调用

pygame.display.flip()
。在主循环结束时调用它一次,最重要的是,如果您不知道自己在做什么,则不要在事件循环中调用它。

© www.soinside.com 2019 - 2024. All rights reserved.