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


Posted in PHP onJune 23, 2014

九、公共代码(common.php)

Common.php是Xnova的公共代码,几乎每次点击都会被执行,所以这里要是优化的好,那么整个程序的效率都会有提升;当然这个文件调用的其他代码也要一并优化才行。

$game_config  = array();
$user     = array();
$lang     = array();
$link     = "";
$IsUserChecked = false;

变量$game_config存放整个游戏的参数数据,每次都要读数据库,可以优化,优化方式比如保存在文件里面;变量$user存放登录的用户数据;$lang存放的是本地语言数据;$IsUserChecked记录是否check过用户。然后设置一些系统常量,在以后的代码中都要使用到的;再include一些函数文件,有以前我们介绍过的小函数在里面等。

接下来就要用到一个常量INSTALL,这个是在安装的时候定义的;除了安装的时候,这个判断都会进入。进入之后,又include一些文件,其中的includes/vars.php文件很重要,我将专门讲解,现在继续。这里还要从数据库中取得数据,并填充变量$game_config。

if ($InLogin != true) {
 $Result    = CheckTheUser ( $IsUserChecked );
 $IsUserChecked = $Result['state'];
 $user     = $Result['record'];
} elseif ($InLogin == false) {
 if( $game_config['game_disable']) {
 if ($user['authlevel'] < 1) {
  message ( stripslashes ( $game_config['close_reason'] ), $game_config['game_name'] );
 }
 }
}

以上是检查保存在cookie里面的用户登录数据的,在$InLogin = true的时候,不会执行;现在我们讲到的是用户平时操作,所以这里$InLogin的值为false。首先调用函数CheckTheUser(),参数$IsUserChecked的值为false;CheckTheUser()声明在 includes/functions/CheckUser.php文件中,它又调用了声明在 includes/functions/CheckCookies.php中的CheckCookies()函数。而函数CheckCookies() 的功能就是使用Cookie中的信息来check用户,代码我就不列出了。

如果CheckTheUser()成功,那么变量$user里面就填充好了用户的数据,然后执行下面的分支。这个分支是检查服务器参数设置的,如果服务器被管理员设置为关闭,则检查用户的权限;如果权限不够,则显示错误消息。

然后就要处理的是用户活动中的舰队了,分为两段逻辑:

1.当前时间大于舰队抵达目的地的时间,需要处理发生战斗、运输等逻辑

2.当前时间大于舰队返回出发地的时间,同样要处理发生战斗后、运输后的舰队回归逻辑

每个活动都调用函数FlyingFleetHandler()来处理,此函数我们以后再分析,现在只要知道功能就行了。如果用户点击频繁的话,这段逻辑将是非常耗资源的,所以这里也可以优化,比如缓存或者不是每次都执行等等。

舰队活动处理完了,那么导弹的活动呢怎么办?接下来的rak.php文件就是用来处理星际导弹的。文件功能包括了导弹的拦截、导弹摧毁的防御数量、发送消息给被攻击方等。具体逻辑我们也略过,以后分析。

然后调用函数SetSelectedPlanet()取得玩家上次所在的星球,注意这个函数的参数,是传址的,函数声明在includes/functions/SetSellectPlanet.php。接下来的要取得两个变量值,$planetrow存放用户当前星球的数据;$galaxyrow存放当前星球的星系坐标数据。

最后调用函数CheckPlanetUsedFields()更新当前星球的使用空间,同样参数是传址的,声明在 includes/functions/CheckPlanetUsedFields.php。

Common.php文件分析完了,如果大家理解了的话,就应该知道这里的效率很重要;希望大家一起来优化,其他部分也同样。

PHP 相关文章推荐
利用文件属性结合Session实现在线人数统计
Oct 09 PHP
php array_search() 函数使用
Apr 13 PHP
php学习之流程控制实现代码
Jun 09 PHP
PHP生成随机密码类分享
Jun 25 PHP
分享最受欢迎的5款PHP框架
Nov 27 PHP
php获取YouTube视频信息的方法
Feb 11 PHP
php实现粘贴截图并完成上传功能
May 17 PHP
Codeigniter的dom类用法实例
Jun 26 PHP
php数据序列化测试实例详解
Aug 12 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
Aug 29 PHP
关于Laravel参数验证的一些疑与惑
Nov 19 PHP
PHP连接MySQL数据库操作代码实例解析
Jul 11 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(五)
Jun 23 #PHP
PHP网页游戏学习之Xnova(ogame)源码解读(四)
Jun 23 #PHP
PHP网页游戏学习之Xnova(ogame)源码解读(三)
Jun 23 #PHP
PHP网页游戏学习之Xnova(ogame)源码解读(二)
Jun 23 #PHP
PHP网页游戏学习之Xnova(ogame)源码解读(一)
Jun 23 #PHP
ThinkPHP3.1新特性之动态设置自动完成及自动验证示例代码
Jun 23 #PHP
ThinkPHP结合ajax、Mysql实现的客户端通信功能代码示例
Jun 23 #PHP
You might like
PHP Token(令牌)设计
2008/03/15 PHP
php提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
2011/02/08 PHP
php获得文件大小和文件创建时间的方法
2015/03/13 PHP
tp5框架基于ajax实现异步删除图片的方法示例
2020/02/10 PHP
jquery命令汇总,方便使用jquery的朋友
2012/06/26 Javascript
用html5 js实现点击一个按钮达到浏览器全屏效果
2014/05/28 Javascript
bootstrap data与jquery .data
2014/07/07 Javascript
js不能获取隐藏的div的宽度只能先显示后获取
2014/09/04 Javascript
JavaScript中的fontsize()方法使用详解
2015/06/08 Javascript
JavaScript中实现map功能代码分享
2015/06/11 Javascript
详解JavaScript 中的 replace 方法
2016/01/01 Javascript
JavaScript数组的栈方法与队列方法详解
2016/05/26 Javascript
javascript实现滚动效果的数字时钟实例
2016/07/21 Javascript
js中遍历对象的属性和值的方法
2016/07/27 Javascript
jquery插件开发之选项卡制作详解
2017/08/30 jQuery
NestJs 静态目录配置详解
2019/03/12 Javascript
Vue实现摇一摇功能(兼容ios13.3以上)
2021/01/26 Vue.js
[45:18]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第一场
2018/04/04 DOTA
python3模块smtplib实现发送邮件功能
2018/05/22 Python
Python3创建Django项目的几种方法(3种)
2020/06/03 Python
Python 使用Opencv实现目标检测与识别的示例代码
2020/09/08 Python
使用Python绘制台风轨迹图的示例代码
2020/09/21 Python
python如何修改文件时间属性
2021/02/05 Python
css3.0 图形构成实例练习一
2013/03/19 HTML / CSS
H5最强接口之canvas实现动态图形功能
2019/05/31 HTML / CSS
H5页面适配iPhoneX(就是那么简单)
2019/12/02 HTML / CSS
英国家喻户晓的折扣商场:TK Maxx
2017/05/26 全球购物
乌克兰排名第一的在线旅游超市:Farvater.Travel
2020/01/02 全球购物
恐龙的灭绝教学反思
2014/02/12 职场文书
支部书记四风问题对照检查材料
2014/10/04 职场文书
工作服管理制度范本
2015/08/06 职场文书
七年级作文之我的梦想
2019/10/16 职场文书
一文帮你理解PReact10.5.13源码
2021/04/03 Javascript
Go标准容器之Ring的使用说明
2021/05/05 Golang
Java 中的 Unsafe 魔法类的作用大全
2021/06/26 Java/Android
一行Python命令实现批量加水印
2022/04/07 Python