众所周知,游戏启动后一般由玩家手动关闭,但目前的程序在开启图形窗口并设做标题后退出,这是因为程序已经执行完毕。若要使游成保持运行,需要在程序中添加一个无限循环,循环代码如下:
在pygame display.set camption(‘数字推盘’)之后添加以上循环代码,程序将一直保持运行。
图形化游戏的画面通常是动态的,游戏中如何实现动画效果呢?这其实是利用了“视觉暂留”现象。研究表明,人眼在观察景物时,光信号传入大脑神经,需经过一段短暂的时间,光的作用结束后,视觉形象并不立即消失,而是残留在视网膜上。视觉的这一现象被称为“视觉暂留”。电影实际上也应用了这个原理一电 影胶片以每秒24格画面匀速运动,一系列静态画面就会因视觉暂留而造成一种连续的视觉印象,形成逼真的动感。
一般情况下,计算机上一秒绘制60帧(Frame)便能够达到非常连续、高品质的动画效果。换言之,窗口中刷新图像的频率只要不低于每秒60帧,就能够达到我们对动画效果的预期。修改循环代码,在循环体中通过数值累加可直观地观察循环体的执行频率,修改后的循环代码如下:
运行修改后的程序,可观察到命令行1秒后打印的数值远远超出了60,这说明循环体的执行频率非常高。过高的顿率意味着超高的负荷,通过任务管理器观察计算机性能,可注意到仅多运行了这一个程序,计算机CPU的占用率便增加了约20%。为了解决顿率过高的问题,需在程序中设置游戏时钟。pgeme的time模块专门提供了一个Clok类,通过该类的tiol )方法可以方便地设置游戏循环的执行频率,具体操作如下:
经过如上修改后,程序中while循环内的代码由高频执行转变为1秒执行FPS(60)次。
执行以上程序,通过任务管理器对比增加帧率控制语句前后CPU的占用情况,可发现CPU的使用率大大降低,如图7-3所示。