Saturday, December 6, 2025

Vibe Coding 2025:两周亲身体验 AI 写程序(1)


自从 Google 开放让学生免费领取一年的 Gemini 3.0 Pro 订阅后,我就像突然打开了新世界大门一样,开始疯狂实验用 AI 来写各种网页小工具。最终目标很简单:做一些自己日常会用、需要高度客制化的工具,顺便取代那些明明功能很简单却要收费的 app。

其实我早就知道这几年 AI assisted programming 已经是许多真正的程序员的日常了,只是门外汉的我一直没有去尝试。所以虽然以前也试过让 ChatGPT 生简单的 HTML 或 SVG,小玩一下就因为结果不怎么理想而作罢。

但是最近看了一些Youtuber的实验后,我有了大胆的想法。

测试一:贪吃蛇小游戏

拥有 Gemini 3.0 Pro 的第一天,我就想学一些youtuber搞小游戏编程当做试验。结果脑袋一片空白,还是需要考虑10来秒,才随口就说:“做个Nokia的初代贪吃蛇吧”



输入“咒语”不到一分钟,Gemini 就开始狂喷 HTML/CSS/JS火星语。然后又不到一分钟,我的震撼感都还没消失,完整可玩的贪吃蛇已经出现了。

试玩之后只能说:跪了。

这不仅是个完整的贪吃蛇游戏,更让我惊讶的是 UI 风格很好看。在我根本没给非常仔细的指示下,它自己选的色调、布局、按键风格都很顺眼,甚至比我自己能想出来的更好。

既然成品如此完整,我可以考虑deployment的操作了,准备练习如何把成品发布上线了!

经过和 Gemini 的对话(原来这种就是简单的 static webpage),我尝试把成品丢上 Netlify 和 GitHub Pages。虽然他们界面一开始对我这个小白看起来有一点复杂,但靠 Google搜索和 Gemini对话,我还是顺利把贪吃蛇推上线了 。 

链接:

https://exponsnaketial.netlify.app

注:由于我哥给了一个建议:“不如改成蛇每吃一粒点就立刻长一倍”, 于是我也顺势给它取了一个中二的名字。

体验成功后,就开始想下一个项目。

解锁技能:

Vibe Coding

Netlify上手体验

Github上手体验


测试二:锄大 D(Big Two)卡牌游戏

现在可以提升难度,那就试试看做一个 锄大D。我对规则熟悉,也可以拿来测试 AI 的出牌逻辑强弱。顺便摆脱那些免费锄大D app被迫看广告的烦恼。

一样的流程:一句 “做个 Big Two 游戏”,不到一分钟就生成了第一版。基本玩法没错,我也不需要向 Gemini 详细解释规则,只是一些 house rule 细节不同而已。


但是这次面对的挑战是比贪吃蛇复杂,由于界面更复杂了,这次需要人脑介入处理界面与功能优化,例如:排序方式, 卡牌视觉设计,桌面出的牌显示, 对手剩余卡数等等。

第4版

对界面设计我完全没有概念,搞了几轮也不满意,只好先去参考市面上现成的卡牌游戏,再把指令丢会给 Gemini。经过几轮来回调整后,游戏的UI 和功能就比较一个完整游戏了 (虽然UI依然充满瑕疵)。

最终版


AI 玩家逻辑升级:然后我输惨了

接着我就问 Gemini:要如何让 AI 玩家更聪明?Gemini比较当前出牌逻辑,建议调整4条简单的出牌逻辑即可:

A. Hand Structure Analysis (The "Combo Protection" Rule)

- Current Behavior: Treats 3, 3, 4, 5, 6 as individual cards. Might play a single 3.

- Improved Behavior: Recognize 3, 3 is a Pair. Do not play a Single 3 unless necessary.

Before deciding a move, the AI should analyze its hand to group cards into optimal combinations.

B. Control Card Conservation

Strategy: If the card required to beat the table is a rank A or 2, and the AI has more than 5 cards left, it should consider Passing instead of playing.

Exception: Unless playing that high card allows the AI to play a 5-card hand next turn that it guarantees to win.

C. Opponent Awareness (Endgame Logic)

If opponent has 1 card: Do not play a Single. Play Pairs, Triples, or 5-card hands to lock them out. If forced to play a Single, play the highest Single available (to prevent the opponent from sneaking out with a low card).

D. Leading Strategy (Free Turn)

Lead 5-card hands first: If the AI has a Straight/Flush, play it immediately. These are harder to pass later.

Lead Pairs before Singles: It is harder to regain the lead with pairs.

Lead the "Trash": Lead the lowest card that isn't part of a good combo.

看了一下那些策略,我心想:“咦?这不就是我平时的玩法吗?” 原来我的基本逻辑可以这么简单地描述出来。虽然我猜应该还有更高级的玩法,比如分析已经在打出手的牌面之类的,但我自己也不深究,不知道怎么描述策略给它。于是我直接下令:“你就按你方式升级 AI。” 

(顺便看了一下它生成的程式架构,原来出牌逻辑整个被打包在一个 runComputerTurn() 里面。看到这一点我突然觉得未来如果要做一个AI 难度选择的功能,好像也并不难实现嘛。只要根据不同难度去切换不同的逻辑模块就行了)

结果升级后……我试玩几把后,现在问题来了:我输多赢少了啊!

算了,不玩了,上线,move on。

链接:

https://big2bygemini.netlify.app/

https://gourean.github.io/big2bygemini/

但是!但是!当我兴致勃勃地切到手机萤幕测试时

整个排版完全还是一塌糊涂!

我马上向 Gemini “投诉”。结果它淡定地跟我解释:你想要的叫做 Responsive Web Design(响应式网页设计)。听它解释后我才突然回想起:平时上网时,网站在电脑横屏和手机竖屏之间会自动适配版面,而我这个小白,在设计一开始根本完全没考虑到这一点。

于是我只好又让 Gemini 帮我把整套 UI 调整成 responsive。不过改着改着我心像算了,不需要再纠结UI, 以后有机会可以直接打掉重练。

也是在这个阶段,我才体验到 User Interface (UI)/User Experience (UX)  跟写代码是两码事。就算代码能跑、功能没问题但如果用起来糟糕,那再完整的程式也只是形式上的“能动”,却没有人会想要用它。

Gemini 的确可以在极短时间内把整个游戏的代码生出来,我也相信它生成的代码可能不是最优雅、最效率、最符合工程师标准的写法,但至少是 跑得动、目标达成。对于这种小型工具或游戏,代码结构不够完美也不算致命吧?

但是真正麻烦的是它不是人。只要目前AI 很难体会人类在视觉上对“几个像素的差距”有多敏感。对于我们来说,字大小、按钮位置、间距大小,都会影响整个体验。但这些直观的感受对目前的AI来讲很难真正理解,所以即使代码方面可以代劳,UI/UX还需要人力介入。就像这次的项目一样,真正花我最多时间的根本不是写程式,而是界面

解锁技能:

Responsive Web Design概念



No comments:

Vibe Coding 2025:两周亲身体验 AI 写程序(2)

Gemini界面 项目 3:Little Biochemist (这个阶段已经不能叫“测试”了,算是真正以“成品"为目标的开发项目。) 在前两个小游戏的实验之后(文接这里: Page not found: Vibe Coding 2025:两周亲身体验 AI 写程序(1...