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会员权限控制实现原理分析
May 29 PHP
php 中文字符串首字母的获取函数分享
Nov 04 PHP
PHP运行SVN命令显示某用户的文件更新记录的代码
Jan 03 PHP
仿dedecms下拉分页样式修改的thinkphp分页类实例
Oct 30 PHP
php curl登陆qq后获取用户信息时证书错误
Feb 03 PHP
php使用parse_url和parse_str解析URL
Feb 22 PHP
PHP之预定义接口详解
Jul 29 PHP
PHP简单检测网址是否能够正常打开的方法
Sep 04 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
Aug 30 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
Nov 16 PHP
php统计数组不同元素的个数的实例方法
Sep 26 PHP
laravel-admin select框默认选中的方法
Oct 03 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
重置版游戏视频
2020/04/09 魔兽争霸
详解PHP中的 input属性(隐藏 只读 限制)
2017/08/14 PHP
一款JavaScript压缩工具:X2JSCompactor
2007/06/13 Javascript
JavaScript实现文字跟随鼠标特效
2015/08/06 Javascript
javascript实现html页面之间参数传递的四种方法实例分析
2015/12/15 Javascript
AngularJs  Using $location详解及示例代码
2016/09/02 Javascript
AngularJS自定义插件实现网站用户引导功能示例
2016/11/07 Javascript
5种JavaScript脚本加载的方式
2017/01/16 Javascript
如何正确理解javascript的模块化
2017/03/02 Javascript
JavaScript高级函数应用之分时函数实例分析
2018/08/03 Javascript
JavaScript设计模式之代理模式实例分析
2019/01/16 Javascript
深入浅析vue中cross-env的使用
2019/09/12 Javascript
Java Varargs 可变参数用法详解
2020/01/28 Javascript
JavaScript实现下拉列表
2021/01/20 Javascript
python 2.7.14安装图文教程
2018/04/08 Python
OpenCV2从摄像头获取帧并写入视频文件的方法
2018/08/03 Python
python3 中文乱码与默认编码格式设定方法
2018/10/31 Python
python创建文件时去掉非法字符的方法
2018/10/31 Python
python列表,字典,元组简单用法示例
2019/07/11 Python
Python 操作 ElasticSearch的完整代码
2019/08/04 Python
在django中实现choices字段获取对应字段值
2020/07/12 Python
python 使用三引号时容易犯的小错误
2020/10/21 Python
VELTRA台湾:世界自由行专家
2017/08/15 全球购物
美国家用和厨房电器销售网站:Appliances Connection
2020/01/24 全球购物
英国婴儿产品专家:Samuel Johnston
2020/04/20 全球购物
装修协议书范本
2014/04/21 职场文书
天地会口号
2014/06/17 职场文书
中国梦演讲稿3分钟
2014/08/19 职场文书
2014年十一国庆节活动方案
2014/09/16 职场文书
交警失职检讨书
2015/01/26 职场文书
乡镇法制宣传日活动总结
2015/05/05 职场文书
2016年秋季开学典礼新闻稿
2015/11/25 职场文书
Python中的pprint模块
2021/11/27 Python
Netty客户端接入流程NioSocketChannel创建解析
2022/03/25 Java/Android
win10双系统怎么删除一个系统?win10电脑有两个系统删除一个的操作方法
2022/07/15 数码科技
Nginx如何配置多个服务域名解析共用80端口详解
2022/09/23 Servers