Pygame ゲーム ループが非効率的で、誤ったブリッティングを引き起こすのはなぜですか?

Mary-Kate Olsen
リリース: 2024-11-17 12:49:01
オリジナル
132 人が閲覧しました

Why is my Pygame game loop inefficient and causing incorrect blitting?

Pygame アプリケーション ループが正しく動作しないのはなぜですか?

メイン ゲーム ループが正しくないため、Pygame アプリケーションが誤動作します。問題の内訳は次のとおりです:

メイン アプリケーション ループの問題

間違ったブリッティング順序:

コード内で、オブジェクトの位置に背景を配置し、新しい位置でブリットする前にオブジェクトを移動します。これは不要です。背景は各フレームの最初に 1 回描画され、前の位置を消去せずにその上にオブジェクトがブリットされる必要があります。

メイン アプリケーション ループの修正

これは、修正されたバージョンです。メイン アプリケーション ループ:

while True:

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

    # Update objects (based on input and frames)
    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        screen.blit(background, objects[0].pos, objects[0].pos)
        objects[0].move_left()
        screen.blit(objects[0].image, objects[0].pos)  # Blit object at new position
    if keys[pygame.K_RIGHT]:
        screen.blit(background, objects[0].pos, objects[0].pos)
        objects[0].move_right()
        screen.blit(objects[0].image, objects[0].pos)  # Blit object at new position
    if keys[pygame.K_UP]:
        screen.blit(background, objects[0].pos, objects[0].pos)
        objects[0].move_up()
        screen.blit(objects[0].image, objects[0].pos)  # Blit object at new position
    if keys[pygame.K_DOWN]:
        screen.blit(background, objects[0].pos, objects[0].pos)
        objects[0].move_down()
        screen.blit(objects[0].image, objects[0].pos)  # Blit object at new position

    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 display
    pygame.display.update()
    pygame.time.delay(100)
ログイン後にコピー

以上がPygame ゲーム ループが非効率的で、誤ったブリッティングを引き起こすのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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