PHP网页游戏学习之Xnova(ogame)源码解读(十四)


Posted in PHP onJune 26, 2014

十七、资源更新(PlanetResourceUpdate.php页面)

前面基本把重要的功能讲解完了,这章节我们分析重要的一个函数PlanetResourceUpdate,主要功能是更新资源、制造船舰和防御单位;代码很有条理,下面是详细的说明:

1.计算星球的最大存储空间,包括系统设置的浮动值
2.计算星球三种资源的产量和能量消耗总量,包括专家的加成
3.如果星球是月球,以上计算的产量和能量直接为0
4.计算上次更新资源到现在的时间
5.计算由于能量比率而引起的产量变化,能量为0的时候,只有基本产量
6.接下来要判断是否假期了,不是假期的话,根据前面准备好的数据,计算出这段时间内的产量,并加到现有的资源里面
7.取得这段时间应该完成的船舰和防御数量,函数HandleElementBuildingQueue
8.构造SQL语句,提交给服务器,资源更新完成

这个函数在玩家每次点击每个功能的时候执行,给玩家的感觉好像资源是早计算好了一样,呵呵。不过在一些版本里面,当一个玩家长期不登录的时候,这个玩家的资源也就不能更新了;这个时候,需要处理这个玩家的资源更新,具体更新方法可以随便,我使用的是每次间谍探测时更新。

下面讲解下函数HandleElementBuildingQueue,逻辑不复杂,还是很容易理解的。
这里要记住: b_hangar_id是要建造的字符串,b_hangar是上次保持的建造时间

说明下:

1.先判断是否有建造队列
2.取得经过的时间并加上保持的时间
3.解析建造队列,保存在数组里面备用
4.下面foreach就是一个一个的建造了
5.最后如果有未造完的保持起来下次建造,并返回

PHP 相关文章推荐
php正则
Jul 07 PHP
PHP MSSQL 存储过程的方法
Dec 24 PHP
PHP HTML代码串截取代码
Dec 29 PHP
PHP递归返回值时出现的问题解决办法
Feb 19 PHP
解析PHP留言本模块主要功能的函数说明(代码可实现)
Jun 25 PHP
php用header函数实现301跳转代码实例
Nov 25 PHP
php判断类是否存在函数class_exists用法分析
Nov 14 PHP
php中smarty变量修饰用法实例分析
Jun 11 PHP
php结合md5的加密解密算法实例
Sep 30 PHP
php str_replace替换指定次数的方法详解
May 05 PHP
php中关于换行的实例写法
Sep 26 PHP
PHP中类与对象功能、用法实例解读
Mar 27 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十三)
Jun 26 #PHP
ThinkPHP模板自定义标签使用方法
Jun 26 #PHP
ThinkPHP调用百度翻译类实现在线翻译
Jun 26 #PHP
使用ThinkPHP+Uploadify实现图片上传功能
Jun 26 #PHP
ThinkPHP采用GET方式获取中文参数查询无结果的解决方法
Jun 26 #PHP
ThinkPHP实现将本地文件打包成zip下载
Jun 26 #PHP
ThinkPHP实现一键清除缓存方法
Jun 26 #PHP
You might like
PHP ? EasyUI DataGrid 资料取的方式介绍
2012/11/07 PHP
smarty高级特性之对象的使用方法
2015/12/25 PHP
javascript编程起步(第四课)
2007/02/27 Javascript
JavaScript CSS 修改学习第四章 透明度设置
2010/02/19 Javascript
深入理解JavaScript定时机制
2010/10/29 Javascript
jQuery 翻牌或百叶窗效果(内容三秒自动切换)
2012/06/14 Javascript
为指定的元素添加遮罩层的示例代码
2014/01/15 Javascript
JavaScript Promise 用法
2016/06/14 Javascript
jQuery EasyUI常用数据验证汇总
2016/09/18 Javascript
浅谈React 属性和状态的一些总结
2016/11/21 Javascript
对angular 实时更新模板视图的方法$apply详解
2018/10/09 Javascript
详解VSCode配置启动Vue项目
2019/05/14 Javascript
微信小程序swiper禁止用户手动滑动代码实例
2019/08/23 Javascript
redux处理异步action解决方案
2020/03/22 Javascript
解决node终端下运行js文件不支持ES6语法
2020/04/04 Javascript
Python里隐藏的“禅”
2014/06/16 Python
Python中列表和元组的使用方法和区别详解
2020/12/30 Python
Python实现的爬取网易动态评论操作示例
2018/06/06 Python
python将list转为matrix的方法
2018/12/12 Python
解决python给列表里添加字典时被最后一个覆盖的问题
2019/01/21 Python
Django模板Templates使用方法详解
2019/07/19 Python
python sqlite的Row对象操作示例
2019/09/11 Python
Selenium python时间控件输入问题解决方案
2020/07/22 Python
python中@contextmanager实例用法
2021/02/07 Python
详解解决jupyter不能使用pytorch的问题
2021/02/18 Python
解决TensorFlow训练模型及保存数量限制的问题
2021/03/03 Python
基于HTML5 audio元素播放声音jQuery小插件
2011/05/11 HTML / CSS
canvas仿写贝塞尔曲线的示例代码
2017/12/29 HTML / CSS
澳大利亚领先的美容护肤品零售商之一:SkincareStore
2018/01/22 全球购物
美国婚礼礼品网站:MyWeddingFavors
2018/09/26 全球购物
在职研究生自我鉴定
2013/10/16 职场文书
大学生简单自荐信
2013/11/10 职场文书
医师定期考核实施方案
2014/05/07 职场文书
2015年教导处教学工作总结
2015/07/22 职场文书
关于践行三严三实的心得体会
2016/01/05 职场文书
oracle重置序列从0开始递增1
2022/02/28 Oracle