Python 使函数在pygame中执行之前等待一定时间

Python 使函数在pygame中执行之前等待一定时间,python,pygame,Python,Pygame,我知道以前有人问过这个问题,但我找不到pygame的问题。我有一个硬币能量增加,每次捡起它都会增加5000点。然而,我一拿起硬币,另一枚就出现了。我不希望它再出现30秒。如何在不暂停整个程序的情况下实现这一点 if coin.collidepoint(x,y): points+=5000 coin=makecoin() 你的游戏有一个主循环。当你捡起一枚硬币时,你应该节省捡起硬币的时间,并设置coin=None,然后在主循环中,你应该有如下内容: if coin is None

我知道以前有人问过这个问题,但我找不到pygame的问题。我有一个硬币能量增加,每次捡起它都会增加5000点。然而,我一拿起硬币,另一枚就出现了。我不希望它再出现30秒。如何在不暂停整个程序的情况下实现这一点

if coin.collidepoint(x,y):
    points+=5000
    coin=makecoin()

你的游戏有一个主循环。当你捡起一枚硬币时,你应该节省捡起硬币的时间,并设置
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()
看看这个模块。你可以用它来推迟新硬币的制造

假设您有一个名为s的调度器,定义如下(就像Python手册中的示例一样)

然后你会安排你的硬币像这样被创造

if coin.collidepoint(x,y):
    points+=5000
    s.enter(30, 1, make_coin, ())
您可以定期调用s.run()来运行任何应该运行的操作。除非您确实需要细粒度的计时,否则您不太可能需要在每个刻度上调用它。

因为您正在使用,所以您已经内置了函数

以毫秒为单位获取时间
设置重复计时器。

如果没有关于程序架构的更多信息,几乎不可能回答。您是否考虑过使用计时器?这似乎不起作用。当我的玩家翻过硬币时,它的点数会以5000的间隔不断增加。@Andre当玩家翻过硬币时,你移除了硬币吗?硬币被放入一个函数中,每次执行该函数时,它都会为硬币创建一个新的x和y点,所以通过创建新的点数,我从技术上移除了硬币。哦,那么你的硬币不是一种阶级?你只需在每帧上点一枚硬币,然后检查碰撞情况?嗯,我会推荐一些物品,但如果你必须的话。。。你需要一种跳过碰撞检查和硬币抽奖的方法,一旦你通过它(用你觉得舒服的方法来做)。然后计时器需要再次启用超时功能。好的,我看看我能做些什么。谢谢
if coin.collidepoint(x,y):
    points+=5000
    s.enter(30, 1, make_coin, ())