0

さて、ボールを追いかける犬と、マウスカーソルを追いかけるボールを作る必要があります。犬がボールと同じ位置にいるとき、ゲームは停止し、「ゲームオーバー」と表示されます。さて、私のコードは、ゲームの開始直後に 2 つのオブジェクトが同じ位置にあるかどうかをチェックし、開始オブジェクトが同じ位置にあるため終了します。ゲームが一定時間経過した後に位置を確認するにはどうすればよいですか?

`
    if rect.colliderect(rect2) == True:
        clock.tick(1000)
        self.chasing = False
        rect3 = self.fontim.get_rect()
        rect3 = rect3.move((self.width-rect3.width)//2,
                          (self.height-rect3.height)//2)

    pygame.display.flip()

MyGame().run()
pygame.quit()
sys.exit()

`

4

2 に答える 2

1

使用するpygame.time.Clock

使用法:

最初にクロックを作成します。次に、フレームごとに を呼び出す必要がありますClock.tick()。これは、最後の呼び出しから経過したミリ秒数を返します。このようにして、milliseconds_passed 変数をインクリメントし、一定の時間が経過したことを確認することもできます。

Clock のサブクラスを作成し、millisenonds_passed 変数を追加することをお勧めします。これにより、コードが煩雑になるのを防ぐことができます。

編集:

あなたのコードにはいくつかの間違いがあります。

まず、Clock.tick()フレームごとに 1 回呼び出されません。犬がボールに衝突すると、フレームごとに 1 回呼び出されます。できれば run メソッドに移動してください。

次に、時計の戻り値を取得していません。私が書いたように、最後の呼び出しから経過したミリ秒数を返します。そのため、そのメソッドが返すものによって増加する新しい変数を作成します。最後に必要なのは簡単なチェックです。同じ if ステートメントで行うこともできます。このような:

if rect.colliderect(rect2) == True and self.time_passed/1000 > 5:
于 2013-11-09T19:23:42.340 に答える
0

ゲームの開始時に初期化されるタイマーを作成し、衝突が発生するたびに、たとえば時間が 2 秒を超えているかどうかを確認します。

于 2013-11-09T18:33:39.940 に答える