「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Pygameで複数のwhileループを同時に実行するにはどうすればよいですか?

Pygameで複数のwhileループを同時に実行するにはどうすればよいですか?

2024 年 11 月 7 日に公開
ブラウズ:803

How to Run Multiple While Loops Concurrently in Pygame?

Pygame で複数の While ループを同時に実装する方法

Pygame では、複数の while ループを同時に実行することができ、独立したおよびプログラム内での継続的な操作。

実行の克服Blocking

提供されたコード スニペットでは、同時に実行しようとする 2 つの while ループが存在するために問題が発生します。遅延を導入する time.sleep() 関数を組み込んだ 2 番目のループは、プログラムの継続的な機能にとって重要な最初のループの実行を妨げます。

遅延のためのシステム時間の利用

time.sleep() に依存してコードの特定のブロックの実行を遅らせる代わりに、pygame.time モジュールを活用することをお勧めします。 Pygame.time.get_ticks() は、プログラムの初期化以降のシステム時間へのアクセスをミリ秒単位で提供します。

ループとの統合

あるループが別のループによってブロックされるのを防ぐには、次の戦略を組み込むことを検討してください:

  • コンテンツを表示する時間間隔を決定します。 updated.
  • メイン ループ内に条件チェックを実装して、経過時間が指定された間隔を超えているかどうかを評価します。
  • 間隔が経過した場合は、必要な更新を実行し、それに応じて時間間隔をリセットします。

このアプローチにより、遅延アクションは、実行を中断することなくプライマリ ループと同時に実行できます。 flow.

タイマー イベントを使用した代替アプローチ

または、Pygame タイマー イベントを使用して、特定の時間間隔でアクションをスケジュールすることもできます。この方法は、一定の時間間隔を扱う場合に特に有益であることがわかります。

コード例

複数の while ループの実装を示す完全な例については、次のコード スニペットを参照してください。 Pygame:

import pygame
import random

# Initialize Pygame
pygame.init()

# Define screen dimensions
screen_width = 800
screen_height = 600
screen = pygame.display.set_mode((screen_width, screen_height))

# Define some faces
faces = ['^-^', '^v^', '◠◡◠', "'v'", '⁀◡⁀']

# Define the current face
current_face = random.choice(faces)

# Set up the font
font = pygame.font.SysFont('Arial', 100)

# Render the face
face_surface = font.render(current_face, True, (0, 255, 0))

# Get the center of the screen
center_x = screen_width // 2
center_y = screen_height // 2

# Set up the main loop
running = True
while running:

    # Process events
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # Calculate the next time the face should be updated
    next_update_time = pygame.time.get_ticks()   randint(5000, 10000)

    # If the time has come to update the face, do it
    if pygame.time.get_ticks() >= next_update_time:
        current_face = random.choice(faces)
        face_surface = font.render(current_face, True, (0, 255, 0))

    # Draw everything to the screen
    screen.fill((0, 0, 0))
    screen.blit(face_surface, (center_x - face_surface.get_width() // 2, center_y - face_surface.get_height() // 2))
    pygame.display.update()
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3