# 角色與目標
你是一位精通遊戲演算法(MCTS, Alpha-Beta, Bitboard)與前端 UI 互動設計的專家。
請根據以下需求,修改並提供可直接替換的程式碼。
---
## 模組一:MCTS / Alpha-Beta 演算法與記憶體優化 (Engine Component)
請實現/優化遊戲核心 AI 搜尋引擎,需嚴格滿足以下技術規範:
### 1. 記憶體與樹結構 (Memory & Tree Structure)
* **Flat Array Tree & Object Pooling**:
- 使用大陣列 (TypedArray / Array) 儲存 MCTS 節點,以索引 (Index) 代替物件引用。
- 預先分配 Node Pool,搜尋結束或換根時重置指標 (Pointer),徹底避免 GC。
* **樹重用 (Tree Reuse) 與記憶體回收**:
- 對手落子後,保留對應子樹作為下一輪搜尋的根節點。
- **必須實現回收機制**:將未被選中的兄弟分支 (Sibling Nodes) 索引歸還給 Node Pool。
* **動態探索常數 (Dynamic C & Decay)**:
- 換根時若舊樹訪問次數過高,對舊數據進行衰減(例如:訪問數與勝場數同比例乘以 0.5)。
### 2. 搜尋與階段切換邏輯 (Search & Phase Logic)
* **Lightweight Rollout**:模擬階段僅維護核心棋盤狀態,嚴禁觸發任何 UI 更新或完整遊戲邏輯。
* **Heuristic / Heavy Playout**:加入啟發式剪枝,優先排序高得分行動。
* **RAVE (Rapid Action Value Estimation)**:實現 All-Moves-As-First (AMAF) 資訊共享機制。
* **Incremental Algorithm**:棋盤狀態更新採用增量式計算。
* **Alpha-Beta 階段搜尋**:
- 當滿足預設的觸發條件時,自動切換至 Alpha-Beta 階段。
- **時間限制規則**:MCTS 階段受設定時間(3s/6s/12s/18s)限制;**一旦進入 Alpha-Beta 階段,立即解除時間限制,直到完全計算出結果為止**。
### 3. 10x10 棋盤 Bitboard 設計
* 使用 100-bit 的 `BigInt` 表示 10×10 棋盤(1 代表有棋子,0 代表無)。
* 維護 6 個獨立的 `BigInt` 位元圖:
- 黑方:`black_A`, `black_B`, `black_C`
- 白方:`white_A`, `white_B`, `white_C`
---
## 模組二:AI 控制彈窗與 UI 互動 (UI & Control Component)
### 1. 選單與預設值
* **控制面板佈局**:
- 點擊 AI 控制區彈出設定視窗。
- 左側為玩家二(預設:**簡單 AI**),右側為玩家一(預設:**人類**)。
- 控制選項:`人類`、`簡單`、`困難`、`專家`、`自訂`(每項均需搭配相應 SVG 圖標)。
* **強度與時間預設映射表**:
* **連動與邊界邏輯**:
- 修改時間輸入框時,若值不等於 3s / 6s / 12s,強度自動切換為「自訂」。
- 觸發條件選項包括:`3個維諾`、`2個維諾`、`1個維諾`、`3個米諾`、`2個米諾`、`1個米諾`。
- **判定邏輯**:若玩家未放置足夠米諾(如未放滿 3 個或 2 個米諾)即跳至維諾階段,等同於觸發「使用了 3 個或 2 個米諾」。
### 2. 當前狀態圖標與實時思考消息框 (Status & Real-time Info Box)
* **圖標顯示**:
- 在控制區顯示代表當前玩家/AI 等級的 SVG 圖標。
- **Desktop (電腦端)**:顯示於最下方;**Mobile (手機端)**:顯示於最右側。
* **實時思考消息框 (Thinking Modal/Toast)**:
- **思考期間(進行中)**:
- MCTS 階段:動態顯示「思考時間(秒)」與「當前搜尋次數(Simulations/Visits)」。
- Alpha-Beta 階段:顯示提示「已進入 Alpha-Beta 終局計算中...(無時間限制)」。
- **思考結束時(結算數據)**:
- 展示最終數據結果:**「總用時」**、**「期望值 (Evaluation Value)」** 及 **「預估勝率 (%)」**。
- **消失邏輯**:若下一回合輪到**人類玩家**操作,思考消息框在展示完整數據後保留 **2 秒**,隨後自動消失;若下一回合仍為 AI 操作,則更新內容並持續顯示。
* **棋盤操作中斷機制 (Interrupt Control)**:
- 當玩家點擊 **「回退 (Undo)」** 或 **「前進 (Redo)」** 時:
1. 立即中斷(Abort)當前正在執行的 AI 思考行程。
2. 關閉思考消息框。
3. 自動將玩家一與玩家二的控制狀態**均強制切換為「人類」**。
---
## 輸出要求
1. **變更說明**:簡要說明修改的檔案與功能模組(例如 Engine、UI Modal、Game Controller)。
2. **替換代碼**:提供完整且可直接複製替換的程式碼,並標註:
- `// === [檔名/組件名] 替換開始 ===`
- `// === [檔名/組件名] 替換結束 ===`
代码: 全选
# 角色與目標
你是一位精通遊戲演算法(MCTS, Alpha-Beta, Bitboard)與前端 UI 互動設計的專家。
請根據以下需求,修改並提供可直接替換的程式碼。
---
## 模組一:MCTS / Alpha-Beta 演算法與記憶體優化 (Engine Component)
請實現/優化遊戲核心 AI 搜尋引擎,需嚴格滿足以下技術規範:
### 1. 記憶體與樹結構 (Memory & Tree Structure)
* **Flat Array Tree & Object Pooling**:
- 使用大陣列 (TypedArray / Array) 儲存 MCTS 節點,以索引 (Index) 代替物件引用。
- 預先分配 Node Pool,搜尋結束或換根時重置指標 (Pointer),徹底避免 GC。
* **樹重用 (Tree Reuse) 與記憶體回收**:
- 對手落子後,保留對應子樹作為下一輪搜尋的根節點。
- **必須實現回收機制**:將未被選中的兄弟分支 (Sibling Nodes) 索引歸還給 Node Pool。
* **動態探索常數 (Dynamic C & Decay)**:
- 換根時若舊樹訪問次數過高,對舊數據進行衰減(例如:訪問數與勝場數同比例乘以 0.5)。
### 2. 搜尋與階段切換邏輯 (Search & Phase Logic)
* **Lightweight Rollout**:模擬階段僅維護核心棋盤狀態,嚴禁觸發任何 UI 更新或完整遊戲邏輯。
* **Heuristic / Heavy Playout**:加入啟發式剪枝,優先排序高得分行動。
* **RAVE (Rapid Action Value Estimation)**:實現 All-Moves-As-First (AMAF) 資訊共享機制。
* **Incremental Algorithm**:棋盤狀態更新採用增量式計算。
* **Alpha-Beta 階段搜尋**:
- 當滿足預設的觸發條件時,自動切換至 Alpha-Beta 階段。
- **時間限制規則**:MCTS 階段受設定時間(3s/6s/12s/18s)限制;**一旦進入 Alpha-Beta 階段,立即解除時間限制,直到完全計算出結果為止**。
### 3. 10x10 棋盤 Bitboard 設計
* 使用 100-bit 的 `BigInt` 表示 10×10 棋盤(1 代表有棋子,0 代表無)。
* 維護 6 個獨立的 `BigInt` 位元圖:
- 黑方:`black_A`, `black_B`, `black_C`
- 白方:`white_A`, `white_B`, `white_C`
---
## 模組二:AI 控制彈窗與 UI 互動 (UI & Control Component)
### 1. 選單與預設值
* **控制面板佈局**:
- 點擊 AI 控制區彈出設定視窗。
- 左側為玩家二(預設:**簡單 AI**),右側為玩家一(預設:**人類**)。
- 控制選項:`人類`、`簡單`、`困難`、`專家`、`自訂`(每項均需搭配相應 SVG 圖標)。
* **強度與時間預設映射表**:
| 強度選項 | 搜尋時間 | Alpha-Beta 預置觸發條件 |
| :--- | :--- | :--- |
| **簡單** | 3 秒 | 有一方用了 3 個維諾 |
| **困難** | 6 秒 | 有一方用了 2 個維諾 |
| **專家** | 12 秒 | 有一方用了 1 個維諾 |
| **自訂** | 18 秒 (預設) | 有一方用了 3 個米諾 (預設) |
* **連動與邊界邏輯**:
- 修改時間輸入框時,若值不等於 3s / 6s / 12s,強度自動切換為「自訂」。
- 觸發條件選項包括:`3個維諾`、`2個維諾`、`1個維諾`、`3個米諾`、`2個米諾`、`1個米諾`。
- **判定邏輯**:若玩家未放置足夠米諾(如未放滿 3 個或 2 個米諾)即跳至維諾階段,等同於觸發「使用了 3 個或 2 個米諾」。
### 2. 當前狀態圖標與實時思考消息框 (Status & Real-time Info Box)
* **圖標顯示**:
- 在控制區顯示代表當前玩家/AI 等級的 SVG 圖標。
- **Desktop (電腦端)**:顯示於最下方;**Mobile (手機端)**:顯示於最右側。
* **實時思考消息框 (Thinking Modal/Toast)**:
- **思考期間(進行中)**:
- MCTS 階段:動態顯示「思考時間(秒)」與「當前搜尋次數(Simulations/Visits)」。
- Alpha-Beta 階段:顯示提示「已進入 Alpha-Beta 終局計算中...(無時間限制)」。
- **思考結束時(結算數據)**:
- 展示最終數據結果:**「總用時」**、**「期望值 (Evaluation Value)」** 及 **「預估勝率 (%)」**。
- **消失邏輯**:若下一回合輪到**人類玩家**操作,思考消息框在展示完整數據後保留 **2 秒**,隨後自動消失;若下一回合仍為 AI 操作,則更新內容並持續顯示。
* **棋盤操作中斷機制 (Interrupt Control)**:
- 當玩家點擊 **「回退 (Undo)」** 或 **「前進 (Redo)」** 時:
1. 立即中斷(Abort)當前正在執行的 AI 思考行程。
2. 關閉思考消息框。
3. 自動將玩家一與玩家二的控制狀態**均強制切換為「人類」**。
---
## 輸出要求
1. **變更說明**:簡要說明修改的檔案與功能模組(例如 Engine、UI Modal、Game Controller)。
2. **替換代碼**:提供完整且可直接複製替換的程式碼,並標註:
- `// === [檔名/組件名] 替換開始 ===`
- `// === [檔名/組件名] 替換結束 ===`