我正在制作一个简单的单词搜索风格的游戏,并试图获得一个计时器,但计时器在稳定之前减少得太快。
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 计时器功能,该功能在开始时有很大的延迟,然后才正常下降,这也是不可能发生的。
你永远不应该打电话给
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()
。在主循环结束时调用它一次,最重要的是,如果您不知道自己在做什么,则不要在事件循环中调用它。