AI Coding 生成“谁是卧底”发牌器

最近我 5 岁的女儿痴迷“谁是卧底”游戏,但是家里人本来就不多,分出来专门的法官角色影响游戏体验。我在微信里尝试了好几个小程序,总有这样那样的问题,要么必须多手机联网发牌,要么让你注册,要么广告太多。

后来总算选了一个凑合能用的,用了几次发现也有问题。一是很多词汇 5 岁的小朋友不认识,要选很多次;二是词汇量太小,经常会刷到重复题;三是经常莫名原因卡死。

我想了想,这么简单的程序,不如找 AI 写一个。我就写了一个 prompt:

请为我写一个玩“谁是卧底”游戏发牌的程序,要求如下:

1. 首先为游戏生成一千个适合谁是卧底的游戏词语对,例如最好是小学生也可以理解的名词,直接写入到 js 代码中,游戏时随机调用一个词语对进行游戏;

2. 游戏开始前可自定义本轮游戏玩家人数和卧底人数,默认的玩家人数为4,默认的卧底人数为1;以玩家1,玩家2,玩家3称呼玩家;

3. 点击游戏开始以后,出现玩家1的界面,但这时词语是隐藏的,只有点击查看词语,才显示词语;玩家1点击下一个后,出现玩家2的界面,但这时词语是隐藏的,只有点击查看词语,才显示词语,以此类推;即显示每个玩家的词语界面时,要先隐藏,只有点击查看才显示;

4. 大家都查看完自己词语以后,出现一个列表页面,列表页面支持每个人查看自己忘记的词语,或者查验身份;

5. 查验身份时,如果玩家身份是平民,那提示游戏继续;如果所有玩家的卧底都被找出,则游戏结束;

6. 在点击查看词语后,在下一位按钮下增加重新开始游戏按钮,以便用户在发现不认识词语时,快速重新开始。

Grok

生成代码显然没遵循 1000 个候选词对的要求,只生成了 10 个,也不支持预览。放弃。

ChatGPT

使用画布,生成代码显然没遵循 1000 个候选词对的要求,只生成了 10 个,支持预览,但预览失败。放弃。

豆包

使用 AI 编程,候选词对生成了大几百,可以看到代码生成过程,可以预览,但是最后的玩家列表“忘词”功能,两次都没调出来。放弃。

豆包生成的“谁是卧底”

秒哒

生成过程中完全看不到代码变化,只能死等。第一版生成从视觉效果上打败了豆包,第一眼印象完成度较高。支持预览,发现功能的最大漏洞在词语的隐藏上,第一个玩家隐藏,第二个玩家直接会显示。这个 bug 用了 3 次会话纠正了过来。后面又用了几轮会话优化一些效果,总共不到 10 轮会话,达到了一个较为满意的程度。

预览如下,也可以访问:https://app-4zsgkyvnt7uq.appmiaoda.com/ 直接体验。

秒哒生成的“谁是卧底”

因为这个小程序完全是前端实现的,即使生成过程中看不到源代码,发布以后也可以通过浏览器调试看源码。仔细检查了一下生成的词对,也没有到 1000 个,也有一些不符合我要求的,比如截图里的“番石榴”,5 岁孩子大概率不知道怎么描述。但是凑合能用吧。

从这轮 PK 来看,秒哒赢了。假如让我自己来写的话,写成豆包那样可能需要 1 天,写成秒哒这样可能需要 3 天。因为做过个人建站的就知道,功能目标是确定的,但 UI 的调整是没有尽头的,这次秒哒在这块做得算不错了。

从这次体验来看,针对特定场景进行的 AI Coding 优化,可能还真有一些空间。

Aspell: 程序员的拼写检查利器

作为一个程序员,尤其是非英语母语国家(ESL or EFL)的程序员,写出漂亮的注释可能要比写出漂亮的代码更难。就比如 Eric 的“来自英语母语国家的”女友就有 “Programmers are English-challenged.“ 的评论。

那么如何在程序的注释中避免犯一些低级语法或者拼写错误呢?Eric 也在 Some useful tools for you to write English articles on Linux 中推荐了几个小工具。我这里算拾人牙慧,稍微写一点儿我非常欣赏的 Aspell 拼写检查工具。

Aspell 是一个强大的拼写检查工具,尤其是对于程序员来说。在 Linux 下,大部分程序员应该是用 Vim 或者 Emacs 写代码,它们有内建拼写检查功能,比如 vim 可以用 :setlocal spell spelllang=en_us 开启对美式英语的拼写检查。不过很少人会安装或者使用拼写检查功能,不是每个人都喜欢写代码时面对一堆高亮的词组(当它们不仅检查注释时,哦,天那!)。幸运的是,我们有 Aspell。

Aspell 使用方法非常简单,比如只想检查 C 或者 C++ 风格的注释和字符串中的拼写错误,就可以用这样的命令:

$ aspell --mode=ccpp -c test.cpp

终端里就会列出一个一个注释中的错误,并给出修改意见。接下来的工作就很简单了,按照窗口下面每个键对应的功能,选择更换单词或者忽略该单词。如下图所示:

Aspell 拼写检查工具(无法看到此图,可能因为您无法连接国外网站)

Aspell 还有更多模式,比如检查 HTML, TeX, XML, Perl 等等一些文档或程序中的拼写,更多内容就请看 Aspell 的帮助吧。

Aspell 的用户习惯保存在 ~/.aspell.en.prepl 和 ~/.aspell.en.pws 两个用户自定义替换和忽略单词列表里,可以通过备份或者修改这两个列表来改变 aspell 对某些单词拼写检查的策略。