陈梽銘

郑州大学 · 电子信息工程 · 大一

我想报无人机方向。下面是我暑假做的两个桌游网页,以及它们怎么把我带到了无人机这儿。

先说说我

我跟着鹏哥学 C 语言入的门,后来遇到不会的就问 AI。

我爱玩桌游,但经常凑不齐人。暑假实在无聊,就想:没人陪我玩,那我做个电脑陪我玩。于是做了两个。

SCOUT 对局截图:绿色桌布上,对手刚打出一组同数 2,我正在把一张牌插进自己的手牌里

SCOUT:被电脑联手针对

SCOUT 是个出牌、接牌的游戏,手牌不能调换顺序,很考验算计。我的版本支持 3 到 5 人,电脑分三档(游戏里叫学徒、艺人、团长):

次优先用贪心算法给每一步打分,但多半故意不出最好的那步,挑第二好的,像个新手,很好欺负。

个体最优假设能看到所有人的牌,把这一圈每个人会怎么接都推一遍,再挑对自己最好的。强了不少,就是有点作弊。

AI 联盟是我最得意的。线下打桌游时,谁稍微领先,其他人就会默契地一起压他,我就常被这么针对。没人商量,却像在打配合,我觉得特别有意思,就让电脑也学会了这招。

它们互相看得到对方的牌,但看不到我的。轮到一台电脑出牌时,它算的是整个联盟的账:在轮到我之前,后面一两个盟友能怎么接,联盟里领先的那个怎么才能赢我。自己少赚点也没关系。

为了确认它们真没偷看,我加了个测试:把我手里的数字全换掉,张数不变,电脑的决定一模一样。这样输了我也服气。

结果,我在自己做的游戏里,又被联手针对了。

SEA SALT & PAPER:猜我手里有什么

收集卡牌、凑组合拿分的游戏,支持 2 到 4 人,电脑也分三档。别人的手牌看不到,牌堆里剩什么也不知道,所以电脑只能猜。

它会根据桌上出过的牌,想象我手里和牌堆里可能是什么,在这些局面里试走不同的动作,往后推几步,挑平均下来最划算的。困难档每次要想 420 次、推 5 步。

困难档的电脑也结盟,互相知道手牌。弃牌时会避开对我有用的,偷牌专偷我的。集齐四张美人鱼直接获胜,所以我面前一亮出三张,它们见到第四张就抢。

每张牌我都改了好几遍

SEA SALT & PAPER 的 58 张牌,我全部重新设计成了折纸风,每种都改了好几版,改到自己看着舒服为止。

拿螃蟹来说,最早是几块简单的几何拼起来的。后来我做了三个方向:正面、动态、几何抽象,摆在一起比。挑中一版再细修,才变成现在这样。

第一版

点一下牌,翻到下一版

SCOUT 的牌是照原版还原的,数字朝向、圆点间距这些也来回抠了好几轮。

手机上也要顺手。SEA SALT & PAPER 的牌会跟着屏幕大小自动调整;SCOUT 做成了 PWA,能像 App 一样装到手机桌面,没网也能玩。

和 AI 一起写代码

代码很多是 AI 帮我写的,但玩法、电脑怎么想、结盟这个主意是我的。规则对不对、电脑像不像人、牌好不好看,都得我自己一局局玩、挑毛病、再改。

有一回,一张牌设计得好好的,放进网页却显示歪了,问题出在 AI 写的显示代码上。AI 看不到牌歪没歪,只能我自己发现、一点点找原因。最后我把像素位置卡死,重新上传,牌才摆正。

为什么是无人机

看到双足实验室的无人机协同搜索项目时,我愣了一下:这不就是我那几个结盟的电脑在做的事吗?

如果每架无人机都像个体最优那档的电脑,各自算自己最好的去处,很可能几架都挤向同一块最有希望的地方,别处没人管。要是像联盟那样互相通气,知道哪里搜过、同伴要去哪,算整个队伍的账,有的去补没人搜的角落,应该会快很多。

当然,打牌和飞无人机差得很远,图像识别、定位、飞控我都还没碰过。但一群机器怎么商量着把事做好,这个问题我很想接着琢磨。

最近在学

算法最后要跑在真的硬件上,光会做网页不够,所以我在学 STM32 单片机仿真。用的还是 C 语言,鹏哥的课又派上用场了。

找我

GitHub:czm-mmm

两个游戏都是照着原版桌游做的非官方网页版,只用于学习和自己玩,规则和版权归原作者。