ホームページ > バックエンド開発 > Python チュートリアル > 私の PyGame アプリケーションが「pygame 2.0.0...」のみを表示して停止するのはなぜですか?

私の PyGame アプリケーションが「pygame 2.0.0...」のみを表示して停止するのはなぜですか?

Mary-Kate Olsen
リリース: 2024-12-27 15:40:10
オリジナル
680 人が閲覧しました

Why Does My PyGame Application Only Display

PyGame アプリケーションの実行に失敗する: 詳細診断

PyGame プログラムを実行しようとすると、コマンドプロンプトに「pygame 2.0.0...」というメッセージが表示され、それ以上のアクションは実行されません。この不可解な動作により、プログラマは困惑する可能性があります。

この問題の原因を理解するために、提供されている PyGame コード スニペットを分析してみましょう。

import pygame
from pygame.locals import *

pygame.init()

win = pygame.display.set_mode((400,400))
pygame.display.set_caption("My first game")
ログイン後にコピー

このコードは、PyGame モジュールを初期化し、ゲーム ウィンドウを作成します。指定された解像度とキャプション付き。ただし、重要な要素であるアプリケーション ループが欠落しています。

アプリケーション ループは、さまざまなイベントの処理、ゲーム オブジェクトの更新、表示のクリア、オブジェクトの描画、表示の再更新を行う継続的なプロセスです。これは、ゲームの実行を維持する中心的なメカニズムです。

提供されたコードには、このループがありません。これがないと、プログラムはゲーム ウィンドウを初期化しますが、入力を処理したり、オブジェクトを更新したり、画面上に何かを描画したりするロジックがありません。

この問題を解決するには、次の PyGame アプリケーション ループを実装します。

run = True
while run:

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

    # update game objects
    # [...]

    # clear display
    win.fill((0, 0, 0))

    # draw game objects
    # [...]

    # update display
    pygame.display.flip()

    # limit frames per second
    clock.tick(60)

pygame.quit()
ログイン後にコピー

このループ:

  • 「終了」などのイベントを処理します。イベント。
  • 入力と時間に基づいてゲーム オブジェクトの位置を更新します。
  • 表示をクリアします (すべてを再描画します)。
  • シーン (オブジェクト) を描画します。
  • 表示を更新して変更を表示します。
  • 最適化するために 1 秒あたりのフレーム数を制限しますパフォーマンス。

このループが実装されると、PyGame アプリケーションは期待どおりに実行されるはずです。アプリケーション ループは、PyGame アプリケーションのフローを制御し、その応答性を確保するために重要であることを覚えておいてください。

以上が私の PyGame アプリケーションが「pygame 2.0.0...」のみを表示して停止するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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