gpt4 book ai didi

python - Pygame 等待屏幕更新

转载 作者:行者123 更新时间:2023-12-01 06:28:05 25 4
gpt4 key购买 nike

我刚刚开始使用 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()

最佳答案

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

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

例如:

class App:

def __init__(self):
# [...]

self.clock = pygame.time.Clock()

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

run = True
while run:

# control the framerate
self.clock.tick(60) # 60 FPS

# handel the events
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False

# move the objects
for member in self.zoo:
self.move(member)

# clear the display
self.screen.fill(black)

# draw the scene
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)

# update the display
pygame.display.update()

关于python - Pygame 等待屏幕更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60029598/

25 4 0
文章推荐: python - __iadd__ 应该返回一个新对象还是操作 self?
文章推荐: java - 通过可比较接口(interface)对 ArrayList 进行排序