loopgame在python loop什么意思

 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
Python Pygame游戏学习初级教程
下载积分:1000
内容提示:Python Pygame游戏学习初级教程
文档格式:PDF|
浏览次数:4|
上传日期: 20:41:30|
文档星级:
全文阅读已结束,如果下载本文需要使用
 1000 积分
下载此文档
该用户还上传了这些文档
Python Pygame游戏学习初级教程
关注微信公众号用Python和Pygame写游戏-从入门到精通(1) | 目光博客
Theme | Powered by关于gameloop - CSDN博客
关于gameloop
& & gameloop顾名思义就是游戏的主循环了。不过因为机器的不同,为了带来更好的gameplay,需要对GameLoop进行一个深入的探究。
第一:最简单的
while( true ) {
什么都不需要管,简单了事。但是问题多多。如果还恒定的机器上还好,恒定以一个速率来刷新。但是如果在卡的机器下面,你就gg了。你会发现你什么都不能控制。发出去的子弹可以时快时慢。
第二:可以感知时间的流逝。
&span style=&font-family: Arial, Helvetica, sans-&&double lastTime = getCurrentTime();&/span&&pre name=&code& class=&cpp&&while (true)
double current = getCurrentTime();
double elapsed = current - lastT
processInput();
update(elapsed);
lastTime =
这样的话我们就可以根据经过的时间进行对应的刷新。但是这个还是会有致命伤,无论在快还是慢的机器上!在慢的机器上,本来就会感受到卡顿。然后在快的机器上,因为float,double的关系,会将误会越拉越大。
第三:以恒定的速度刷新
double previous = getCurrentTime();
double lag = 0.0;
while (true)
double current = getCurrentTime();
double elapsed = current -
previous =
processInput();
while (lag &= MS_PER_UPDATE)
lag -= MS_PER_UPDATE;
这样的话,无论在慢的机器上或者在快的机器上,update函数调用的次数跟MS_PER_UPDATE这个参数相关。MS_PER_UPDATE一般是大于60FPS,而且还要大于update函数所需要的时间。不然的话,内部那个循环可能跳不出去。还有一个注意的的是,render可以在两次update之间出现,因为lag有剩余。update() | render() | update()。会出现怎么样一种情况呢,就是一个子弹第一次update在屏幕左侧,render的时候理论上子弹应该在中央的问题,下一次update便在屏幕右侧,因为render也是需要时间的,但是由于上述问题,render期间并没有计算子弹飞行的距离,所以造成这样的现象。那么解决方法就是传入一个时间差,render(lag/MS_PRE_UPDATE),这样的render的时候就可以补上lag的剩余了。
本文已收录于以下专栏:
相关文章推荐
经过大量前辈的实践证明,C#中Timer们的精度都无法达到让
他的最新文章
讲师:何宇健
讲师:董岩
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)python程序:两个小孩玩剪刀石头布游戏,一人十分,赢一次得一分,输一次减一分,平手不扣分,当没_百度宝宝知道

我要回帖

更多关于 python mainloop作用 的文章

 

随机推荐