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边学边教》(04.编写简易的通讯录――视频教程1)
Dec 13 PHP
php将数据库导出成excel的方法
May 07 PHP
php设计模式 Facade(外观模式)
Jun 26 PHP
PHP 登录记住密码实现思路
May 07 PHP
PHP中使用strpos函数实现屏蔽敏感关键字功能
Aug 21 PHP
PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法
Aug 28 PHP
Thinkphp中数据按分类嵌套循环实现方法
Oct 30 PHP
PHP array_key_exists检查键名或索引是否存在于数组中的实现方法
Jun 13 PHP
PDO操作MySQL的基础教程(推荐)
Aug 18 PHP
PHP实现的字符串匹配算法示例【sunday算法】
Dec 19 PHP
php实现的AES加密类定义与用法示例
Jan 29 PHP
PHP操作XML中XPath的应用示例
Jul 04 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
利用static实现表格的颜色隔行显示
2006/10/09 PHP
PHP连接MongoDB示例代码
2012/09/06 PHP
ThinkPHP 3.2 数据分页代码分享
2014/10/14 PHP
PHPUnit安装及使用示例
2014/10/29 PHP
php调用shell的方法
2014/11/05 PHP
thinkphp常见路径用法分析
2014/12/02 PHP
用php守护另一个php进程的例子
2015/02/13 PHP
php 在线导入mysql大数据程序
2015/06/11 PHP
php7性能提升的原因详解
2019/10/13 PHP
input按钮的事件处理大全
2010/12/10 Javascript
extjs中grid中嵌入动态combobox的应用
2011/01/01 Javascript
javascript获取url上某个参数的方法
2013/11/08 Javascript
使用jquery.qrcode生成彩色二维码实例
2014/08/08 Javascript
了不起的node.js读书笔记之node.js中的特性
2014/12/22 Javascript
深入探寻seajs的模块化与加载方式
2015/04/14 Javascript
用nodejs搭建websocket服务器
2017/01/23 NodeJs
jQuery实现的手风琴侧边菜单效果
2017/03/29 jQuery
angular中不同的组件间传值与通信的方法
2017/11/04 Javascript
Vue条件循环判断+计算属性+绑定样式v-bind的实例
2018/09/18 Javascript
详解从vue-loader源码分析CSS Scoped的实现
2019/09/23 Javascript
Python 实现日志同时输出到屏幕和文件
2020/02/19 Python
Python selenium文件上传下载功能代码实例
2020/04/13 Python
3分钟看懂Python后端必须知道的Django的信号机制
2020/07/26 Python
Ibatis如何使用动态表名
2015/07/12 面试题
介绍一下Linux中的链接
2016/06/05 面试题
优秀团队获奖感言
2014/02/19 职场文书
感恩的演讲稿
2014/05/06 职场文书
家长学校培训材料
2014/08/20 职场文书
违反交通法规检讨书
2014/09/10 职场文书
一份没有按时交货失信于客户的检讨书
2014/09/19 职场文书
卖房授权委托书样本
2014/10/05 职场文书
建筑工地文明标语
2014/10/09 职场文书
2014年保洁员工作总结
2014/11/19 职场文书
2015年乡镇扶贫工作总结
2015/04/08 职场文书
敬老院志愿者活动总结
2015/05/06 职场文书
签证扫盲贴,41个常见签证知识,需要的拿走
2019/08/09 职场文书