1980 年代大学毕业一两年后,我去北京出差时看到一个小孩游戏,回到美国后才知道那叫 Mastermind(猜密码)游戏。因为不好意思直接买来玩,我打算回国后自己用电脑做一个类似的游戏。
回到系里后,我就开始着手开发,已经记不清到底花了多长时间。
最早用的是 QuickBasic,那时还带有行号,在夏普 PC1500 计算器(双行显示屏)上实现,平时开会时就会拿出来玩。后来,我在 380 上继续开发,还用字符画出对话框,利用 | / - \ 来显示旋转,表示程序在等待。
从那时起,它就成了我学习新计算机语言时的练手项目。每学一门新语言,我就用它写一个 Mastermind 的版本。可惜的是,那个时代没有网页和网盘,所有的源码都丢失了。
到了美国后,我用 Visual Basic 写了一个界面更友好的 Windows 程序,文件大小 50KB,支持更换皮肤,界面是椭圆形的,内置音乐, 还用 ActiveX 实现了椭圆形按钮(鼠标悬停在椭圆区域才会触发变化)。
做了 30 年程序员,算是前台老手,理应早就把 HTML 版的游戏发布到网上。实际没做,上传到网上的,依然是我那款 Windows 版的免费软件。
就像在北京不去长城一样,总觉得随时可以去,结果反而没去成。
想法早就有了,就是一直没动手。
直到前天,突然想到:为什么不让 ChatGPT 给我写呢?
于是昨晚我终于完成了。
我直接告诉它:“给我写一个 Mastermind Game 吧。” 它答应了,但写出来的东西效果并不好,根本不能玩, 界面也很简陋。
于是我用比较慢的方法一步一步地要求它:首先,画出左右区域要用响应式设计,这样能适应不同屏幕大小。接着加细节,有时要反复修改,因为我是通过描述让它实现界面,我用的免费版无法看到图形。等界面设计好后,我告诉它生成一个 4 位随机密码,密码的数字范围是 1-9(游戏数字键盘没有 0)。然后说用拖放的方式,把 4 个数字放到四个空格里,完成后启动拖放,并将结果放到右侧显示区,同时显示行数,在选好的数字右侧显示与密码比较后的结果。每次我偷懒告诉它:“我要做的是 Mastermind 游戏,快写完吧!”它就会乱写一通,我不得不重新开一个对话,重新从上一版开始。
就这样,我终于完成了这个猜密码游戏的网页版。
看着它生成源码,我自己一点也没写。
最神奇的是这一点,我还在想这是否意味着它有意识的苗头:
我把完整版放到一个新对话界面里,没有先前的记忆,让它读懂源码并解释给我听, 它上来就说"这是一个Mastermind Game 用密码形式玩"。
它居然能知道这是 Mastermind Game!
如果说它是见多了就自然归纳出来了,我们人不也是这样的吗?