Python で同じオブジェクトの複数のインスタンスを同時に生成する
ゲームのコードでは、それぞれのインスタンスを想定してランダムな位置に円を作成するつもりでした。サークルが独立して登場します。ただし、後続のサークルは前のサークルをオーバーライドしていました。この動作は、ゲームなどのイベントベースのアプリケーションの固有の性質に由来します。
イベントベースのアプリケーションを理解する
pygame では、ゲーム ループはイベント (たとえば、マウスのクリックなど)、それに応じて応答します。ただし、 time.sleep() および関連関数は、実際に待機したり、ゲームプレイのタイミングを制御したりするわけではありません。代わりに、実行中にアプリケーションをフリーズします。したがって、サークルは同時に表示されるのではなく、一度に 1 つずつ表示され、その間に sleep() がプログラムをフリーズしていました。
アプローチを修正
複数のサークルを生成するにはオブジェクトを同時に処理するには、次の 2 つの主なアプローチを取ることができます。
1.時間測定の使用
2.タイマー イベントの使用
時間を使用した最小限のコード例測定
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 サイトの他の関連記事を参照してください。