ホームページ > バックエンド開発 > Python チュートリアル > Pygame で複数のゲーム オブジェクトを同時に生成するにはどうすればよいですか?

Pygame で複数のゲーム オブジェクトを同時に生成するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-27 09:34:14
オリジナル
550 人が閲覧しました

How Can I Spawn Multiple Game Objects Concurrently in Pygame?

Python で同じオブジェクトの複数のインスタンスを同時に生成する

ゲームのコードでは、それぞれのインスタンスを想定してランダムな位置に円を作成するつもりでした。サークルが独立して登場します。ただし、後続のサークルは前のサークルをオーバーライドしていました。この動作は、ゲームなどのイベントベースのアプリケーションの固有の性質に由来します。

イベントベースのアプリケーションを理解する

pygame では、ゲーム ループはイベント (たとえば、マウスのクリックなど)、それに応じて応答します。ただし、 time.sleep() および関連関数は、実際に待機したり、ゲームプレイのタイミングを制御したりするわけではありません。代わりに、実行中にアプリケーションをフリーズします。したがって、サークルは同時に表示されるのではなく、一度に 1 つずつ表示され、その間に sleep() がプログラムをフリーズしていました。

アプローチを修正

複数のサークルを生成するにはオブジェクトを同時に処理するには、次の 2 つの主なアプローチを取ることができます。

1.時間測定の使用

  • オブジェクトを保存するリストを作成します。
  • pygame.time.get_ticks() を使用して経過時間を定期的に確認します。
  • Spawn最後のオブジェクトからの時間間隔が設定を超えた場合の新しいオブジェクト期間。

2.タイマー イベントの使用

  • pygame.time.set_timer() は、指定された時間間隔で発生するカスタム イベントを作成します。
  • このイベントが発生すると、新しいオブジェクトが作成されます.

時間を使用した最小限のコード例測定

object_list = []
time_interval = 500  # milliseconds between object spawns
next_object_time = 0 

while run:
    current_time = pygame.time.get_ticks()
    if current_time > next_object_time:
        next_object_time += time_interval
        object_list.append(Object())
ログイン後にコピー

タイマー イベントを使用した最小限のコード例

object_list = []
time_interval = 500  # milliseconds between object spawns
timer_event = pygame.USEREVENT+1
pygame.time.set_timer(timer_event, time_interval)

while run:
    for event in pygame.event.get():
        if event.type == timer_event:
            object_list.append(Object())
ログイン後にコピー

その他の考慮事項

  • オブジェクトを追跡してそれぞれに描画するには、リストにオブジェクトを追加する必要があります
  • オブジェクトは、特定のサイズまたは経過時間を超えると、リストから削除できます。
  • 一貫したフレーム レートを確保するには、クロック オブジェクトを使用します。

以上がPygame で複数のゲーム オブジェクトを同時に生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート