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

スケジュールされたモジュールを見てください。これを使用して、新しいコインの作成を延期することができます。

次のように定義された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 に答える
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 に答える