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 相关文章推荐
php的计数器程序
Oct 09 PHP
PHP脚本的10个技巧(2)
Oct 09 PHP
PHPWind与Discuz截取字符函数substrs与cutstr性能比较
Dec 05 PHP
php模拟js函数unescape的函数代码
Oct 20 PHP
php function用法如何递归及return和echo区别
Mar 07 PHP
ThinkPHP中__initialize()和类的构造函数__construct()用法分析
Nov 29 PHP
PHP常见数组函数用法小结
Mar 21 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
May 13 PHP
smarty模板数学运算示例
Dec 11 PHP
thinkPHP5 ACL用户权限模块用法详解
May 10 PHP
PHP基础之输出缓冲区基本概念、原理分析
Jun 19 PHP
YII2框架中behavior行为的理解与使用方法示例
Mar 13 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
根德YB400的电路分析
2021/03/02 无线电
php面向对象全攻略 (十六) 对象的串行化
2009/09/30 PHP
ThinkPHP中的三大自动简介
2014/08/22 PHP
php中的动态调用实例分析
2015/01/07 PHP
PHP中抽象类,接口功能、定义方法示例
2019/02/26 PHP
jQuery 顺便学习下CSS选择器 奇偶匹配nth-child(even)
2010/05/24 Javascript
根据表格中的某一列进行排序的javascript代码
2013/11/29 Javascript
Node.js模块加载详解
2014/08/16 Javascript
jQuery过滤选择器用法分析
2015/02/10 Javascript
javascript实现设置、获取和删除Cookie的方法
2015/06/01 Javascript
基于jQuery实现仿微博发布框字数提示
2016/07/27 Javascript
详解网站中图片日常使用以及优化手法
2017/01/09 Javascript
JS打开摄像头并截图上传示例
2017/02/18 Javascript
JavaScript中重名的函数与对象示例详析
2017/09/28 Javascript
微信小程序实现折叠与展开文章功能
2018/06/12 Javascript
vue 2.8.2版本配置刚进入时候的默认页面方法
2018/09/21 Javascript
微信小程序上传文件到阿里OSS教程
2019/05/20 Javascript
vue中使用element组件时事件想要传递其他参数的问题
2019/09/18 Javascript
JavaScript如何借用构造函数继承
2019/11/06 Javascript
基于vue的tab-list类目切换商品列表组件的示例代码
2020/02/14 Javascript
[19:59]2014DOTA2国际邀请赛 IG战队纪录片
2014/08/07 DOTA
[02:11]2016国际邀请赛中国区预选赛最美TA采访现场玩家
2016/06/28 DOTA
Python多线程编程(八):使用Event实现线程间通信
2015/04/05 Python
使用Nginx+uWsgi实现Python的Django框架站点动静分离
2016/03/21 Python
Python面向对象特殊成员
2017/04/24 Python
Python读取sqlite数据库文件的方法分析
2017/08/07 Python
python实现Windows电脑定时关机
2018/06/20 Python
Python获取网段内ping通IP的方法
2019/01/31 Python
html5简介及新增功能介绍
2020/05/18 HTML / CSS
一年级学生期末评语
2014/04/21 职场文书
领导班子个人对照检查材料(群众路线)
2014/09/26 职场文书
解除劳动合同证明书
2014/09/26 职场文书
个人求职意向书
2015/05/11 职场文书
网吧管理制度范本
2015/08/05 职场文书
CSS中妙用 drop-shadow 实现线条光影效果
2021/11/11 HTML / CSS
JavaScript 定时器详情
2021/11/11 Javascript