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


Posted in PHP onJune 26, 2014

十六、造船和防御(FleetBuildingPage.php与DefensesBuildingPage.php页面)

先说造船厂页面,其实这个页面中并没有真正的造船,只是把要造的船和数量保存到数据库中;产生船舰的代码在另外一个函数里面。下面我们开始分析这个页面,并且也按照前面的思路,先讲解构造页面的代码。

首先判断本星球是否已有造船厂,没有当然要提示。

下面使用循环语句,构造出每种船舰的建造页面,这段代码我觉得不需要再详细讲解了。

接下来是要显示正在制造的船舰列表,要脚本动态显示,实际上是假像;即使显示有船舰造好了,如果不是刷新,数据库里面并不会有。注意这里有两个重要的字段:b_hangar_id保存着要造的船列表;b_hangar保存着上次更新后剩下的时间,单位是秒。

使用函数ElementBuildListBox(),构造出一个正在造船的脚本,函数代码大家自己看,不难,只要理解了前面我说的两个字段就可以了。

最后输出造船厂页面。

现在我们又回到前面,玩家输入要制造的船舰的数量,进入这段代码。

1.取得要制造的船舰代码和数量
2.判断制造的数量是否超过允许的最大值,超过则取最大值
3.如果制造数量不为零,判断是否允许制造
4.然后取得当前资源能制造的最大值
5.设置资源消耗和时间消耗
6.最后更新星球数据,包括减少资源和建造船舰的字段b_hangar_id,贴出代码如下:

if ($Count >= 1) {
 $CurrentPlanet['metal'] -= $Ressource['metal'];
 $CurrentPlanet['crystal'] -= $Ressource['crystal'];
 $CurrentPlanet['deuterium'] -= $Ressource['deuterium'];
 $CurrentPlanet['b_hangar_id'].= "". $Element .",". $Count .";";
}

造船厂页面完成了,下面我们来看防御页面。这个页面基本逻辑和造船厂一样,这里就不写了。不同的是多一些逻辑限制,罗列出来如下:

1.在构造防御单位页面的时候,代码407和408是大小防御护盾,要注意只能有一个
2.在玩家输入数量后的制造代码里面,代码502和503是拦截导弹和星际导弹,要注意两个导弹的数量关系和正在制造列表里面的导弹数量
3.同样使用字段b_hangar_id保存

造船和防御页面简单的讲解完了,最重要的制造代码在另外一个函数里面,下一章节分析。

PHP 相关文章推荐
通过文字传递创建的图形按钮
Oct 09 PHP
PHP 彩色文字实现代码
Jun 29 PHP
PHP入门学习笔记之一
Oct 12 PHP
PHP中for与foreach的区别分析
Mar 09 PHP
在php中判断一个请求是ajax请求还是普通请求的方法
Jun 28 PHP
PHP图片自动裁切应付不同尺寸的显示
Oct 16 PHP
php获取四位字母和数字的随机数的实现方法
Jan 09 PHP
PHP 生成N个不重复的随机数
Jan 21 PHP
PHP使用缓存即时输出内容(output buffering)的方法
Aug 03 PHP
浅析Yii2集成富文本编辑器redactor实例教程
Apr 25 PHP
PHP正则表达式处理函数(PCRE 函数)实例小结
May 09 PHP
关于laravel5.5的定时任务详解(demo)
Oct 23 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
destoon实现商铺管理主页设置增加新菜单的方法
Jun 26 #PHP
You might like
Ajax+PHP 边学边练 之二 实例
2009/11/24 PHP
Base64在线编码解码实现代码 演示与下载
2011/01/08 PHP
解析关于wamp启动是80端口被占用的问题
2013/06/21 PHP
PHP检测字符串是否为UTF8编码的常用方法
2014/11/21 PHP
PHP+Jquery与ajax相结合实现下拉淡出瀑布流效果【无需插件】
2016/05/06 PHP
php微信高级接口调用方法(自定义菜单接口、客服接口、二维码)
2016/11/28 PHP
javascript 写类方式之七
2009/07/05 Javascript
基于jquery的一个简单的脚本验证插件
2010/04/05 Javascript
UpdatePanel和Jquery冲突的解决方法
2013/04/01 Javascript
js中top的作用深入剖析
2014/03/04 Javascript
jQuery构造函数init参数分析续
2015/05/13 Javascript
js点击列表文字对应该行显示背景颜色的实现代码
2015/08/05 Javascript
jQuery Mobile动态刷新页面样式的实现方法
2016/05/28 Javascript
Js 获取当前函数参数对象的实现代码
2016/06/20 Javascript
基于js实现二级下拉联动
2016/12/17 Javascript
NodeJs 文件系统操作模块fs使用方法详解
2018/11/26 NodeJs
js实现简易计算器功能
2019/10/18 Javascript
js判断浏览器的环境(pc端,移动端,还是微信浏览器)
2020/12/24 Javascript
python通过ElementTree操作XML获取结点读取属性美化XML
2013/12/02 Python
Python实现的购物车功能示例
2018/02/11 Python
十分钟利用Python制作属于你自己的个性logo
2018/05/07 Python
详解python中的线程与线程池
2019/05/10 Python
Python实现Selenium自动化Page模式
2019/07/14 Python
Django 创建/删除用户的示例代码
2019/07/24 Python
python文件和文件夹复制函数
2020/02/07 Python
python 轮询执行某函数的2种方式
2020/05/03 Python
python线性插值解析
2020/07/05 Python
解决pytorch 交叉熵损失输出为负数的问题
2020/07/07 Python
Python-openpyxl表格读取写入的案例详解
2020/11/02 Python
Python 求向量的余弦值操作
2021/03/04 Python
目标管理责任书
2014/04/15 职场文书
宣传工作经验材料
2014/06/02 职场文书
运动会铅球比赛加油稿
2014/09/26 职场文书
用Python实现Newton插值法
2021/04/17 Python
如何理解Vue简单状态管理之store模式
2021/05/15 Vue.js
为什么代码规范要求SQL语句不要过多的join
2021/06/23 MySQL