メイン ゲーム ループが正しくないため、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 サイトの他の関連記事を参照してください。