메인 게임 루프가 올바르지 않아 Pygame 애플리케이션이 제대로 작동하지 않습니다. 문제에 대한 분석은 다음과 같습니다.
잘못된 블리팅 순서:
코드에서 개체의 위치에 배경을 추가한 다음 새 위치에 개체를 블릿팅하기 전에 개체를 이동합니다. 이것은 불필요합니다. 배경은 각 프레임 시작 부분에 한 번 그려야 하며, 이전 위치를 지우지 않고 그 위에 객체를 블릿해야 합니다.
다음은 수정된 버전입니다. 기본 애플리케이션 루프:
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!