AI 做的《象棋大補帖》:暗棋、象棋、象棋麻將和小兵的故事,瀏覽器直接玩
這次想用象棋的棋子當角色,做一系列棋類遊戲,再把它們收進同一個遊戲檔,開機選一款來玩,所以叫「大補帖」。棋子是圓圓的木頭片,上面有字,也有臉和表情:翻開時會打招呼,吃子時會說一句,被吃時會「先回營休息」。
《象棋大補帖》(XIANGQI PACK)是一款懷舊電視遊樂器格式的遊戲,整個遊戲檔 2 MB,裡面有:
| 入口 | 內容 |
|---|---|
| 棋館 | 暗棋、象棋(大盤)、象棋麻將;對電腦有簡單、普通、困難三種強度,暗棋和象棋也能兩人對戰 |
| 故事 | 「小兵成長記」六章,每一章用一款棋當關卡 |
| 小玩意 | 今日一子:抽一顆棋子,給一句鼓勵的話 |
| 語言 | 中文、English、日本語、한국어、Tiếng Việt,在標題選單用左右鍵切換;棋子上的字不變 |
規則都是傳統遊戲;程式、電腦對手、畫面、角色、四首歌都是 AI 做的。AI 實際工作約 210 分鐘,按 API 牌價換算約 58 美元。
這也是我們第一次做多國語言的遊戲:中文、英文、日文、韓文、越南文五種,在標題選單用左右鍵就能換,畫面上的文字和字型都跟著換。翻譯也是 AI 做的。
在瀏覽器直接玩:aixsfc.app/player/?load=xiangqi。可以免費玩,想分享給朋友,請給他們這個網址。
怎麼玩







- 暗棋:4×8 的棋盤,32 顆子全部蓋著。一回合翻一顆、走一步或吃一顆。大小是帥(將)、仕、相、俥、傌、炮、兵;兵能吃帥,帥不能吃兵;炮要隔一顆子才能吃。規則依維基百科「暗棋」條目的台灣暗棋。
- 象棋:一般的象棋,九路十行、楚河漢界。規則依維基百科「象棋」條目:蹩馬腿、塞象眼、炮隔一子吃、兵過河才能橫走、將帥不能照面。拿起一顆子,能走的空格出現金圈,能吃的子亮金邊;被將軍時會說「將軍!」。選「電腦先」時你下黑方,棋盤會轉過來,讓你的子在下面。
- 象棋麻將:32 顆棋子當牌,你和三家電腦每家 4 顆,輪到時摸一顆、丟一顆。五顆湊成「一組加一對」就胡:一組是帥仕相、俥傌炮(同色),或三個兵;一對是兩顆一樣的。別人丟的剛好讓你湊成,也能胡。規則依維基百科「象棋麻將」條目的 32 子玩法(一面子加一對子胡牌),為了好上手做了簡化:只有摸牌和胡牌,沒有吃、碰;三個兵(卒)也算一組;條目裡不同色的將帥可以當對子,這版還沒做。開始前有一張規則卡。
- 故事「小兵成長記」:最小的小兵在新兵營長大,一路往上,最後回頭帶新來的兵。六章分別用暗棋、象棋麻將、象棋當關卡,難度從簡單到普通。贏了打開下一章,進度會存起來;連輸兩次可以先跳過,小朋友不會卡關。被吃都說成「回營」,沒有受傷的字眼。
- 按鍵:方向鍵移動、A 確定、B 放回去。
電腦怎麼下
三種遊戲的電腦都先用 JavaScript 寫成一份參考程式,在電腦上大量對打、調強度,再用遊戲機的組合語言照著寫一遍。
暗棋:簡單是能吃就七成機會隨便吃一個;普通替每一步打分數(吃到什麼、走完會不會被吃);困難先挑出最好的 8 步,再多想一層。參考程式自己對打 300 局(先後輪流):
| 對戰 | 勝 | 負 | 和 |
|---|---|---|---|
| 普通 對 簡單 | 300 | 0 | 0 |
| 困難 對 簡單 | 299 | 0 | 1 |
| 困難 對 普通 | 99 | 52 | 149 |
和局多是暗棋本來的樣子:雙方都小心,50 步沒有翻子或吃子就和。
象棋:第一步從 8 種常見開局(當頭炮、起馬、飛相、仙人指路)隨機挑;之後先快速看過每一種走法(走一步、看之後的吃子、這一步能不能威脅對方的大子),再挑最好的幾條路線往下想兩步,吃子一路算到底。簡單想 2 條、普通 5 條、困難全部。對打 20 局:
| 對戰 | 勝 | 負 | 和 |
|---|---|---|---|
| 普通 對 簡單 | 12 | 0 | 8 |
| 困難 對 普通 | 14 | 6 | 0 |
| 困難 對 簡單 | 17 | 3 | 0 |
在遊戲機上,簡單和普通一步最多約 2 秒,困難一般 2–4 秒,最久約 7 秒。所以畫面上兩邊名字旁都會顯示這一步想了幾秒,看得出對方正在想。
象棋麻將:簡單隨便丟;普通丟掉後「能胡的子有幾種」最多的那顆;困難再算每種還剩幾顆沒出現。對打 4000 局:三家簡單的桌上,換一家普通或困難上桌,勝率約 34–36%,同桌的簡單各約 5%。普通和困難差不多,這個遊戲運氣成分大。
怎麼確認沒做錯
- 一步一步比對。 在模擬器裡讓電腦對電腦下,每走一步就把遊戲記憶體裡的棋盤(或手牌、丟牌、牌堆)讀出來,和參考程式走同一步後的結果比,要完全一樣。暗棋三種強度 19 局;象棋三種強度、每局最多 200 步;象棋麻將 42 局,自摸、放槍、流局都有出現。
- 象棋的走法數。 從開局往下數所有合法走法:1 步 44 種、2 步 1,920 種、3 步 79,666 種,和公認的數字一樣,才開始寫電腦。
- 像玩家一樣玩。 測試程式用方向鍵和 A 下完整局:拿起子、放回去、走到金圈、看結果、再來一局;象棋也試了電腦先、棋盤轉過來的情形。故事從第一章一路玩到六章全部打開,確認進度有存起來。
AI 執行的做法
第一次做多國語言。 所有文字先用中文寫好,再給每種語言一本以中文句子查詢的字典。每種語言各有一區文字和一區字型,同一句話在每一區的位置都一樣,換語言時把那兩區搬進記憶體就好,遊戲程式不用分語言。韓文、越南文用另一套開放授權的點陣字型 Galmuri11;英文、越南文、韓文照單字換行,日文的句號和逗號不會跑到行首。
一份參考程式,兩種語言。 規則和電腦先寫成 JavaScript,對打調好強度,再用 65C816 組合語言照寫,連亂數產生器都一樣,所以同一個局面兩邊會選同一步,可以一步一步比對。
讓象棋在慢機器上想得夠快。 第一版困難最久要想約 15 秒。加速方法:
- 每個方向的走法展開成各自的一段程式。
- 最後一層不真的走子,查表直接算分數。
- 每條路線只問「有沒有比目前最好的好」,讓搜尋可以提早停。
三種改法都不改變選出來的那一步。
思考時間由畫面中斷來數。 電腦想的時候主程式沒空畫畫面,所以每秒的數字由每格都會執行一次的垂直空白中斷(NMI)更新。
畫面全部用程式畫。 木頭桌面、棋盤、木頭棋子、14 種棋子各 5 種表情的大頭,都是程式畫出來的;字型裡沒有「傌」,就用「俥」的單人旁加上「馬」拼出來。
四首歌都是新寫的。 標題、下棋、贏了、今日一子,用 MML(文字寫的樂譜)寫成五聲音階的曲子。
成本
| AI 工作時間 | 約 210 分鐘 |
| 模型 | Claude Opus 5.5,共約 440 則回覆 |
| AI 輸出 token | 約 55 萬 |
| 處理的 token 總數 | 約 1.9 億(大部分是快取讀取) |
| 估計費用 | 約 58 美元(以 2026 年 11 月的 Anthropic API 牌價換算;訂閱方案計費方式不同) |
| 其他費用 | 0:字型是開放授權,其餘都是為這款遊戲製作的 |
版本紀錄
| 版本 | 改了什麼 |
|---|---|
| 1.261108.7 | 語言改到標題選單最下面一行,左右鍵直接切換 |
| 1.261108.6 | 可以切換語言:中文、English、日本語、한국어、Tiếng Việt,會存起來;開機時讀回存檔 |
| 1.261108.5 | 故事「小兵成長記」六章 |
| 1.261108.4 | 象棋麻將 |
| 1.261108.3 | 象棋:雙方名字旁顯示這一步想了幾秒 |
| 1.261108.2 | 象棋的電腦重做:開局隨機挑常見開局,吃子算到底,強度改成「想幾條路線」 |
| 1.261108.1 | 象棋(大盤):對電腦三種強度、兩人對戰 |
| 1.261108.0 | 棋館選單;按得快也不會漏按 |
| 1.261107.1 | 暗棋:紅帥翻開後不見的問題;主選單的字超出框 |
| 1.261107.0 | 第一版:暗棋(對電腦、兩人對戰)、今日一子 |
還沒做的
- 暗棋的規則選項(俥直衝、連吃)。
- 象棋殘局、揭棋等其他玩法,之後一款一款加進棋館。
- 電腦的強度是對打算出來的,真人玩起來的感覺,還需要更多人試玩。
給家長和老師
- 適合國小學童和家人一起玩:每顆子的走法就是它的個性,故事裡小兵「過了河才能橫走」、傌「路不通就繞個彎」,跟著玩就會記住怎麼走。
- 故事裡的對手是比賽和任務,被吃是「回營休息」;今日一子只給鼓勵,不講吉凶。
想用 AI 做自己的遊戲,在空資料夾執行 npx https://aixsfc.app/skill/aixsfc.tgz 再開 claude,說明在首頁。
來源與授權
- 規則:暗棋、象棋、象棋麻將都是傳統遊戲,規則依維基百科「暗棋」「象棋」「象棋麻將」條目;象棋麻將的簡化見上。
- 字型:Cubic 11(俐方體11號),ACh-K,SIL Open Font License 1.1。
- 韓文、越南文字型:Galmuri11,Lee Minseo,SIL Open Font License 1.1。
- 英文、日文、韓文、越南文的翻譯:AI 翻的,還沒請母語人士看過。
- 人物與故事:虛構。
- 程式、電腦對手、畫面、角色、音樂:為這款遊戲從零製作。