python代码版计算机游戏基本理论之游戏循环与fps及pygame具体实现

一、游戏循环

游戏循环是电子游戏的核心。在这个循环中总是不断地渲染画面,而要改变这个画面,则是由预先设定的程序所决定。
如果没有人为的参与等外部因素,那么游戏就只会显示一幅动态的画面。基本的游戏框架如下所示:

running = True

while running:

   event_check()
   update_game()
   render_game()

event_check是对在游戏中发生的事件进行检测。如按键检测可能改变某个角色的移动速度,而在update_game的时候角色就会以不同的速度定位坐标。
最后render_game就会重新画这个角色。再比如有关闭窗口事件,也就是单击了windows左上角的X按钮,这时退出事件发生了。我们可以在event_check中检测到这个事件,如果此事件发生,我们就让running为False,这样while循环就退出了。游戏也就结束了。

二、FPS (frames per second)

fps就是每秒显示的画面,一个画面就是一帧。在一个while游戏循环中,计算机是以最快的速度更新游戏逻辑与重画。可能每秒能重画几百次画面,换成专业术语就是说fps能达到几百。
可是我们经常不需要这么快,为什么呢?这样会耗费大量的计算时间,让计算机CPU及GPU温度升高。对于手机就更不是一个好事情了。一般只要有个每秒画60次画面就行了。所以在render_game后,我们来一个等待一定的时间,当时间到了后才进行下一次循环,这样就能控制fps了。
如果还不明白,那么举个例子,我想fps为1,那这个fps就很慢了,1秒才渲染一幅画。假设event_check,update_game与render_game运行完只要0.00001秒。那么就需要等待0.99999秒。
所以要控制帧率,那么程序大概如下所示:

 

running = True
clock = Tick()

You must log in to read the rest of this article. Please log in or register as a user.