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
文章推荐系统(三)
Oct 09 PHP
一步一步学习PHP(5) 类和对象
Feb 16 PHP
批量获取memcache值并按key的顺序返回的实现代码
Jun 14 PHP
php实现用于验证所有类型的信用卡类
Mar 24 PHP
php结合redis高并发下发帖、发微博的实现方法
Dec 15 PHP
基于Codeigniter框架实现的student信息系统站点动态发布功能详解
Mar 23 PHP
php 中htmlentities导致中文无法查询问题
Sep 10 PHP
PHP Cli 模式设置进程名称的方法
Jun 12 PHP
PHP基于timestamp和nonce实现的防止重放攻击方案分析
Jul 26 PHP
TP5框架请求响应参数实例分析
Oct 17 PHP
PHP 实现重载
Mar 09 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
法压式咖啡之制作法
2021/03/03 冲泡冲煮
PHP使用array_merge重新排列数组下标的方法
2015/07/22 PHP
JS Excel读取和写入操作(模板操作)实现代码
2010/04/11 Javascript
jquery 漂亮的删除确认和提交无刷新删除示例
2013/11/13 Javascript
js动态创建标签示例代码
2014/06/09 Javascript
jquery中使用循环下拉菜单示例代码
2014/09/24 Javascript
js图片翻书效果代码分享
2015/08/20 Javascript
Prototype框架详解
2015/11/25 Javascript
深入学习AngularJS中数据的双向绑定机制
2016/03/04 Javascript
原生JS实现在线问卷调查投票特效
2017/01/03 Javascript
lhgcalendar时间插件限制只能选择三个月的实现方法
2017/07/03 Javascript
mui开发中获取单选按钮、复选框的值(实例讲解)
2017/07/24 Javascript
浅谈Express异步进化史
2017/09/09 Javascript
webpack项目轻松混用css module的方法
2018/06/12 Javascript
微信小程序 高德地图路线规划实现过程详解
2019/08/05 Javascript
使用Vue-Awesome-Swiper实现旋转叠加轮播效果&平移轮播效果
2019/08/16 Javascript
使用flow来规范javascript的变量类型
2019/09/12 Javascript
小程序实现上下移动切换位置
2019/09/23 Javascript
在vue+element ui框架里实现lodash的debounce防抖
2019/11/13 Javascript
JavaScript自定义超时API代码实例
2020/04/30 Javascript
编写简单的Python程序来判断文本的语种
2015/04/07 Python
python tkinter canvas 显示图片的示例
2019/06/13 Python
Django ORM 查询管理器源码解析
2019/08/05 Python
使用Python Tkinter实现剪刀石头布小游戏功能
2020/10/23 Python
python+selenium爬取微博热搜存入Mysql的实现方法
2021/01/27 Python
Michael Kors澳大利亚官网:世界知名的奢侈饰品和成衣设计师
2020/02/13 全球购物
sealed修饰符是干什么的
2012/10/23 面试题
什么是makefile? 如何编写makefile?
2013/01/02 面试题
小学毕业感言150字
2014/02/05 职场文书
2014年计生标语
2014/06/23 职场文书
小学生九一八纪念日83周年演讲稿500字
2014/09/17 职场文书
师德师风事迹材料
2014/12/20 职场文书
幼儿园六一儿童节演讲稿
2015/03/19 职场文书
MySQL pt-slave-restart工具的使用简介
2021/04/07 MySQL
Django利用AJAX技术实现博文实时搜索
2021/05/06 Python
Android Studio实现简易进制转换计算器
2022/05/20 Java/Android