我使用pygame编写了一个小脚本(实际上不是一个视频游戏,但如果重要的是模拟结果的图形显示)但我对它等待用户事件的方式并不满意(在我的情况下我是只对键盘上的几个键感兴趣。)
它使用了:
running = True
while running:
for event in pygame.event.get():
#tests and hypothetical actions
即使用户没有做任何事情,这个循环也会使CPU内核饱和,这意味着CPU上的无用压力,热量,风扇噪音,可能会滞后。是否更聪明,即。更经济,将程序置于事件的等待模式而不使用无限循环,但仍然使用pygame。
答案 0 :(得分:4)
你唯一能做的就是阻止你不会使用的事件:
pygame.event.set_allowed(None)
pygame.event.set_allowed([pygame.QUIT, pygame.KEYDOWN])
这只会将pygame.QUIT
和pygame.KEYDOWN
等事件发布到队列中。
如果没有新的按键,事件队列中没有任何内容,因此不执行循环。
正如sshashhank124在评论中所说,你也可以通过调用来减慢主循环
clock.tick(frames)
这会导致pygame暂停一段时间,因此方法tick会被称为每秒帧次数。