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 相关文章推荐
深入了解php4(2)--重访过去
Oct 09 PHP
php google或baidu分页代码
Nov 26 PHP
php采集时被封ip的解决方法
Aug 29 PHP
php提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
Feb 08 PHP
编写Smarty插件在模板中直接加载数据的详细介绍
Jun 26 PHP
thinkphp连贯操作实例分析
Nov 22 PHP
php实现的通用图片处理类
Mar 24 PHP
php删除数组中重复元素的方法
Dec 22 PHP
php抛出异常与捕捉特定类型的异常详解
Oct 26 PHP
Yii2 批量插入、更新数据实例
Mar 15 PHP
PHP实现的简单留言板功能示例【基于thinkPHP框架】
Dec 07 PHP
详解PHP 7.4 中数组延展操作符语法知识点
Jul 19 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用户注册时常用的检验函数实例总结
2014/12/22 PHP
Symfony2之session与cookie用法小结
2016/03/18 PHP
php基于单例模式封装mysql类完整实例
2016/10/18 PHP
Laravel find in set排序实例
2019/10/09 PHP
自动生成文章摘要的代码[JavaScript 版本]
2007/03/20 Javascript
javascript Array数组对象的扩展函数代码
2010/05/22 Javascript
jquery的$getjson调用并获取远程的JSON字符串问题
2012/12/10 Javascript
ExtJS下 Ext.Direct加载和提交过程排错小结
2013/04/02 Javascript
JS 获取select(多选下拉)中所选值的示例代码
2013/08/02 Javascript
JavaScript定义类的几种方式总结
2014/01/06 Javascript
jquery处理json数据实例分析
2014/06/03 Javascript
Javascript 是你的高阶函数(高级应用)
2015/06/15 Javascript
WebPack基础知识详解
2017/01/16 Javascript
Bootstrap响应式表格详解
2017/05/23 Javascript
谈谈JavaScript中super(props)的重要性
2019/02/12 Javascript
JavaScript定时器使用方法详解
2020/03/26 Javascript
vue基于better-scroll仿京东分类列表
2020/06/30 Javascript
vue实现抽屉弹窗效果
2020/11/15 Javascript
Python3基础之list列表实例解析
2014/08/13 Python
分享一下如何编写高效且优雅的 Python 代码
2017/09/07 Python
学习Python selenium自动化网页抓取器
2018/01/20 Python
Python单元测试简单示例
2018/07/03 Python
python pandas写入excel文件的方法示例
2019/06/25 Python
python os.path.isfile()因参数问题判断错误的解决
2019/11/29 Python
python读取hdfs上的parquet文件方式
2020/06/06 Python
浅谈keras使用中val_acc和acc值不同步的思考
2020/06/18 Python
css3通过scale()、rotate()实现放大、旋转
2020/03/19 HTML / CSS
英国顶级足球鞋的领先零售商:Lovell Soccer
2019/08/27 全球购物
工作决心书
2014/03/11 职场文书
祖国在我心中演讲稿400字
2014/05/04 职场文书
乡镇领导班子四风整顿行动工作汇报
2014/10/25 职场文书
青春雷锋观后感
2015/06/10 职场文书
获奖感言范文
2015/07/31 职场文书
公司员工奖惩制度
2015/08/04 职场文书
军训后的感想
2015/08/07 职场文书
Python 操作pdf pdfplumber读取PDF写入Exce
2022/08/14 Python