PyGame:处理游戏循环的经济方式

时间:2014-03-31 15:20:36

标签: python pygame

我使用pygame编写了一个小脚本(实际上不是一个视频游戏,但如果重要的是模拟结果的图形显示)但我对它等待用户事件的方式并不满意(在我的情况下我是只对键盘上的几个键感兴趣。)

它使用了:

running = True
while running:
    for event in pygame.event.get():
        #tests and hypothetical actions

即使用户没有做任何事情,这个循环也会使CPU内核饱和,这意味着CPU上的无用压力,热量,风扇噪音,可能会滞后。是否更聪明,即。更经济,将程序置于事件的等待模式而不使用无限循环,但仍然使用pygame。

1 个答案:

答案 0 :(得分:4)

你唯一能做的就是阻止你不会使用的事件:

pygame.event.set_allowed(None)
pygame.event.set_allowed([pygame.QUIT, pygame.KEYDOWN])

这只会将pygame.QUITpygame.KEYDOWN等事件发布到队列中。

如果没有新的按键,事件队列中没有任何内容,因此不执行循环。

正如sshashhank124在评论中所说,你也可以通过调用来减慢主循环

clock.tick(frames)

这会导致pygame暂停一段时间,因此方法tick会被称为每秒帧次数。