是否可以在 PyGame 中重置计时器?

Is it possible to reset a Timer in PyGame?

第一次发帖,希望大家多多支持:)

我正在做一个项目,我想在其中玩 SET 游戏。一切正常(JEEJ),但是我希望能够使用某种时间功能。这将执行以下操作:

at start of game the time starts running

if x:
        y
        reset timer to zero
elif not x and time == 30:
        do some action

我尝试了很多东西;使用 time.time(),但据我所知无法重置;我发现了一些像 类 这样的秒表,我尝试使用它们,但它们很慢(?);我试过perf_counter()...但现在我不知所措,所以我希望你们中的任何人都知道该怎么做... 请注意,我想在时间运行时“玩”游戏并执行操作...... 非常感谢!

有几种方法可以解决这个问题。一是使用时间:

import time
timer_start = time.time()

if x:
    y 
    timer_start = time.time()
if not x and time.time() >= timer_start + 30:
    do some action

请注意,我使用 >= 因为时间不太可能恰好是 30.0,最好在之后的第一次触发它。

另一种方法是使用pygame.time.set_timer():

pygame.time.set_timer(pygame.USEREVENT, 30000) #milliseconds
# You cal also use USEREVENT+1, USEREVENT+2 etc. if you want multiple timers

if x:
    pygame.time.set_timer(pygame.USEREVENT, 30000) #milliseconds

for event in pygame.event.get(): #merge this with your actual event loop
    if event.type == pygame.USEREVENT:
        if not x:
            y
        # reset the timer since it repeats by default
        pygame.time.set_timer(pygame.USEREVENT, 0)