1. ホーム
  2. python

[解決済み] pygame clock.tick() vs ゲームメインループのフレームレート

2022-02-19 18:27:17

質問

すべてのpygameには、次のようなゲームループがあります。

while running:
    for event in pygame.event.get():        
        if event.type == pygame.QUIT:
            running = False   
    pygame.display.flip()
    print("tick " + str(pygame.time.get_ticks()))
    clock.tick(1)

のapiによると get_ticks():

pygame.init()が呼び出されてから何ミリ秒経ったかを返します。 pygameが初期化される前は、常に0になります。

しかし clock.tick() :

このメソッドは1フレームに1回呼び出される必要があります。前の呼び出しから何ミリ秒経過したかを計算します。

オプションのframerate引数を渡すと、関数 は、ゲームの実行速度を遅くするために遅延させます。 1秒間に指定されたティック数より少ない。これは、ゲームの実行速度を制限するのに役立ちます。1フレームに1回 Clock.tick(40) を呼び出せば、1秒間に40フレームを超える速さでプログラムが実行されることはありません。

少し混乱しているのですが、次のような意味でしょうか。 clock.tick() は、ゲーム開始から何ミリ秒経過したかに直接影響するのでしょうか?

そこで {コード は、1秒間に40フレームを「発行」することを意味し while loopが1秒間に40回実行される?

fpsとtickの関係がわからないのですが。

UPDATE 実際にテストしてみたところ clock.tick(40) にどのような fps を与えても、依然として mls でリアルタイムを返します。 {コード {コード または {コード {コード または {コード .

ということは、どうやら get_ticks()

tick() - 0.1

30

60

clock.tick()