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 IN_ARRAY 函数使用注意事项
Jul 24 PHP
ThinkPHP让分页保持搜索状态的方法
Jul 02 PHP
PHP统计目录大小的自定义函数分享
Nov 18 PHP
php计算给定时间之前的函数用法实例
Apr 03 PHP
php实现随机生成易于记忆的密码
Jun 19 PHP
在Debian系统下配置LNMP的教程
Jul 09 PHP
基础的WordPress插件制作教程
Nov 24 PHP
PhpStorm terminal无法输入命令的解决方法
Oct 09 PHP
thinkPHP框架对接支付宝即时到账接口回调操作示例
Nov 14 PHP
Bootstrap+PHP实现多图上传功能实例详解
Apr 08 PHP
Mac下快速搭建PHP开发环境步骤详解
May 05 PHP
Laravel如何同时连接多个数据库详解
Aug 13 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分页类
2013/10/26 PHP
微信公众号开发之微信公共平台消息回复类实例
2014/11/14 PHP
php读取csv数据保存到数组的方法
2015/01/03 PHP
php版微信公众号接口实现发红包的方法
2016/10/14 PHP
浅谈PHP中的面向对象OOP中的魔术方法
2017/06/12 PHP
ThinkPHP5.1框架页面跳转及修改跳转页面模版示例
2019/05/06 PHP
JavaScript/jQuery 表单美化插件小结
2012/02/14 Javascript
js的onload事件及初始化按钮事件示例代码
2013/09/25 Javascript
js 跳出页面的frameset框架示例介绍
2013/12/23 Javascript
深入分析escape()、encodeURI()、encodeURIComponent()的区别及示例
2014/08/04 Javascript
JavaScript实现瀑布流布局
2020/06/28 Javascript
js阻止冒泡和默认事件(默认行为)详解
2016/10/20 Javascript
jQuery实现动态添加、删除按钮及input输入框的方法
2017/04/27 jQuery
vue 实现的树形菜的实例代码
2018/03/19 Javascript
微信小程序开发之自定义tabBar的实现
2018/09/06 Javascript
微信小程序如何实现五星评价功能
2019/10/15 Javascript
js对象简介与基本用法示例
2020/03/13 Javascript
深度解读vue-resize的具体用法
2020/07/08 Javascript
小程序实现列表展开收起效果
2020/07/29 Javascript
Postman环境变量全局变量使用方法详解
2020/08/13 Javascript
vue组件实现移动端九宫格转盘抽奖
2020/10/16 Javascript
[51:30]OG vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.26
2018/08/30 DOTA
python dataframe 输出结果整行显示的方法
2018/06/14 Python
Django之使用内置函数和celery发邮件的方法示例
2019/09/16 Python
python输入错误后删除的方法
2019/10/12 Python
python实现实时视频流播放代码实例
2020/01/11 Python
Python序列化pickle模块使用详解
2020/03/05 Python
Django实现文章详情页面跳转代码实例
2020/09/16 Python
python 如何读、写、解析CSV文件
2021/03/03 Python
HTML5+CSS3模仿优酷视频截图功能示例
2017/01/05 HTML / CSS
Rakuten Kobo台湾:电子书、eReaders和Reading应用程式
2017/11/24 全球购物
微软马来西亚官方网站:Microsoft马来西亚
2019/11/22 全球购物
英语一分钟演讲稿
2014/04/29 职场文书
技校毕业生自荐信
2014/06/03 职场文书
小学国旗下的演讲稿
2014/08/28 职场文书
小学母亲节活动总结
2015/02/10 职场文书