Python AI游戏编程入门:基于Pygame和PyTorch
上QQ阅读APP看书,第一时间看更新

1.4.1 游戏主循环

除非用户中断游戏,否则游戏程序需要一直运行。所以游戏程序中必然存在一个循环,循环中的代码反复运行。这个循环称为游戏循环(game loop)。每运行一次循环中的代码,称为游戏中的一帧(frame)。基于人类眼球的生理特性,游戏一般采用30或者60的帧率来运行,设置游戏帧率为30,就意味着每秒运行30次循环,换句话说,单次循环消耗的时间要控制在33毫秒左右,不能过多也不能过少。游戏中能否达到这个帧率依赖于很多因素,如果硬件性能很强大,代码中的计算很简单,一个循环中的代码可能只需要几毫秒就运行完毕。

游戏循环中应该包括主要的游戏逻辑代码,例如处理玩家输入、更新游戏数据、生成游戏输出这3个阶段的代码。以经典的射击游戏《坦克大战》为例,玩家输入可能是键盘的按键,即通过键盘控制方向和发射炮弹,当用户按下发射炮弹对应的按键时,程序要保存并处理这个信息。在更新游戏数据阶段,程序要根据用户的输入信息,在内存中生成炮弹对象,如果之前已经发射了炮弹,则需要判断炮弹是否击中敌人,敌人是否被击杀。这里可能要处理上百个对象和多种游戏逻辑。在生成游戏输出阶段,最重要的事情之一就是绘制显示在屏幕上的内容,如坦克、发射的炮弹、爆炸效果等。