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

时间:2012-06-10 18:32:38

标签: python pygame

我知道之前已经问过这个问题,但我找不到一个用于pygame的问题。我有一个硬币加电,每次拾取时我的积分增加5000。然而,只要我拿起硬币,就会出现另一个硬币。我不希望它再出现30秒。如何在不暂停整个程序的情况下实现这一目标?

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

4 个答案:

答案 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()来运行任何应该运行的东西。除非你真的需要细粒度的计时,否则你不太可能需要在每次打勾时调用它。