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 相关文章推荐
Zend引擎的发展 [15]
Oct 09 PHP
基于mysql的bbs设计(一)
Oct 09 PHP
PHP使用Mysqli类库实现完美分页效果的方法
Apr 07 PHP
yii2超好用的日期组件和时间组件
May 05 PHP
微信自定义菜单的创建/查询/取消php示例代码
Aug 05 PHP
基于thinkPHP3.2实现微信接入及查询token值的方法
Apr 18 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
Feb 07 PHP
PHP的RSA加密解密方法以及开发接口使用
Feb 11 PHP
php-app开发接口加密详解
Apr 18 PHP
PHP的curl函数的用法总结
Feb 14 PHP
PHP中abstract(抽象)、final(最终)和static(静态)原理与用法详解
Jun 05 PHP
详解使用php-cs-fixer格式化代码
Sep 16 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
DOTA2 玩家自创拉野攻略 特色英雄快速成长篇
2020/04/20 DOTA
PHP将URL转换成短网址的算法分享
2016/09/13 PHP
可实现多表单提交的javascript函数
2007/08/01 Javascript
asp.net+jquery滚动滚动条加载数据的下拉控件
2010/06/25 Javascript
在次封装easyui-Dialog插件实现代码
2010/11/14 Javascript
javascript中全局对象的parseInt()方法使用介绍
2013/12/19 Javascript
JS实现关键字搜索时的相关下拉字段效果
2014/08/05 Javascript
推荐5 个常用的JavaScript调试技巧
2015/01/08 Javascript
Node.js 制作实时多人游戏框架
2015/01/08 Javascript
jquery操作复选框checkbox的方法汇总
2015/02/05 Javascript
JavaScript中的关联数组问题
2015/03/04 Javascript
JS根据key值获取URL中的参数值及把URL的参数转换成json对象
2015/08/26 Javascript
js将字符串中的每一个单词的首字母变为大写其余均为小写
2017/01/05 Javascript
在点击div中的p时,如何阻止事件冒泡
2017/02/07 Javascript
Vue.js事件处理器与表单控件绑定详解
2017/03/20 Javascript
JS实现列表页面隔行变色效果
2017/03/25 Javascript
Javascript实现信息滚动效果
2017/05/18 Javascript
Popup弹出框添加数据实现方法
2017/10/27 Javascript
vue中添加mp3音频文件的方法
2018/03/02 Javascript
jquery实现拖拽小方块效果
2020/12/10 jQuery
python生成验证码图片代码分享
2016/01/28 Python
python 循环读取txt文档 并转换成csv的方法
2018/10/26 Python
Python3网络爬虫中的requests高级用法详解
2019/06/18 Python
python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作
2019/12/11 Python
Python装饰器实现方法及应用场景详解
2020/03/26 Python
Python描述数据结构学习之哈夫曼树篇
2020/09/07 Python
Django搭建项目实战与避坑细节详解
2020/12/06 Python
HTML5学习笔记之History API
2015/02/26 HTML / CSS
财务人员个人求职信范文
2013/12/04 职场文书
小学生考试获奖感言
2014/01/30 职场文书
餐饮企业总经理岗位职责范文
2014/02/18 职场文书
会计演讲稿范文
2014/05/23 职场文书
工厂仓管员岗位职责范本
2014/07/17 职场文书
日语系毕业求职信
2014/07/27 职场文书
平遥古城导游词
2015/02/03 职场文书
JavaScript 中for/of,for/in 的详细介绍
2021/11/17 Javascript