ホームページ >バックエンド開発 >Python チュートリアル >PyGame のディスプレイが空白になるのはなぜですか?

PyGame のディスプレイが空白になるのはなぜですか?

DDD
DDDオリジナル
2024-12-21 01:05:13321ブラウズ

Why Is My PyGame Display Blank?

PyGame - Void Display Mystery

PyGame を使用してビジュアル アプリケーションを作成する場合、描画コマンドにもかかわらず画面に何もレンダリングされない場合があります。これを解決するには、ディスプレイの更新の概念を理解することが重要です。

PyGame では、ディスプレイに関連付けられた Surface オブジェクト上に描画します。ただし、これらの変更は、pygame.display.update() や pygame.display.flip() などの関数を使用して表示を更新した後にのみ表示されます。

pygame.display.flip() が表示全体を更新する間、pygame は表示を更新します。 .display.update() は特定の領域をターゲットにすることができます。

PyGame アプリケーションのスムーズな動作を保証するために、一般的なループ

  1. イベント処理: pygame.event.get() または pygame.event.pump() を使用してユーザー入力を取得します。
  2. ゲームの状態とオブジェクトの更新: ゲームの状態とオブジェクトを調整します。入力と時間に基づいてオブジェクトの位置を決定します。
  3. 表示の消去: を使用して前のフレームの内容を消去します。 DISPLAY.fill(0).
  4. シーン レンダリング: 必要なすべてのオブジェクトをキャンバスに描画します。
  5. 表示の更新: pygame.display.update() または pygame.display を使用して、表示される表示を更新します。 flip().
  6. フレーム レート コントロール: 過剰な CPU 使用率を避けるために、1 秒あたりのフレーム数を制限します。 pygame.time.Clock().

修正された PyGame ループの例:

import pygame
from pygame.locals import *
pygame.init()

DISPLAY = pygame.display.set_mode((800,800))
pygame.display.set_caption("thing")
clock = pygame.time.Clock()

run = True
while run:
    # Handle events
    for event in pygame.event.get():
        if event.type == QUIT:
            run = False

    # Clear display
    DISPLAY.fill(0)

    # Draw scene
    pygame.draw.rect(DISPLAY, (200, 200, 200), pygame.Rect(0, 400, 800, 400))

    # Update display
    pygame.display.flip()

    # Limit frames per second
    clock.tick(60)

pygame.quit()
exit()

これにより、空の画面の問題が解決され、PyGame で適切なレンダリングが保証されます。

以上がPyGame のディスプレイが空白になるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。