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 相关文章推荐
我的论坛源代码(二)
Oct 09 PHP
用PHP获取Google AJAX Search API 数据的代码
Mar 12 PHP
PHP冒泡排序算法代码详细解读
Jul 17 PHP
php中一个有意思的日期逻辑处理
Mar 25 PHP
PHP 第二节 数据类型之字符串类型
Apr 28 PHP
thinkphp路由规则使用示例详解和伪静态功能实现(apache重写)
Feb 24 PHP
PHP实现图片裁剪、添加水印效果代码
Oct 01 PHP
php使用curl出现Expect:100-continue解决方法
Mar 03 PHP
PHP JSON格式的中文显示问题解决方法
Apr 09 PHP
Yii2使用表单上传文件的实例代码
Aug 03 PHP
PHP远程连接oracle数据库操作实现方法图文详解
Apr 11 PHP
PHP用swoole+websocket和redis实现web一对一聊天
Nov 05 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
destoon后台网站设置变成空白的解决方法
2014/06/21 PHP
PHP获取表单所有复选框的值的方法
2014/08/28 PHP
php 函数使用可变数量的参数方法
2017/05/02 PHP
js文件缓存之版本管理详解
2013/07/05 Javascript
Javascript模块化编程详解
2014/12/01 Javascript
jQuery检测鼠标左键和右键点击的方法
2015/03/17 Javascript
浅谈jQuery中的事件
2015/03/23 Javascript
js获取当前周、上一周、下一周日期
2017/03/19 Javascript
AngularJS中scope的绑定策略实例分析
2017/10/30 Javascript
对Vue2 自定义全局指令Vue.directive和指令的生命周期介绍
2018/08/30 Javascript
vue 使用vue-i18n做全局中英文切换的方法
2018/10/29 Javascript
Vue.js 事件修饰符的使用教程
2018/11/01 Javascript
django使用channels2.x实现实时通讯
2018/11/28 Javascript
基于jquery实现九宫格拼图小游戏
2018/11/30 jQuery
详解Vue 如何监听Array的变化
2019/06/06 Javascript
通过实例了解Nodejs模块系统及require机制
2020/07/16 NodeJs
[02:40]DOTA2超级联赛专访430 从小就爱玩对抗性游戏
2013/06/18 DOTA
Python字符串、元组、列表、字典互相转换的方法
2016/01/23 Python
Python爬虫实现爬取京东手机页面的图片(实例代码)
2017/11/30 Python
python如何重载模块实例解析
2018/01/25 Python
Python实用技巧之利用元组代替字典并为元组元素命名
2018/07/11 Python
Flask框架路由和视图用法实例分析
2019/11/07 Python
Python爬虫实现模拟点击动态页面
2020/03/05 Python
python保留格式汇总各部门excel内容的实现思路
2020/06/01 Python
Pytorch 解决自定义子Module .cuda() tensor失败的问题
2020/06/23 Python
HTML5实现页面切换激活的PageVisibility API使用初探
2016/05/13 HTML / CSS
Ratchet 模态框的实现
2020/08/19 HTML / CSS
欧洲著名的二手奢侈品网站:Vestiaire Collective
2020/03/07 全球购物
mysql有关权限的表都有哪几个
2015/04/22 面试题
如何用Java判断一个文件或目录是否存在
2012/11/19 面试题
中学校庆方案
2014/03/17 职场文书
优秀本科毕业生自荐信
2014/07/04 职场文书
领导党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
2015年度绩效考核工作总结
2015/05/27 职场文书
一篇文章弄懂MySQL查询语句的执行过程
2021/05/07 MySQL
Javascript webpack动态import
2022/04/19 Javascript