PHP网页游戏学习之Xnova(ogame)源码解读(十一)


Posted in PHP onJune 25, 2014

十四、建筑页面(BatimentBuildingPage.php)

现在开始解析真正的建筑页面,里面用到的函数不少,不过都不难,我们一起来看。

一开始先检查星球的已使用空间并更新,使用函数CheckPlanetUsedFields,这个函数前面讲过,实现也不难。

接下来这个是我们前面重点讲过的结构,就是判断是否输入;所以我们先跳到这段代码的后面看,但是这里有几个函数是处理一些建筑队列的。

1. SetNextQueueElementOnTop:我们讲过,处理队列中的下一个建筑

2. ShowBuildingQueue:构造当前的队列,代码虽多,但简单,有兴趣可以自己跟踪

3. BuildingSavePlanetRecord:保存前面代码构造的建筑队列到数据库

4.BuildingSaveUserRecord:保存资源积分(事务官)到数据库

然后要构造建筑页面,我做一个文字说明,大部分UI的构造不写:

1.     判断最大队列值

2.     计算出当前星球的最大空间

3.     判断当前的建筑是否可以建造

4.     如果可以造的话,要取得建造时间、所需资源

5.     如果建造的是研究所需要判断是否在研究

最后就是把前面准备好的各项内容构造出html页面,这个看看就应该能明白。接下来讲解我们跳过的有用户输入部分代码,结构很清晰:

1.     取得用户输入的各项参数(实际是点击的)

2.     判断要建造的建筑是星球上还是月球上

3.     还有对链接合法性的判断,如果是不合法的,用户将受到惩罚(嘿嘿)

4.     然后是根据用户的操作,进入不同的队列功能

5.     CancelBuildingFromQueue:取消正在建造的建筑

6.     RemoveBuildingFromQueue:从队列中移除一个建筑

7.     AddBuildingToQueue(true):在队列中插入一个建造建筑

8.     AddBuildingToQueue(false):在队列中插入一个取消建筑

9.     ResetThisFuckingCheater:惩罚用户函数,大家自己看吧

上面几个函数具体功能可以自己看,都是对队列的操作,大同小异。

PHP 相关文章推荐
菜鸟学PHP之Smarty入门
Jan 04 PHP
真正的ZIP文件操作类(php)
Jul 21 PHP
PHP伪造referer实例代码
Sep 20 PHP
PHP 万年历实现代码
Oct 18 PHP
Zend的MVC机制使用分析(二)
May 02 PHP
PHP SPL使用方法和他的威力
Nov 12 PHP
PHP调用MySQL存储过程并返回值的方法
Dec 26 PHP
PHP抽奖算法程序代码分享
Oct 08 PHP
PHP代码判断设备是手机还是平板电脑(两种方法)
Oct 19 PHP
PHP使用preg_split和explode分割textarea存放内容的方法分析
Jul 03 PHP
php实现基于pdo的事务处理方法示例
Jul 21 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
Jun 16 PHP
JavaScript创建命名空间的5种写法
Jun 24 #PHP
PHP获取windows登录用户名的方法
Jun 24 #PHP
PHP获取MySql新增记录ID值的3种方法
Jun 24 #PHP
PHP判断表单复选框选中状态完整例子
Jun 24 #PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十)
Jun 24 #PHP
PHP网页游戏学习之Xnova(ogame)源码解读(九)
Jun 24 #PHP
PHP网页游戏学习之Xnova(ogame)源码解读(八)
Jun 23 #PHP
You might like
PHP的一个完整SMTP类(解决邮件服务器需要验证时的问题)
2006/10/09 PHP
frename PHP 灵活文件命名函数 frename
2009/09/09 PHP
使用php判断网页是否gzip压缩
2013/06/25 PHP
symfony表单与页面实现技巧
2015/01/26 PHP
CentOS 上搭建 PHP7 开发测试环境
2017/02/26 PHP
JQuery AJAX提交中文乱码的解决方案
2010/07/02 Javascript
最新的10款jQuery内容滑块插件分享
2011/09/18 Javascript
一个js过滤空格的小函数
2014/10/10 Javascript
Js实现网页键盘控制翻页的方法
2014/10/30 Javascript
javascript 使用for循环时该注意的问题-附问题总结
2015/08/19 Javascript
AngularJS中如何使用$http对MongoLab数据表进行增删改查
2016/01/23 Javascript
jQuery的事件预绑定
2016/12/05 Javascript
angular实现IM聊天图片发送实例
2017/05/08 Javascript
vue.js整合vux中的上拉加载下拉刷新实例教程
2018/01/09 Javascript
Vue实现仿iPhone悬浮球的示例代码
2020/03/13 Javascript
Python3中使用PyMongo的方法详解
2017/07/28 Python
python自动化脚本安装指定版本python环境详解
2017/09/14 Python
Python实现句子翻译功能
2017/11/14 Python
python实现textrank关键词提取
2018/06/22 Python
ZABBIX3.2使用python脚本实现监控报表的方法
2019/07/02 Python
python动态视频下载器的实现方法
2019/09/16 Python
Python 实现大整数乘法算法的示例代码
2019/09/17 Python
Python字典常见操作实例小结【定义、添加、删除、遍历】
2019/10/25 Python
解决jupyter notebook import error但是命令提示符import正常的问题
2020/04/15 Python
python操作链表的示例代码
2020/09/27 Python
python中子类与父类的关系基础知识点
2021/02/02 Python
Theflamel意大利:女士奢华服装、鞋子和配件
2020/01/11 全球购物
如何将无状态会话Bean发布为WEB服务,只有无状态会话Bean可以发布为WEB服务?
2015/12/03 面试题
介绍一下Ruby的多线程处理
2013/02/01 面试题
3D空间设计学生找工作的自我评价
2013/10/28 职场文书
视光学毕业生自荐书范文
2014/02/13 职场文书
小学一年级评语大全
2014/04/22 职场文书
幼师求职自荐信
2014/05/31 职场文书
党性锻炼的心得体会
2014/09/03 职场文书
Java并发编程之详解CyclicBarrier线程同步
2021/06/23 Java/Android
TV动画《史上最强大魔王转生为村民A》番宣CM公布
2022/04/01 日漫