首页技术文章正文

Python游戏模块:游戏循环与游戏时钟

更新时间:2021-11-04 来源:黑马程序员 浏览量:

IT培训班


众所周知,游戏启动后一般由玩家手动关闭,但目前的程序在开启图形窗口并设做标题后退出,这是因为程序已经执行完毕。若要使游成保持运行,需要在程序中添加一个无限循环,循环代码如下:

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所示。

1635996537067_添加帧率控制语句.jpg

添加控制语句后





猜你喜欢:

while循环嵌套和for循环嵌套语法格式介绍【Python学习教程】

为什么要使用foreach循环?它有哪些优点和局限性?

python中的for循环详细介绍【代码演示】

循环神经网络(RNN)是什么?可以做什么?

黑马程序员Python+大数据开发开发培训

分享到:
在线咨询 我要报名
和我们在线交谈!