AI观察 2026-10-09

我用 WorkBuddy 做了个单机掼蛋:能打、能练,还带 AI 教练

掼蛋是饭局社交硬通货,但想练没搭子、规则记不住。我用 WorkBuddy 做了个单机版,能打能练还带 AI 教练,规则准确、能自检。

掼蛋在江浙沪被叫作"社交普通话",现在连全国饭局都在打。它比斗地主多了一层——两人一队,要配合。可真上手才发现:规则杂、配合难、还没人从零教。想练?没搭子;想学?老手不愿意从头讲,只在你出错时笑你。

所以我用 WorkBuddy 做了个单机版:一个 HTML 文件,双击就开打,4 个人两两组队(你和对家一队,上家和下家一队),三个 AI 陪你打满整局。

这不是"纸牌 Demo"。它真的能玩一局:发牌、出牌、过牌、升级、甚至末游向头游贡牌、头游还贡,全有。AI 对手还会打配合——队友在压牌时就过、不抢自己人;小炸弹攥在手里当威慑,对手真要跑掉时才出手。

一、规则里最费劲的:它根本不是一条阶梯

网上讲掼蛋的图,几乎都会画一条阶梯:

单张 < 对子 < 三张 < 三带二 < 顺子 < 连对 < 钢板 < 炸弹 < 同花顺 < 天王炸

我第一版代码就是照着它写的:强度大的能压强度小的。

一上手就露馅——上家出一张 A,我手里一对 3,系统说可以压。

那条阶梯讲的是"量级排序",不是"压制关系"。 掼蛋里绝大多数牌型只能同型才压,而且张数必须相同:单张 / 对子 / 三张 / 三带二 四者彼此不能互接,顺子 / 连对 / 钢板 三者也不能互接。真正能跨牌型压制的,从头到尾只有一个东西——炸弹。

所以在代码里 < 这个符号得分开用:beats() 负责判断"能不能压",那条阶梯只配用来给新手讲个大概量级。我干脆把这句话直接写进了规则面板,因为它太容易读错了。

第二类错,是把"大概"当"细节"。三条都踩过:

连牌的张数是写死的。 顺子固定 5 张、连对固定 6 张(连续三对)、钢板固定 6 张(连续两组三张),多一张少一张都不成立。我第一版写成"5 张起",于是 9 张的钢板、6 张的顺子全都合法——看着挺合理,是错的。

炸弹不是一档,是一整段。 完整顺序是:普通牌型 &lt; 4 张炸 &lt; 5 张炸 &lt; 同花顺 &lt; 6 张及以上炸 &lt; 王炸。也就是说,同花顺只压 4、5 张炸弹,撞上 6 张以上大炸要让位。这条我是打出一副 8 张炸才发现的:明明更大的牌,系统不让压。

2 是最小的普通牌。 大王 &gt; 小王 &gt; 逢人配 &gt; 主牌 &gt; A &gt; K &gt; … &gt; 3 &gt; 2。很多地方打牌 2 很大,这里正好反过来。唯一的例外:本局级牌正好是 2 时,它翻身变成主牌、一跃到最大。

还有两条每局都在变的动态规则:级牌每局变——本局级牌是几,几就是主,所有同数字的牌升一级;逢人配是红桃的那张级牌,能顶任意牌凑牌型,但不能单独当王,所以永远凑不出王炸。

这些边界,漏一条,对局里就会冒出"能压却不让压"或者"牌数算不平"。而且它们不会在你写的第一个小时暴露——得真打到那一步。

二、真正的卖点:内置一个"教练"面板

这是它和市面掼蛋 App 最大的不同——不是让你玩,是让你边玩边懂。

右侧有个教学面板,每走一步都给你实时分析:

  • 局势分析:谁在抢头游、这轮该送对家还是自己压;
  • 记牌器:大王、小王、逢人配、主牌、2、A、K 还剩几张"既没出现过、也不在你手上"——这就是推算对手底牌的依据;
  • 炸弹存量:根据已经打出来的牌和你手上的牌,估算对手手里可能还藏着几个炸弹;
  • 手牌解析:自动把你的牌拆成顺子、连对、钢板、三带二、炸弹、散牌几组,告诉你先甩长牌型、炸弹留后手;
  • 出牌建议:每次给 1–3 条带理由的方案,点一下自动帮你选好牌。

图注:实际游戏界面——绿色牌桌 + 右侧"教练"面板。花色用了黑 / 红 / 绿 / 蓝四色区分,牌叠在一起时也能一眼认出。

对小白来说,这个面板等于身边坐了个肯从头讲的老手:不是替你出牌,是告诉你"为什么这么出"。

三、AI 对手是怎么"想"的

它有一套评分逻辑,把老手的"牌感"拆成可执行判断:

  • 领出阶段:优先走三带二——一次带走 5 张、还不留散牌,是清牌效率最高的普通牌型;其次是连对 / 钢板,再是顺子。炸弹和逢人配捏在手里留后手;
  • 跟牌阶段:用最小的牌型压住,尽量不动逢人配——牌是打不完的,别一上来就交大牌;
  • 送对家:对家快走完时,不是无脑甩最小牌,而是先算他最大能压到几,再挑一张他压得住的最小牌递过去——出张 3 而他最大只到 5,他接不住,这一轮就白送给对手了;真接不住就不硬送,改出最小牌探路;
  • 控尾:4、5 张的炸弹攥着当威慑,等对手剩 3 张以内才出手;6 张以上的大炸和王炸不用死藏——它们已经在天花板附近,压过去往往就是收官。

图注:掼蛋牌型的三层结构。第一层是"谁能压谁"的真实规则,下面才是量级排序——这两件事必须分开看,否则很容易写出"对子压单张"这种根本不存在的规则。

说白了,所谓"AI 会打牌",就是把这些经验规则显式地写进评分里——它不靠直觉,靠的是你把规则讲清楚。

四、它还给自己写了"自检"

这点我挺意外,也挺喜欢:它内置了一套自我测试。

跑 100 局全 AI 互打(这一次是 4100 多次出牌、4200 多次过牌),外加一组 156 条规则用例——其中 82 条直接断言"谁压得过谁"。校验的是:牌数始终 108 张不丢、每一步出牌都合法、终局 4 个人名次完整不重不漏、升级级数落在合理区间、教学面板每走一步都给得出建议。

这组用例的来历挺关键:我上面写的每个坑,最后都变成了一条曾经不通过的用例。 最典型的是"反直觉"那一类——对子压不了单张、顺子压不了连对、9 张的钢板不成立,我一次性钉了十几条,两两之间都比一遍。

一个前端小游戏,自己能跑回归测试——这点其实很多 AI 生成的代码都缺。它让"代码到底对不对"这件事,不再靠人肉玩几把去碰。更实际的好处是:第三轮改规则的时候,我改完只跑一次,就知道有没有碰坏前面已经修对的东西。

图注:这个单机掼蛋的几个硬数字——108 张、10 种牌型、4 人 2 队、100 局自跑自检、0 错误、1 个 HTML 文件。

五、怎么做出来的:是对话,不是写代码

最后说做法,因为这部分可能比游戏本身更值得记一笔。

整个东西是纯前端单文件:没后端、没构建、没依赖,浏览器打开就是全部。做出来的过程,是和 WorkBuddy 坐下来聊——

  • 把规则边界讲清楚(同型才能压、连牌张数固定、炸弹怎么分档、2 最小);
  • 说要什么面板(局势 / 记牌 / 炸弹存量 / 出牌建议);
  • 说 AI 该怎么打(领出优先三带二、跟牌用最小的、送对家、控尾)。

它产出的是代码 + 自检,不是一段"能跑就行的脚本"。

关键不在"让 AI 写代码"这几个字,而在于你把需求讲清楚——尤其是那些麻烦的规则边界。而且我发现一个规律:我讲错的地方,它一定照错执行。那条"阶梯"是我照着网上的图讲给它的,它就老老实实写成了"大的压小的"。所以后来每次玩到不对劲,我都不再改代码,而是回去把规则重新说一遍——它比我更缺的不是能力,是准确的输入。

会打掼蛋、但不一定会写程序的人,也能照着这条路,把自己想玩的小工具"聊"出来。

六、结尾

掼蛋这种东西——规则多、状态多、还得会配合——以前你要做成应用,得专门找个会写程序的朋友,求他周末帮你写。

现在你和 AI 把"我要什么、规则边界在哪"讲清楚,它就出来了。

所以真正难的从来不是写代码,是想清楚自己要什么。文件就一个 HTML,双击即玩;想改规则、加功能,也是在对话里接着说。

(顺带一句:这游戏和前面几篇"AI 每周谈"是同一类实验——看看用对话式 AI,普通人到底能"聊"出多完整的东西。这次的答案是:一个能打、能练、能教,还知道自己对不对的完整应用。而且它到第三轮才真正把规则写对——这个过程本身,比"一句话生成一个游戏"有意思得多。)

在微信里点不动?点右上角「···」→「在浏览器打开」,再点下载。
文件是单个 HTML,双击就能玩,不联网也能玩。