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 相关文章推荐
基于文本的访客签到簿
Oct 09 PHP
php iconv() : Detected an illegal character in input string
Dec 05 PHP
php使用fopen创建utf8编码文件的方法
Oct 31 PHP
php购物车实现方法
Jan 03 PHP
PHP两种快速排序算法实例
Feb 15 PHP
php根据某字段对多维数组进行排序的方法
Mar 07 PHP
盘点PHP和ASP.NET的10大对比!
Dec 24 PHP
PHP搭建大文件切割分块上传功能示例
Jan 04 PHP
php计算多个集合的笛卡尔积实例详解
Feb 16 PHP
Yii2 队列 shmilyzxt/yii2-queue 简单概述
Aug 02 PHP
详细解读php的命名空间(二)
Feb 21 PHP
Laravel框架自定义验证过程实例分析
Feb 01 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中配置文件操作 如config.php文件的读取修改等操作
2012/07/07 PHP
PHPThumb图片处理实例
2014/05/03 PHP
yii中widget的用法
2014/12/03 PHP
CL vs ForZe BO5 第五场 2.13
2021/03/10 DOTA
javascript JSON操作入门实例
2010/04/16 Javascript
基于jquery的鼠标拖动效果代码
2012/05/30 Javascript
window.onload与$(document).ready()的区别分析
2015/05/30 Javascript
浅谈利用JavaScript进行的DDoS攻击原理与防御
2015/06/04 Javascript
深入分析下javascript中的[]()+!
2015/07/07 Javascript
js实现浮动在网页右侧的简洁QQ在线客服代码
2015/09/04 Javascript
初识angular框架后的所思所想
2016/02/19 Javascript
javascript函数自动执行常用方法汇总
2016/03/28 Javascript
BootStrap框架个人总结(bootstrap框架、导航条、下拉菜单、轮播广告carousel、栅格系统布局、标签页tabs、模态框、菜单定位)
2016/12/01 Javascript
javascript 定时器工作原理分析
2016/12/03 Javascript
javascript工厂模式和构造函数模式创建对象方法解析
2016/12/30 Javascript
redux-saga 初识和使用
2018/03/10 Javascript
node 命令方式启动修改端口的方法
2018/05/12 Javascript
Vue实现本地购物车功能
2018/12/05 Javascript
微信小程序自定义可滑动顶部TabBar选项卡实现页面切换功能示例
2019/05/14 Javascript
JS实现纵向轮播图(初级版)
2020/01/18 Javascript
基于Python的身份证号码自动生成程序
2014/08/15 Python
Python编程实现及时获取新邮件的方法示例
2017/08/10 Python
python 多维切片之冒号和三个点的用法介绍
2018/04/19 Python
对Python3 pyc 文件的使用详解
2019/02/16 Python
Flask框架学习笔记之表单基础介绍与表单提交方式
2019/08/12 Python
Python魔术方法专题
2020/06/19 Python
Python self用法详解
2020/11/28 Python
matplotlib阶梯图的实现(step())
2021/03/02 Python
英国最大的婴儿监视器网上商店:Baby Monitors Direct
2018/04/24 全球购物
英国最好的温室之家:Greenhouses Direct
2019/07/13 全球购物
通用C#笔试题附答案
2016/11/26 面试题
大学生最常用的自我评价
2013/12/07 职场文书
大学生军训自我鉴定
2014/02/12 职场文书
巴西世界杯32强口号
2014/06/05 职场文书
在职证明格式样本
2015/06/15 职场文书
Python中Permission denied的解决方案
2021/04/02 Python