ホームページ  >  記事  >  バックエンド開発  >  Pygame アプリケーション ループが正しく更新されないのはなぜですか?

Pygame アプリケーション ループが正しく更新されないのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-17 17:44:02636ブラウズ

Why is my Pygame application loop not updating correctly?

pygame アプリケーション ループが適切に動作しないのはなぜですか?

提供されたコードを調べたところ、ループの配置が主な問題であるようです。 。メイン アプリケーションでは、更新された位置に特定のエンティティのみを再描画しながら、画面の一部を消去してエンティティごとに再描画しようとしています。この方法は必須ではなく、視覚的な不一致が生じる可能性があります。

一般に、ベスト プラクティスは次のとおりです。

  1. ディスプレイ全体をクリアするか、背景を描画します。
  2. その上にあるすべてのエンティティを再描画します。
  3. display.

この改訂されたコード スニペットでは、上記のようにループを再配置しました。

while 1:

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

    # update objects (depends on input events and frames)
    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        objects[0].move_left()    
    if keys[pygame.K_RIGHT]:
        objects[0].move_right()
    if keys[pygame.K_UP]:
        objects[0].move_up()
    if keys[pygame.K_DOWN]:
        objects[0].move_down()

    for num in range(num_objects - 1):
        objects[num + 1].rand_move()

    # draw background
    screen.blit(background, (0, 0))

    # draw scene
    for o in objects:
        screen.blit(o.image, o.pos)

    # update dispaly
    pygame.display.update()
    pygame.time.delay(100)

このループは、効果的に画面をクリアし、すべてのエンティティを描画し、更新するようになりました。各フレームを表示します。

さらに詳しく説明するには、この最小限の例を参照してください:

[例リンク]

以上がPygame アプリケーション ループが正しく更新されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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