我知道之前已经问过这个问题,但我找不到一个用于pygame的问题。我有一个硬币加电,每次拾取时我的积分增加5000。然而,只要我拿起硬币,就会出现另一个硬币。我不希望它再出现30秒。如何在不暂停整个程序的情况下实现这一目标?
if coin.collidepoint(x,y):
points+=5000
coin=makecoin()
答案 0 :(得分:1)
由于您使用的是pygame,因此您已内置函数。
pygame.time.get_ticks()以毫秒为单位获得时间 pygame.time.set_timer()设置重复计时器。
答案 1 :(得分:0)
你的游戏有一个主循环。当你拿起一枚硬币时,你应该节省你拾取它的时间并设置coin = None
,然后在那个主循环中你应该有以下内容:
if coin is None and current_time > coin_picked_up + 30:
coin = makecoin()
答案 2 :(得分:0)
我会推荐一个计时器。它应该就这么简单。
from threading import Timer
if coin.collidepoint(x,y):
points+=5000
t = Timer(30.0, makecoin)
t.start()
答案 3 :(得分:0)
查看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()来运行任何应该运行的东西。除非你真的需要细粒度的计时,否则你不太可能需要在每次打勾时调用它。