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简单提示框alert封装函数
Aug 08 PHP
php iconv() : Detected an illegal character in input string
Dec 05 PHP
PHP 观察者模式的实现代码
May 10 PHP
php的dl函数用法实例
Nov 06 PHP
Codeigniter发送邮件的方法
Mar 19 PHP
[原创]PHP简单开启curl的方法(测试可行)
Jan 11 PHP
PHP文件上传之多文件上传的实现思路
Jan 27 PHP
PHP基于反射机制实现插件的可插拔设计详解
Nov 10 PHP
PHP输出XML格式数据的方法总结
Feb 08 PHP
PHP实现找出有序数组中绝对值最小的数算法分析
Aug 07 PHP
thinkPHP框架实现的简单计算器示例
Dec 07 PHP
php使用redis的几种常见操作方式和用法示例
Feb 20 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
论坛头像随机变换代码
2006/10/09 PHP
PHP获取数组中某元素的位置及array_keys函数应用
2013/01/29 PHP
php读取3389的脚本
2014/05/06 PHP
PHP实现通过正则表达式替换回调的内容标签
2015/06/15 PHP
修改PHP脚本使WordPress拦截垃圾评论的方法示例
2015/12/10 PHP
自动刷新网页,自动刷新当前页面,JS调用
2013/06/24 Javascript
jquery中load方法的用法及注意事项说明
2014/02/22 Javascript
用jQuery toggleClass 实现鼠标移上变色
2014/05/14 Javascript
JQuery实现当鼠标停留在某区域3秒后自动执行
2014/09/09 Javascript
图解Sublime Text3使用技巧
2015/12/21 Javascript
详解JavaScript中双等号引起的隐性类型转换
2016/05/30 Javascript
JS实现添加,替换,删除节点元素的方法
2016/06/30 Javascript
JS简单获取当前日期和农历日期的方法
2017/04/17 Javascript
基于JavaScript实现类名的添加与移除
2017/04/23 Javascript
详解angular ui-grid之过滤器设置
2017/06/07 Javascript
vue实现全选、反选功能
2020/11/17 Javascript
JS实现移动端按首字母检索城市列表附源码下载
2017/07/05 Javascript
在一个页面实现两个zTree联动的方法
2017/12/20 Javascript
Vue Element使用icon图标教程详解(第三方)
2018/02/07 Javascript
利用weixin-java-miniapp生成小程序码并直接返回图片文件流的方法
2019/03/29 Javascript
Vue中点击active并第一个默认选中功能的实现
2020/02/24 Javascript
[03:22]DAC最前线(第二期)—DOTA2亚洲邀请赛主赛场周边及线路探访
2015/01/24 DOTA
教你如何在Django 1.6中正确使用 Signal
2014/06/22 Python
python 字符串只保留汉字的方法
2018/11/16 Python
Python综合应用名片管理系统案例详解
2020/01/03 Python
Python通过Schema实现数据验证方式
2020/11/12 Python
威盛公司软件C++工程师笔试题面试题
2012/07/16 面试题
C#中有没有运算符重载?能否使用指针?
2014/05/05 面试题
医院总经理岗位职责
2014/02/04 职场文书
自主招生推荐信范文
2014/05/10 职场文书
查摆问题自我剖析材料
2014/08/18 职场文书
派出所班子党的群众路线对照检查材料思想汇报
2014/10/01 职场文书
2016年五四青年节校园广播稿
2015/12/17 职场文书
护士心得体会范文
2016/01/25 职场文书
Feign调用传输文件异常的解决
2021/06/24 Java/Android
十大经典日本动漫排行榜 海贼王第三,犬夜叉仅第八
2022/03/18 日漫