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 相关文章推荐
Cannot modify header information错误解决方法
Oct 08 PHP
PHP 批量更新网页内容实现代码
Jan 05 PHP
php记录代码执行时间(实现代码)
Jul 05 PHP
PHP登陆后跳转到登陆前页面实现思路及代码
Jan 17 PHP
探寻PHP脚本不报错的原因
Jun 12 PHP
PHP中使用glob函数实现一句话删除某个目录下的所有文件
Jul 22 PHP
php动态函数调用方法
May 21 PHP
PHP中调用C/C++制作的动态链接库的教程
Mar 10 PHP
Symfony2学习笔记之模板用法详解
Mar 17 PHP
PHP面向对象程序设计类的定义与用法简单示例
Dec 27 PHP
ThinkPHP实现的rsa非对称加密类示例
May 29 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
Mar 30 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
PHP入门速成(2)
2006/10/09 PHP
php修改时间格式的代码
2011/05/29 PHP
PHP接收json 并将接收数据插入数据库的实现代码
2015/12/01 PHP
thinkPHP自定义类实现方法详解
2016/11/30 PHP
详谈phpAdmin修改密码后拒绝访问的问题
2017/04/03 PHP
javascript延时重复执行函数 lLoopRun.js
2007/06/29 Javascript
js实现点击左右按钮轮播图片效果实例
2015/01/29 Javascript
jQuery实现左侧导航模块的显示与隐藏效果
2016/07/04 Javascript
VUE中使用Vue-resource完成交互
2017/07/21 Javascript
对Vue table 动态表格td可编辑的方法详解
2018/08/28 Javascript
Vue中使用方法、计算属性或观察者的方法实例详解
2018/10/31 Javascript
详解VUE前端按钮权限控制
2019/04/26 Javascript
Vue拖拽组件列表实现动态页面配置功能
2019/06/17 Javascript
Mac OS X10.9安装的Python2.7升级Python3.3步骤详解
2013/12/04 Python
github配置使用指南
2014/11/18 Python
Python socket C/S结构的聊天室应用实现
2014/11/30 Python
Python的Django框架中设置日期和字段可选的方法
2015/07/17 Python
django主动抛出403异常的方法详解
2019/01/04 Python
对python中词典的values值的修改或新增KEY详解
2019/01/20 Python
nginx黑名单和django限速,最简单的防恶意请求方法分享
2019/08/09 Python
Numpy之reshape()使用详解
2019/12/26 Python
tensorflow使用CNN分析mnist手写体数字数据集
2020/06/17 Python
Django框架请求生命周期实现原理
2020/11/13 Python
详解CSS3选择器的使用方法汇总
2015/11/24 HTML / CSS
关键字throw与throws的用法差异
2016/11/22 面试题
《三袋麦子》教学反思
2014/03/02 职场文书
小学教师个人先进事迹材料
2014/05/17 职场文书
室内设计专业自荐信
2014/05/31 职场文书
促销活动总结模板
2014/07/01 职场文书
学习心理学的体会
2014/11/07 职场文书
淮阳太昊陵导游词
2015/02/10 职场文书
奖励申请报告范文
2015/05/15 职场文书
Python利用机器学习算法实现垃圾邮件的识别
2021/06/28 Python
python ConfigParser库的使用及遇到的坑
2022/02/12 Python
JavaWeb实现显示mysql数据库数据
2022/03/19 Java/Android
Java设计模式中的命令模式
2022/04/28 Java/Android