PHP网页游戏学习之Xnova(ogame)源码解读(五)_PHP教程
六、 游戏主界面(frames.php)
frames.php文件功能就是显示游戏主界面,先看下面的代码:
$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,我下面将要分析。
七、 左导航栏(leftmenu.php)
这个文件其实很简单,除去前面我们常见的代码,就只声明了ShowLeftMenu()函数,最后用 display() 输出页面。函数ShowLeftMenu()也不难,代码无非是gettemplate模板文件、取得服务器设置的参数以及登录的用户等级,然后构造页面。其中要注意的是用户等级变量$Level,当$level的值大于0的时候,会显示管理员链接。$level的值所代表的级别定义在system.mo文件中, 0 是普通玩家,1 是游戏操作员,2 是游戏管理员,3 是管理员。
八、 概况(overview.php)
这个文件其实就是左导航栏中对应的链接'概况',主要功能是显示当前星球的大概信息和用户的信息,包括其他星球的当前状态等。代码量很大,其实条理很清晰,我们慢慢看来,前面的几行代码我们略过。
$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. 下面是一些星球名、星球空间、用户排名等信息,比较杂乱
上面这些流程的代码,都有注释,不难明白,下面这段代码我们要介绍下。
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(月球未判断)
至此,用户登录到游戏主界面的流程都清楚了,总算进入游戏了。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

PHP 8.4 帶來了多項新功能、安全性改進和效能改進,同時棄用和刪除了大量功能。 本指南介紹如何在 Ubuntu、Debian 或其衍生版本上安裝 PHP 8.4 或升級到 PHP 8.4

CakePHP 是 PHP 的開源框架。它旨在使應用程式的開發、部署和維護變得更加容易。 CakePHP 基於類似 MVC 的架構,功能強大且易於掌握。模型、視圖和控制器 gu

Visual Studio Code,也稱為 VS Code,是一個免費的原始碼編輯器 - 或整合開發環境 (IDE) - 可用於所有主要作業系統。 VS Code 擁有大量針對多種程式語言的擴展,可以輕鬆編寫

CakePHP 是一個開源MVC 框架。它使應用程式的開發、部署和維護變得更加容易。 CakePHP 有許多函式庫可以減少大多數常見任務的過載。

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲
