首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 網頁遊戲 Xnova (OGame) 原始碼解析(十二):研究頁面與科技佇列邏輯

     編輯:PHP 綜合知識

研究頁面架構

研究系統(ResearchBuildingPage.php)無建造佇列,邏輯相對簡單,但有特殊處理。

前置處理:HandleTechnologieBuild()

處理進行中的科技研究,關鍵欄位:

  • b_tech_planet:研究星球 ID
  • b_tech:完成時間戳
  • b_tech_id:科技欄位名

邏輯:檢查是否到期 → 更新科技等級 → 清除佇列欄位 → 檢查下一項(無佇列機制,單一研究)。

頁面構造流程

  1. 檢查星球是否有研究所
  2. CheckLabSettingsInQueue() 檢查建築佇列中是否有研究所升級
  3. 迴圈輸出各科技項目:
<?php
// 迴圈邏輯偽代碼
foreach ($techs as $tech) {
    // 1. 判斷是否為科技類型
    // 2. 檢查前置條件(vars.php 定義)
    // 3. 取得資源需求(金屬/晶體/重氫)
    // 4. 計算研究時間
    // 5. 判斷可否研究
    
    // 6. 分支:無研究中 → 顯示下一等級按鈕
    //    有研究中 → 顯示倒數計時
}

玩家操作邏輯

開始研究

  1. 安全檢查(CSRF、權限、資源)
  2. 計算需求資源與時間
  3. 扣除資源、寫入 b_tech、b_tech_id、b_tech_planet

取消研究

  1. 取得已投入資源(通常按比例退還或全額退還)
  2. 歸還資源、清除研究欄位

關鍵差異:研究 vs 建築

特性建築研究
佇列機制有(b_building_id)無(單一 b_tech_id)
前置條件建築等級、資源、空間科技樹依賴(vars.php)
取消機制可從佇列移除直接取消歸還資源
多星球同步獨立全帳號共享科技等級

Vars.php 科技定義範例

<?php
$tech[101] = array(
    'name'      => '間諜科技',
    'desc'      => '提升間諜效率',
    'pre'       => '',           // 前置科技
    'maxlevel'  => 20,
    'basecost'  => array('metal'=>200, 'crystal'=>100, 'deuterium'=>0),
    'factor'    => 2,            // 成本增長係數
    'basetime'  => 60,           // 基礎時間(秒)
    'timefactor'=> 2,
);
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved