>  기사  >  백엔드 개발  >  내 Pygame 응용 프로그램 루프가 올바르게 업데이트되지 않는 이유는 무엇입니까?

내 Pygame 응용 프로그램 루프가 올바르게 업데이트되지 않는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-17 17:44:02634검색

Why is my Pygame application loop not updating correctly?

파이게임 응용 프로그램 루프가 제대로 작동하지 않는 이유는 무엇입니까?

제공된 코드를 조사한 결과 루프 배열이 주요 문제인 것으로 보입니다. . 기본 애플리케이션에서는 업데이트된 위치의 특정 엔터티만 다시 그리면서 화면의 일부를 지우고 각 엔터티에 대해 다시 그리려고 합니다. 이 접근 방식은 필요하지 않으며 시각적 불일치로 이어질 수 있습니다.

일반적으로 가장 좋은 방법은 다음과 같습니다.

  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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.