0

私は pygame と livewires を使用してギャラクティカ タイプのゲームに取り組んでいます。ただし、このゲームでは、敵の代わりに、自分が発射する風船があります。マウスを 25 回クリックするたびに、値 1 に設定された dy プロパティを使用して、風船を 1 行下に移動させます。風船が一番下に到達すると、ゲームは終了します。ただし、これを 1 秒または 2 秒だけ実行する方法を理解するのに苦労しています。結果の「時間を計る」方法がないため、dy 値は無期限に 1 に設定されます。したがって、最初の 25 回のクリックの後、行は下に移動し続けます。これは問題ありませんが、私が言ったように、これは私の意図した結果ではありません。

このアクションのためにこれまでに持っているコードは次のとおりです。

if games.mouse.is_pressed(0):
        new_missile = missile(self.left + 6, self.top)
        games.screen.add(new_missile)
        MISSILE_WAIT = 0 #25
        CLICKS += 1
        if CLICKS == 25:
            SPEED = 1
            CLICKS = 0

CLICKS と MISSILE_WAIT は、このコード ブロックの前に作成され、初期値 0 に設定されるグローバル変数です。私が理解しようとしているのは、if CLICKS ステートメントの下に置くアルゴリズムです。time モジュールに関する python ドキュメントを調べましたが、この目的に合ったものを見つけることができないようです。また、実際のタイマーが必要な間、コンピューターはこれらの結果を即座にチェックするため、ここでは while ループを使用してもうまくいかないと思います。

4

1 に答える 1

0

あなたの質問を受け取ったかどうかはわかりませんが、私が提案できることは次のとおりです。

class Foo():
    def __init__(self):
        self.start_time = time.time()
        self.time_delay = 25 # seconds

    def my_balloon_func(self):
        if(time.time() - self.start_time) > self.time_delay:
            self.start_time = time.time()
        else:
            # do something
于 2013-07-07T20:09:44.087 に答える