- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章PHP网页游戏学习之Xnova(ogame)源码解读(五)由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
6、 游戏主界面(frames.php) 。
frames.php文件功能就是显示游戏主界面,先看下面的代码:
1
2
3
4
5
6
7
8
|
$InLogin
= false;
$XNova_Host
=
$_SERVER
[
'HTTP_HOST'
];
$XNova_Script
=
$_SERVER
[
'SCRIPT_NAME'
];
$Uri_Array
=
explode
(
'/'
,
$XNova_Script
);
// On vire le script
array_pop
(
$Uri_Array
);
$XNova_URI
= implode (
'/'
,
$Uri_Array
);
$XNovaRootURL
=
"http://"
.
$XNova_Host
.
"/"
.
$XNova_URI
.
"/"
;
|
上面的代码主要是拼出服务器的URL,比较简单;前面的变量$InLogin暂时不讲,等我们专门讲解common.php的时候,集中说明.
然后include了两个我们前面讲过的文件,最后输出一大段 HTML 代码。需要注意的是,HTML代码里面构造了两frame,分别是leftmenu.php 和 overview.php,我下面将要分析.
7、 左导航栏(leftmenu.php) 。
这个文件其实很简单,除去前面我们常见的代码,就只声明了ShowLeftMenu()函数,最后用 display() 输出页面。函数ShowLeftMenu()也不难,代码无非是gettemplate模板文件、取得服务器设置的参数以及登录的用户等级,然后构造页面。其中要注意的是用户等级变量$Level,当$level的值大于0的时候,会显示管理员链接。$level的值所代表的级别定义在system.mo文件中, 0 是普通玩家,1 是游戏操作员,2 是游戏管理员,3 是管理员.
8、 概况(overview.php) 。
这个文件其实就是左导航栏中对应的链接'概况',主要功能是显示当前星球的大概信息和用户的信息,包括其他星球的当前状态等。代码量很大,其实条理很清晰,我们慢慢看来,前面的几行代码我们略过.
1
2
|
$lunarow
= doquery(
"SELECT * FROM {{table}} WHERE 'id_owner' = '"
.
$planetrow
['id_owner
'] . "'
AND
'galaxy'
=
'" . $planetrow['
galaxy
'] . "'
AND
'system'
=
'" . $planetrow['
system
'] . "'
AND
'lunapos'
=
'" . $planetrow['
planet
'] . "'
;",
'lunas'
, true);
CheckPlanetUsedFields (
$lunarow
);
|
这段代码功能是取得当前星球的月球,并检查修正月球的使用空间。CheckPlanetUsedFields函数不仅对月球起作用,同样可以用来检查星球,先不看其中代码,我们继续.
接下来是一段安全性的验证,需要在参数中设置启用这个功能才行,大家可以自行看看,这样的代码还有很多,以后我一般都不分析,对游戏流程关系不大。接下来是一个switch,两个分支,一个重命名星球(放弃星球),暂时不看;另一个default分支,就是登录后要进行的流程,如下 。
1. 检查用户的消息,如果有新消息则要显示消息链接 2. 专家系统的流程,我自己去掉了这段逻辑,所以也不打算分析 3. 检查用户是否有舰队活动,如果有则构造舰队活动信息表,使用BuildFleetEventTable函数构造,以后介绍 4. 如果用户有其他星球,则构造其他星球列表,并显示每个星球的当前活动 5. 显示自己发射和来自其他玩家的攻击的星际导弹活动信息 6. 其他信息显示,比如公告啊,google的广告等等 7. 如果有月球,显示月球信息 8. 下面是一些星球名、星球空间、用户排名等信息,比较杂乱 。
上面这些流程的代码,都有注释,不难明白,下面这段代码我们要介绍下.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
if
(
$planetrow
[
'b_building'
] != 0) {
UpdatePlanetBatimentQueueList (
$planetrow
,
$user
);
if
(
$planetrow
[
'b_building'
] != 0) {
$BuildQueue
=
explode
(
";"
,
$planetrow
[
'b_building_id'
]);
$CurrBuild
=
explode
(
","
,
$BuildQueue
[0]);
$RestTime
=
$planetrow
[
'b_building'
] - time();
$PlanetID
=
$planetrow
[
'id'
];
$Build
= InsertBuildListScript (
"overview"
);
$Build
.=
$lang
[
'tech'
][
$CurrBuild
[0]] .
' ('
. (
$CurrBuild
[1]) .
')'
;
$Build
.= "
<div id=
"\"blc\""
class
=
"\"z\""
>
" . pretty_time($RestTime) . "
</div>
";
$Build
.=
"\n<script type="
text/javascript
"><!--mce:0--></script>\n"
;
$parse
[
'building'
] =
$Build
;
}
else
{
$parse
[
'building'
] =
$lang
[
'Free'
];
}
}
else
{
$parse
[
'building'
] =
$lang
[
'Free'
];
}
|
$planetrow 存放当前星球信息,其中的b_building是建筑队列。上面代码先判断是否有建筑队列,然后根据现在的时间,更新建筑信息;如果还是有建筑未完成,则显示出来建筑单位和建筑的剩余时间。关于建筑队列功能,以后要详细介绍,现在先略过.
我们简单介绍下前面的一个分支,分支里面还有三个流程: 1. 重命名星球,代码不难,也不多说了 2. 放弃殖民星球,并显示用户要输入密码的页面 3. 用户输入密码,如果密码正确则更新本星球的信息和用户的默认星球ID(月球未判断) 。
至此,用户登录到游戏主界面的流程都清楚了,总算进入游戏了.
最后此篇关于PHP网页游戏学习之Xnova(ogame)源码解读(五)的文章就讲到这里了,如果你想了解更多关于PHP网页游戏学习之Xnova(ogame)源码解读(五)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我是一名优秀的程序员,十分优秀!