为什么我的 pygame 应用程序循环无法正常工作?
检查您提供的代码后,循环安排似乎是主要问题。在您的主应用程序中,您尝试擦除屏幕的某些部分并为每个实体重新绘制它们,同时仅在其更新位置重新绘制特定实体。这种方法不是必需的,可能会导致视觉不一致。
一般来说,最佳实践是:
在这个修改后的代码片段中,我们重新排列了上面提到的循环:
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中文网其他相关文章!