做游戏前先想清楚:一个水果消除游戏的设计思路(小白伪代码版)

📅 2026/8/11 8:43:11
做游戏前先想清楚:一个水果消除游戏的设计思路(小白伪代码版)
这是系列第 1 篇设计篇。很多新手一上来就让 AI “帮我写个游戏”AI 写出来的东西要么跑不起来要么不是你想要的。不是 AI 不行是你没先想清楚。本文用伪代码把游戏设计讲透下一篇再教你怎么用 WorkBuddy 把它变成能玩的真游戏。示例图0. 先说结论设计 给 AI 写需求文档你做后端时产品经理给你需求文档你才动手写接口。做游戏一模一样——你就是产品经理AI 是开发。你先把游戏长什么样想清楚写下来AI 才能实现得准。本文设计一个「水果消除游戏」规则如下一句话顶部水果挂在屋檐下点一下让它掉下来顺着斜坡滑进中间的篮子篮子顶部相邻的两个同色水果会消除篮子里出现 3 种颜色就输全部清空就赢。下面把这句话拆成可执行的「设计规格」。1. 动手前必须想清楚的 4 件事不管什么游戏先填空这 4 个问题否则 AI 一定会做歪问题本游戏答案玩家怎么操作点屏幕上的水果 → 它脱落下落怎么算赢场上所有水果都消除完怎么算输篮子里同时有 3 种不同颜色难度怎么变关卡越高水果越多、颜色越多、屋檐越陡伪代码表示胜负if(篮子里的颜色种类3)游戏结束(输);if(场上水果数0队列空)游戏结束(赢);2. 屏幕怎么定位小白最易晕的一块手机竖屏画布就是一个长方形。坐标系规定左上角是 (0,0)x 向右增大y 向下增大重点y 朝下和数学课本相反。你口中的前面离房子近 屏幕下方 y 大你口中的后面离房子远 屏幕上方 y 小水果大小用「百分比」定意思是半径 屏宽 ÷ 18doubleR屏幕宽度/18;// 半径。直径就是屏宽的 1/9好处手机屏大屏小水果自动跟着变不用为每个机型调尺寸。一行大概能横放 9 个这是算出来的不是规定死的。3. 水果有几种状态状态机每个水果同一时间只处在这 3 种状态之一这就是「状态机」enum状态{挂枝,// anchored钉在屋檐上不动掉落,// falling受重力往下落进篮// inBasket已进入篮子等消除}判断点没点到手指坐标离水果圆心 1.55 倍半径就算命中比视觉半径大一点好点中if(手指到圆心的距离水果半径*1.55)该水果.状态掉落;4. 三个筐装数据容器划分游戏里所有东西都装在 3 个列表里别混ListFruit场上列表;// 所有还挂在枝上或正在掉的水果ListFruit篮子列表;// 已经进篮、等待消除的ListFruit补位队列;// 屏幕放不下时多出来的先排队消除时篮子列表顶上两个同色 → 一起删掉补位队列里有货 → 从顶部补一个进来。5. 物理就 4 步不用懂物理公式游戏里的真实感全靠每帧重复这 4 步每帧循环{1.重力掉落水果的 vy0.45;yvy;// 越掉越快2.碰撞两两水果重叠就沿连线各退一半// 不穿模3.支撑掉到固定水果圆面上 → 滑落或卡住// 不像粘住4.级联点走一个它上方失去支撑的才释放// 只放直接一层}第 2 步碰撞是核心判断两个圆碰没碰只看圆心距离勾股定理下篇细讲doubledist两点距离(a,b);if(dista.半径b.半径){// 重叠了double重叠量(a.半径b.半径)-dist;沿连线 各退 重叠量/2;// 刚好分开}6. 消除和胜负怎么判定篮子是个竖井只有顶部相邻的两个同色才消不是任意两个if(篮子列表.size()2){Fruit上篮子列表.get(倒数第1个);Fruit下篮子列表.get(倒数第2个);if(上.颜色下.颜色){删掉这两个;// 消除从补位队列补一个进来;// 维持节奏}}输赢在第 1 节已经写了这里不复述。7. 关卡难度怎么爬难度用 4 个维度控制且必须封顶不然第 99 关没法玩关卡规则(关卡 lv){水果总数min(20lv*4,60);// 封顶 60颜色种类min(3lv/2,6);// 封顶 6 种屋檐坡度min(0.25lv*0.03,0.5);// 越陡越快可消除阈值...// 其他}8. 换肤和切关设计上怎么预留换肤原则皮肤只影响画什么绝不影响是什么。水果本质还是那个数据对象有坐标、半径、颜色只是画的时候换个图案画水果(f){if(当前关2)画(三国头像[f.类型]);elseif(当前关3)画(蜡笔小新头像[f.类型]);else画(普通水果[f.颜色]);}切关就是重新生成一关切到关卡(lv){当前关lv;清空三个筐;按 关卡规则(lv)重新生成;}9. 小白最容易踩的 6 个坑坑现象正解y 轴朝下以为前面是 y 小水果跑反了记住y 大屏幕下方百分比是尺寸不是排版以为一行放几个是规定半径屏宽/18一行几个是算出来的每帧全擦全画以为改哪画哪水果不刷新Canvas 每帧擦干净重画全部碰撞只看当前帧水果穿模漏判用上一帧坐标快照比对级联用递归一删一大片卡死只放直接上层下一帧再放消除破坏配对最后剩奇数个消不掉数量生成偶数、摆不下进队列、道具同步删10. 下篇预告设计想清楚了下一步就是让 AI 把它变成真游戏。下一篇《用 WorkBuddy AI 从零做出这个游戏上》会手把手展示WorkBuddy 是什么、怎么用怎么把上面这份设计喂给 AI怎么一步步加功能挂枝 → 点击 → 滑动 → 消除跑起来发现问题怎么让 AI 修如果你看不懂坐标 / 画布 / 碰撞这些词先读我另一篇《前端概念白话讲解》用 Java 后端话讲前端再回来看这篇就顺了。一句话总结设计篇你当了一次产品经理把游戏想明白了下一篇你带着这份需求让 AI 当开发把它做出来。