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 相关文章推荐
加速XP搜索功能堪比vista
Mar 22 PHP
php中的MVC模式运用技巧
May 03 PHP
PHP截取汉字乱码问题解决方法mb_substr函数的应用
Mar 30 PHP
array_multisort实现PHP多维数组排序示例讲解
Jan 04 PHP
php GeoIP的使用教程
Mar 09 PHP
PHP取进制余数函数代码
Jan 19 PHP
php第一次无法获取cookie问题处理
Dec 15 PHP
php中有关合并某一字段键值相同的数组合并的改进
Mar 10 PHP
PHP数组操作――获取数组最后一个值的方法
Apr 14 PHP
php实现在站点里面添加邮件发送的功能
Apr 28 PHP
解决Laravel5.x的php artisan migrate数据库迁移创建操作报错SQLSTATE[42000]
Apr 06 PHP
Git命令之分支详解
Mar 02 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 柱状图实现代码
2009/12/04 PHP
PHP Zip解压 文件在线解压缩的函数代码
2010/05/26 PHP
如何使用PHP计算上一个月的今天
2013/05/23 PHP
zf框架的Filter过滤器使用示例
2014/03/13 PHP
使用git迁移Laravel项目至新开发环境的步骤详解
2020/04/06 PHP
JS类中定义原型方法的两种实现的区别
2007/03/08 Javascript
IE6下CSS图片缓存问题解决方法
2010/12/09 Javascript
jQuery学习笔记 操作jQuery对象 属性处理
2012/09/19 Javascript
javascript 回到顶部效果的实现代码
2014/02/17 Javascript
node.js中的fs.unlink方法使用说明
2014/12/15 Javascript
JavaScript设计模式之原型模式(Object.create与prototype)介绍
2014/12/28 Javascript
最原始的jQuery注册验证方式
2016/10/11 Javascript
快速实现jQuery多级菜单效果
2017/02/01 Javascript
AngularJS 实现购物车全选反选功能
2017/10/24 Javascript
javascript+HTML5 canvas绘制时钟功能示例
2019/05/15 Javascript
[41:56]Spirit vs Liquid Supermajor小组赛A组 BO3 第一场 6.2
2018/06/03 DOTA
Python的Flask框架中Flask-Admin库的简单入门指引
2015/04/07 Python
利用Python中的输入和输出功能进行读取和写入的教程
2015/04/14 Python
深入理解Python中变量赋值的问题
2017/01/12 Python
Python开发的实用计算器完整实例
2017/05/10 Python
Python3.6安装及引入Requests库的实现方法
2018/01/24 Python
python接口自动化如何封装获取常量的类
2019/12/24 Python
TensorFlow实现保存训练模型为pd文件并恢复
2020/02/06 Python
巧用CSS3 border实现图片遮罩效果代码
2012/04/09 HTML / CSS
性能服装:HYLETE
2018/08/14 全球购物
最新的小工具和卓越的产品设计:Oh That Tech!
2019/08/07 全球购物
应聘编辑职位自荐信范文
2014/01/05 职场文书
教育系统干部作风整顿心得体会
2014/09/09 职场文书
学校领导班子群众路线整改措施
2014/09/16 职场文书
政风行风评议心得体会
2014/10/21 职场文书
党小组推荐意见
2015/06/02 职场文书
2019关于实习生工作安排及待遇的管理方案!
2019/07/16 职场文书
企业转让协议书(范文2篇)
2019/08/15 职场文书
一看就懂的MySQL的聚簇索引及聚簇索引是如何长高的
2021/05/25 MySQL
如何在pycharm中快捷安装pip命令(如pygame)
2021/05/31 Python
Python  序列化反序列化和异常处理的问题小结
2022/12/24 Python