Re: 又有一個新的弈棋創意:拚數棋!
代码: 全选
規則更改
被「叉零」封住的,都不算是孤獨數。因為孤獨數的定義是被封在一個小正方形的數,而「叉零」為這個數字增加了四分之一的空間。
介面更改
提子階段也去掉可提子的顯示提示,只需要在點擊到一個不可走到己方「叉零」的棋子時在消息欄給出提示。
當輪到一方時,他的控制區的背景應高亮。
程式更改
把所有棋盤svg的屬性,包括stroke,stroke-width,fill等,都改為寫到svg的內聯屬性中,而不再寫到css中。
回答要求:給出一個python修改代碼的腳本。
上次由 ejsoon 在 2026年 9月 20日 23:37,总共编辑 1 次。
https://ejsoon.vip/
金梭越空:極速暢遊天地
金梭越空:極速暢遊天地
Re: 又有一個新的弈棋創意:拚數棋!
gemini
代码: 全选
針對你設計的這款「拚數棋」,要完全透過 Fairy-Stockfish 的 `variants.ini` 配置文件來完美實現所有規則,需要先了解引擎的技術邊界,並對規則進行技術對接與拆解。
---
### 一、 引擎(Fairy-Stockfish)與介面(GUI/外掛)的技術權責劃分
Fairy-Stockfish 是一個基於 UCI/UGI 協定的「單局棋弈引擎」。它的設計核心是**單局內的合法走法生成與局勢評估**。
1. **`variants.ini` 能幫你做到的部分:**
* 設定 7x7 棋盤與中心點初始擺盤(FEN)。
* 定義 5 種棋子的不同轉向(作為獨立棋子類型)以及各自的移動/提子走法。
* 設定雙方手頭的棋子庫(Pocket)與總量限制(各 25 個)。
* 限制相鄰落子(例如使用 `enclosingDrop = snort` 限制落子不能鄰接特定棋子)。
2. **`variants.ini` 無法單獨實現(需由外部 GUI/裁決程式處理)的部分:**
* **圖論區域與動態分數結算:** 實邊圍成的區域扣分、孤獨數扣分、提子階段的三角形相減累積分數。引擎的核心評估函數(Evaluation)只能預估「盤面優劣」,但遊戲中複雜的區域判分與多階段分數轉化,必須由**外層 GUI / 裁判程式**在局終進行圖論(連通分量/網格圍牆)演算法計算。
* **跨局累計總分(兩局換先後手):** 引擎本身**不具備跨局記憶**。兩局累積總分、互換先後手的邏輯,是由 **GUI(如 CuteChess、PyChess GUI)或賽制平台** 來控制連玩兩局並統計總分。
---
### 二、 Fairy-Stockfish `variants.ini` 設定檔撰寫
你可以將以下內容新增至 Fairy-Stockfish 的 `variants.ini` 中:
```ini
[pinshuqi:fairy]
# 1. 棋盤與基礎規則
boardSize = 7x7
pocketSize = 25
maxMoves = 200
# 2. 落子與提子模式設定
# 允許從手牌中落子 (Drop)
pieceDrops = true
# 限制落子時不能與場上已有棋子的實邊相鄰 (使用 Snort 風格的鄰近限制)
enclosingDrop = snort
# 3. 手牌 (Pocket) 數量限制:雙方各 25 個棋子
# 手牌預設包含所有轉向的棋子,單局總上限各 25 子
pockets = true
# 4. 勝利條件設定
# 以消除對方王將或手牌落盡後結算 (若無王將則以消滅或走盡為終局)
extinctionValue = 0
# 5. 棋子符號與走法定義 (以 Betza 記號法定義提子階段的移動方向)
# -------------------------------------------------------------
# 「單一」(Single): 1實邊1角 -> 前走1步,或兩個斜後方各1步
customPiece1 = s:fW1bF1
# 「雙二」(Double-2): 2分開實邊2角 -> 選擇兩個指定方向走1步
customPiece2 = d:fW1bW1
# 「角二」(Corner-2): 2相連實邊2角 -> 斜向走1步或2步
customPiece3 = c:F1F2
# 「圍三」(Surround-3): 3實邊3角 -> 三個指定方向選一個走1步
customPiece4 = w:fW1lW1rW1
# 「叉零」(Cross-0): 對角線交叉 -> 提子終點 (設定為不可移動或作為固定標記)
customPiece5 = x:
# 6. 棋子不同轉向對映
# 透過字母大小寫與後綴區分不同的方向轉向,GUI 載入時會映射為對應圖片
# N=北, E=東, S=南, W=西
pieceToCharTable = s:s, d:d, c:c, w:w, x:x
```
---
### 三、 兩局統計與計分規則的實現方案
要完全按照你設計的規則遊玩與比賽,建議採用以下架構配合:
1. **單局 AI 算牌(引擎端)**:
* 將上述 `variants.ini` 載入 Fairy-Stockfish。
* 引擎會根據棋子的走法、落子限制與手牌庫進行合法走法搜尋。
2. **區域評分與提子分數(裁判程式/GUI 端)**:
* 撰寫一個輕量級的 Python 腳本(或使用 Custom GUI)監聽引擎輸出的 FEN 碼。
* **落子階段結束時**:腳本執行洪水填充法(Flood Fill)掃描 7x7 棋盤,找出實邊與邊界圍成的區域,計算區域內雙方三角形數量之差、判定孤獨數,並計算出第一階段得分。
* **提子階段**:腳本記錄每一次提子移動(從起點到己方「叉零」的路徑),即時計算三角形數量相減的提子得分。
3. **兩局兩勝/累積總分判決(賽制控制)**:
* 在 CuteChess 或 Python 腳本中設定 **Match 模式**(每輪對局 2 局,第 1 局 Player A 先手,第 2 局 Player B 先手)。
* 第一局結束後記錄玩家 A 與 B 的得分 $S_1(A)$ 與 $S_1(B)$。
* 第二局結束後記錄 $S_2(A)$ 與 $S_2(B)$。
* 最終總分 $Total(A) = S_1(A) + S_2(A)$,總分為正數且高者獲得最終勝利!https://ejsoon.vip/
金梭越空:極速暢遊天地
金梭越空:極速暢遊天地
-
- 相似主题
- 回复总数
- 阅读次数
- 最新帖子
在线用户
正浏览此版面之用户: 没有注册用户 和 91 访客