首页  >  文章  >  后端开发  >  为什么我的 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. 更新

在这个修改后的代码片段中,我们重新排列了上面提到的循环:

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