0

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

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

4 回答 4

1

由于您使用的是pygame,因此您已经内置了函数。

pygame.time.get_ticks()以毫秒为单位获取时间 pygame.time.set_timer()设置重复计时器。

于 2012-06-11T00:04:21.650 回答
0

你的游戏有一个主循环。当你拿起硬币时,你应该节省你拿起它并设置的时间coin = None,然后在那个主循环中你应该有如下内容:

if coin is None and current_time > coin_picked_up + 30:
    coin = makecoin()
于 2012-06-10T18:45:41.333 回答
0

我会推荐一个计时器。应该就这么简单。

from threading import Timer

if coin.collidepoint(x,y):
    points+=5000
    t = Timer(30.0, makecoin)
    t.start()
于 2012-06-10T18:46:51.583 回答
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() 来运行任何应该运行的东西。除非您真的需要细粒度的计时,否则您不太可能需要在每个滴答时调用它。

于 2012-06-10T18:53:27.677 回答