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 翻译,还没请母语人士看过。
- 人物与故事:虚构。
- 程序、电脑对手、画面、角色、音乐:为这款游戏从零制作。