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
Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
Jun 14 PHP
Fedora下安装php Redis扩展笔记
Sep 03 PHP
ThinkPHP控制器间实现相互调用的方法
Oct 31 PHP
php实现基于微信公众平台开发SDK(demo)扩展的方法
Dec 22 PHP
PHP+MySQL实现的简单投票系统实例
Feb 24 PHP
浅谈php中urlencode与rawurlencode的区别
Sep 05 PHP
thinkphp自带验证码全面解析
Sep 18 PHP
PHP常用的三种设计模式
Feb 17 PHP
Laravel中前端js上传图片到七牛云的示例代码
Sep 04 PHP
弹出模态框modal的实现方法及实例
Sep 19 PHP
Yii2 中实现单点登录的方法
Mar 09 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脚本[带参数]的方法
2010/01/22 PHP
php学习之 认清变量的作用范围
2010/01/26 PHP
PHP小教程之实现双向链表
2014/06/12 PHP
php获得文件夹下所有文件的递归算法的简单实例
2016/11/01 PHP
php实现PDO中捕获SQL语句错误的方法
2017/02/16 PHP
css动画效果之animation的常用样式
2021/03/09 HTML / CSS
用JavaScript和注册表脚本实现右键收藏Web页选中文本
2007/01/28 Javascript
建立良好体验度的Web注册系统ajax
2007/07/09 Javascript
火狐浏览器(firefox)下获得Event对象以及keyCode
2008/11/13 Javascript
javascript 函数调用规则
2009/08/26 Javascript
关于UTF-8的客户端用AJAX方式获取GB2312的服务器端乱码问题的解决办法
2010/11/30 Javascript
jquery 操作DOM的基本用法分享
2012/04/05 Javascript
jQuery 借助插件Lavalamp实现导航条动态美化效果
2013/09/27 Javascript
javascript实现一个简单的弹出窗
2016/02/22 Javascript
angularjs实现文字上下无缝滚动特效代码
2016/09/04 Javascript
常用js,css文件统一加载方法(推荐) 并在加载之后调用回调函数
2016/09/23 Javascript
简单实现Bootstrap标签页
2020/08/09 Javascript
jQuery实现简单的抽奖游戏
2017/05/05 jQuery
iframe高度自适应及隐藏滚动条的实例详解
2017/09/29 Javascript
jq.ajax+php+mysql实现关键字模糊查询(示例讲解)
2018/01/02 Javascript
JavaScript实现多叉树的递归遍历和非递归遍历算法操作示例
2018/02/08 Javascript
解决js中的setInterval清空定时器不管用问题
2020/11/17 Javascript
vue element和nuxt的使用技巧分享
2021/01/14 Vue.js
[00:36]DOTA2勇士令状莱恩声望物品——冥晶之厄展示
2018/05/25 DOTA
Python将字符串常量转化为变量方法总结
2019/03/17 Python
Python 使用 PyMysql、DBUtils 创建连接池提升性能
2019/08/14 Python
Django之路由层的实现
2019/09/09 Python
PIP和conda 更换国内安装源的方法步骤
2020/09/21 Python
电子商务专业学生的自我鉴定
2013/11/28 职场文书
食品采购员岗位职责
2014/04/14 职场文书
文明城市创建标语
2014/06/16 职场文书
幼儿园托班开学寄语(2016秋季)
2015/12/03 职场文书
关于践行三严三实的心得体会
2016/01/05 职场文书
利用python Pandas实现批量拆分Excel与合并Excel
2021/05/23 Python
深入理解CSS 中 transform matrix矩阵变换问题
2021/08/30 HTML / CSS
Redis批量生成数据的实现
2022/06/05 Redis