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 生成随机验证码图片代码
Feb 08 PHP
PHP chmod 函数与批量修改文件目录权限
May 10 PHP
php cookies中删除的一般赋值方法
May 07 PHP
C# WinForm中实现快捷键自定义设置实例
Jan 23 PHP
php通过文件流方式复制文件的方法
Mar 13 PHP
php通过rmdir删除目录的简单用法
Mar 18 PHP
PHP使用SWOOLE扩展实现定时同步 MySQL 数据
Apr 09 PHP
thinkPHP5 tablib标签库自定义方法详解
May 10 PHP
PHP+Mysql+Ajax实现淘宝客服或阿里旺旺聊天功能(前台页面)
Jun 16 PHP
PHP addAttribute()函数讲解
Feb 03 PHP
laravel 实现向公共模板中传值 (view composer)
Oct 22 PHP
php与阿里云短信接口接入操作案例分析
May 27 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获取新浪微博数据API实例
2013/11/12 PHP
PHP使用mysql与mysqli连接Mysql数据库用法示例
2016/07/07 PHP
PHP implode()函数用法讲解
2019/03/08 PHP
PHP如何使用JWT做Api接口身份认证的实现
2020/02/03 PHP
tp5框架前台无限极导航菜单类实现方法分析
2020/03/29 PHP
jQuery EasyUI API 中文文档 - Spinner微调器使用
2011/10/21 Javascript
Javascript实现div层渐隐效果的方法
2015/05/30 Javascript
详解基于vue-router的动态权限控制实现方案
2017/09/28 Javascript
JavaScript实现职责链模式概述
2018/01/25 Javascript
Vue-cli Eslint在vscode里代码自动格式化的方法
2018/02/23 Javascript
Vue项目中配置pug解析支持
2019/05/10 Javascript
关于vue2强制刷新,解决页面不会重新渲染的问题
2019/10/29 Javascript
vue项目启动出现cannot GET /服务错误的解决方法
2020/04/26 Javascript
[34:44]Liquid vs TNC Supermajor 胜者组 BO3 第二场 6.4
2018/06/05 DOTA
用Python脚本生成Android SALT扰码的方法
2013/09/18 Python
Python计算回文数的方法
2015/03/11 Python
win系统下为Python3.5安装flask-mongoengine 库
2016/12/20 Python
python 一个figure上显示多个图像的实例
2019/07/08 Python
Python类中的魔法方法之 __slots__原理解析
2019/08/26 Python
python opencv调用笔记本摄像头
2019/08/28 Python
python Qt5实现窗体跟踪鼠标移动
2019/12/13 Python
解决python -m pip install --upgrade pip 升级不成功问题
2020/03/05 Python
用python-webdriver实现自动填表的示例代码
2021/01/13 Python
详解使用canvas保存网页为pdf文件支持跨域
2018/11/23 HTML / CSS
HTML5之SVG 2D入门4—笔画与填充
2013/01/30 HTML / CSS
全天然狗零食:Best Bully Sticks
2016/09/22 全球购物
厂长助理岗位职责
2013/12/27 职场文书
关于礼仪的演讲稿
2014/01/04 职场文书
青年文明号事迹材料
2014/01/18 职场文书
医药个人求职信范文
2014/01/29 职场文书
离职报告格式
2014/11/04 职场文书
监考失职检讨书
2015/01/26 职场文书
公安纪律作风整顿心得体会
2016/01/23 职场文书
2016优秀毕业生个人事迹材料
2016/02/29 职场文书
PHP实现两种排课方式
2021/06/26 PHP
Python 数据结构之十大经典排序算法一文通关
2021/10/16 Python