前言
本系列第十三章解析 Xnova (OGame 開源版) 中的造船廠與防禦建築頁面邏輯,重點在於「佇列管理」與「資源扣除」機制。
造船廠頁面
1. 入口檢查
2. 顯示可建造艦船列表
- 迴圈輸出各艦船建造介面(需求資源、建造時間、科技前置)
- 前端輸入數量,送出表單至同頁面處理
3. 顯示正在建造佇列
關鍵資料庫欄位:
| 欄位 | 含義 |
| b_hangar_id | 建造佇列字串,格式:艦船ID,數量;艦船ID,數量;... |
| b_hangar | 上次更新後剩餘秒數 |
使用 ElementBuildListBox() 函數動態生成倒計時顯示(純前端 JS 模擬,非即時同步資料庫)。
4. 處理建造請求
防禦建築頁面
邏輯與造船廠大同小異,差異在於:
- 大小護盾互斥:程式碼行 407-408 限制同時間只能建造一種護盾
- 飛彈數量關聯:攔截飛彈與星際飛彈數量有關聯限制(行 502-503)
- 同樣使用 b_hangar_id 佇列欄位
關鍵設計模式
- 佇列字串儲存:以分隔符號編碼多筆建造任務,避免建立關聯表
- 資源即時扣除:玩家點擊建造瞬間扣除資源,佇列中顯示剩餘時間
- 延遲實際生成:艦船/防禦實際產出由
PlanetResourceUpdate 定時任務處理(下一章)
資料庫結構參考
- 上一篇文章: ThinkPHP 模板自訂標籤開發完整指南(TagLib 擴展)
- 下一篇文章: PHP 網頁遊戲學習:Xnova (OGame) 原始碼解讀(十四)資源更新核心邏輯
Copyright ©
程式碼之家 All Rights Reserved