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 相关文章推荐
php根据isbn书号查询amazon网站上的图书信息的示例
Feb 13 PHP
php调用C代码的实现方法
Mar 11 PHP
php中chdir()函数用法实例
Nov 13 PHP
PHP简单选择排序算法实例
Jan 26 PHP
php检查页面是否被百度收录
Oct 28 PHP
分享PHP源码批量抓取远程网页图片并保存到本地的实现方法
Dec 01 PHP
学习php设计模式 php实现命令模式(command)
Dec 08 PHP
在openSUSE42.1下编译安装PHP7 的方法
Dec 24 PHP
php通过PHPExcel导入Excel表格到MySQL数据库的简单实例
Oct 29 PHP
PHP中Notice错误常见解决方法
Apr 28 PHP
浅谈PHP中的Trait使用方法
Mar 22 PHP
再谈Yii Framework框架中的事件event原理与应用
Apr 07 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
利用yahoo汇率接口实现实时汇率转换示例 汇率转换器
2014/01/14 PHP
去掉destoon资讯内容页keywords关键字自带的文章标题的方法
2014/08/21 PHP
php中header设置常见文件类型的content-type
2015/06/23 PHP
PHP实现linux命令tail -f
2016/02/22 PHP
CodeIgniter记录错误日志的方法全面总结
2016/05/17 PHP
thinkphp5+layui实现的分页样式示例
2019/10/08 PHP
PHP实现限制域名访问的实现代码(本地验证)
2020/09/13 PHP
Gambit vs ForZe BO3 第二场 2.13
2021/03/10 DOTA
JScript中使用ADODB.Stream判断文件编码的代码
2008/06/09 Javascript
正则表达式优化JSON字符串的技巧
2015/12/24 Javascript
AngularJS 路由和模板实例及路由地址简化方法(必看)
2016/06/24 Javascript
JavaScript实现刷新不重记的倒计时
2016/08/10 Javascript
Node.js的环境安装配置(使用nvm方式)
2016/10/11 Javascript
jQuery EasyUI 获取tabs的实例解析
2016/12/06 Javascript
js querySelector() 使用方法
2016/12/21 Javascript
前端MVVM框架解析之双向绑定
2018/01/24 Javascript
nodejs acl的用户权限管理详解
2018/03/14 NodeJs
javascript实现简易聊天室
2019/07/12 Javascript
vue.js 子组件无法获取父组件store值的解决方式
2019/11/08 Javascript
在vue中给后台接口传的值为数组的格式代码
2020/11/12 Javascript
vue-router路由懒加载及实现的3种方式
2021/02/28 Vue.js
对python numpy数组中冒号的使用方法详解
2018/04/17 Python
浅析Python装饰器以及装饰器模式
2018/05/28 Python
Python列表切片操作实例总结
2019/02/19 Python
pycharm重命名文件的方法步骤
2019/07/29 Python
借助Paramiko通过Python实现linux远程登陆及sftp的操作
2020/03/16 Python
python使用信号量动态更新配置文件的操作
2020/04/01 Python
Python unittest基本使用方法代码实例
2020/06/29 Python
PyCharm vs VSCode,作为python开发者,你更倾向哪种IDE呢?
2020/08/17 Python
Python JSON常用编解码方法代码实例
2020/09/05 Python
捷克钓鱼用品网上商店:Parys.cz
2018/06/15 全球购物
Made in Design英国:设计家具、照明、家庭装饰和花园家具
2019/09/24 全球购物
一个大学生十年的职业规划
2014/01/17 职场文书
护士岗位职责
2014/02/16 职场文书
个人银行贷款担保书
2014/04/01 职场文书
创业计划书之寿司
2019/07/19 职场文书