Pygame等待屏幕更新

问题描述 投票:1回答:1

我刚开始使用pygame,我只是想在屏幕上移动点。问题是它以快速的方式发生,并且在循环运行时我的pygame屏幕冻结(不响应),然后仅显示点的最后迭代位置。我认为更新发生得很快。

[当包含pygame.event.wait()时,当我输入时,循环继续进行,我可以在窗口中实时跟踪点如何在屏幕上移动。但是,我希望它们在屏幕上移动而无需输入。

这是我的主循环:

def run(self):
    self.food_spread()
    self.spawn_animal()

    for k in range(20000):
        print(k)
        for member in self.zoo: 
            self.move(member)

        self.screen.fill(black)
        for i in range(self.food_locations.shape[0]):
            pygame.draw.rect(self.screen, white, (self.food_locations[i,1], self.food_locations[i,2],1,1))

        for member in self.zoo:
            pygame.draw.circle(self.screen, green,(member.location[0], member.location[1]), 2,1)
            pygame.display.update()
        pygame.event.wait() 

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT: 
                 pygame.quit()
                 sys.exit()
python pygame
1个回答
1
投票

您有一个应用程序循环,请使用if。用pygame.time.Clock()控制帧率。应用程序循环必须

  • 控制帧速率(pygame.time.Clock()
  • 处理事件并移动对象
  • 清除显示
  • 绘制场景
  • 更新显示

例如:

clock.tick(60)
© www.soinside.com 2019 - 2024. All rights reserved.