我知道以前有人问过这个问题,但我找不到 pygame 的问题。我有一个硬币加电装置,每次捡起它都会使我的积分增加 5000。然而,当我拿起硬币时,另一个硬币出现了。我不希望它再出现 30 秒。如何在不暂停整个程序的情况下实现这一点?
if coin.collidepoint(x,y):
points+=5000
coin=makecoin()
由于您使用的是pygame,因此您已经内置了函数。
pygame.time.get_ticks()以毫秒为单位获取时间 pygame.time.set_timer()设置重复计时器。
你的游戏有一个主循环。当你拿起硬币时,你应该节省你拿起它并设置的时间coin = None
,然后在那个主循环中你应该有如下内容:
if coin is None and current_time > coin_picked_up + 30:
coin = makecoin()
我会推荐一个计时器。应该就这么简单。
from threading import Timer
if coin.collidepoint(x,y):
points+=5000
t = Timer(30.0, makecoin)
t.start()
看一下sched模块。您可以使用它来推迟新硬币的创建。
假设您有一个名为 s 的调度程序,定义如下(就像 Python 手册中的示例一样)...
import sched, time
s = sched.scheduler(time.time, time.sleep)
然后你会安排你的硬币像这样创建......
if coin.collidepoint(x,y):
points+=5000
s.enter(30, 1, make_coin, ())
你会定期调用 s.run() 来运行任何应该运行的东西。除非您真的需要细粒度的计时,否则您不太可能需要在每个滴答时调用它。