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