跳过正文
  1. 文章/

30天Vibe编程挑战 - 第4天 - 俄罗斯方块

Nuno Coração
作者
Nuno Coração
Principal Product Manager @ Docker
目录
30 Days of Vibe Coding - 这篇文章属于一个选集。
§ 4: 本文

第4天。人人都知道俄罗斯方块。这正是它成为一个好测试用例的原因。你清楚地知道它玩起来应该是什么感觉,所以一旦有什么不对劲,你会立刻察觉。

提示词
#

“我想创建一个基于网页的俄罗斯方块游戏,带有3D风格方块、音乐和音效”

构建过程
#

这个项目和其他项目一样,通过 Watchfire 完成。仓库中的包名道出了一切:watchfire-0001-initialize-nextjs-project-with。它从一个提示词出发,Watchfire 将其拆解为多个任务,涵盖项目搭建、游戏状态管理、棋盘渲染器、带旋转状态的方块定义、音频系统以及UI组件。

它选择的架构是带有 hooks 的 React。三个自定义 hook 处理核心逻辑:useGameState 负责游戏 reducer 和 tick 循环,useGameMusic 负责 Korobeiniki 主题音乐,useSoundEffects 负责所有游戏内音效。游戏状态本身是一个规范的 reducer,包含每次移动、旋转、硬降和暂停的 action。踢墙、消行、关卡推进、计分——所有俄罗斯方块的核心机制一应俱全。

成果展示
#

这次的结果着实让我惊喜。

3D俄罗斯方块游戏中

方块具有真实的立体感。 每种四格骨牌都有自己的配色方案:主色、左上边缘的浅色高光、右下边缘的深色阴影,以及发光效果。I型方块是带柔和蓝色光晕的青色,T型方块是紫色,Z型方块是红色。它们看起来就像放置在深色网格上的3D糖果方块。我要求"3D风格方块",它交出了一个真正精致的答案。

游戏播放 Korobeiniki 主题音乐。 这是真正的俄罗斯方块旋律,通过 Web Audio API 实时生成。没有任何音频文件。它动态创建振荡器和增益节点,用方波旋律搭配三角波贝斯线演奏,并无缝循环。音乐随着关卡提升而加速,从第0关的1.0倍速到第15关的1.5倍速。它甚至会将你的静音偏好记录在 localStorage 中。

音效出人意料地出色。 共有8种独特的音效:移动点击声、旋转呼啸声、方块落地撞击声(附带噪声缓冲以增加冲击质感)、消行琶音、消四行的特殊庆祝音效、硬降呼啸声、悲伤的下行游戏结束琶音,以及欢快的升级音效。全部合成生成,没有任何音频文件。

具备所有正统俄罗斯方块功能。 下一个方块预览、带正确倍率的计分系统(单行100分、双行300分、三行500分、四行800分)、每10行升一关、实际增加的速度、最高分持久化存储、带恢复功能的暂停,以及显示最终成绩与最高分对比的游戏结束界面。

游戏暂停界面

操控手感到位。 方向键或WASD移动,W或上箭头顺时针旋转,Z逆时针旋转,空格键硬降,P或Escape暂停。甚至支持踢墙,在靠近边缘旋转时方块会自动推离墙壁。

数据统计
#

  • 22个源文件,涵盖组件、hooks、常量和类型
  • 约2,000行 TypeScript 代码
  • 8种独特的合成音效,外加完整的循环背景音乐
  • 7种四格骨牌,每种4个旋转状态(共28个形状定义)
  • 16个速度等级,从每tick 1000毫秒降至100毫秒
  • 0个音频文件贯穿整个项目

立即体验
#

玩俄罗斯方块

方向键或WASD移动,空格键硬降,P暂停。桌面端体验最佳。

第4天总结
#

四天过去了,我构建经典游戏的速度比我能测试的速度还要快。这才是真正的瓶颈,不是编码,不是调试,而是测试。

这个俄罗斯方块克隆玩起来真的很有趣。3D方块风格赋予了它独特的个性,Korobeiniki 主题音乐让它感觉真实,而音效设计为每个操作都增添了令人满足的反馈。所有音频都是通过振荡器和噪声缓冲从零开始程序化生成的——这一点说实话太疯狂了。整个项目里没有一个音频文件。

不断让我感到惊讶的是其完整性。我要求的是带3D方块和音乐的俄罗斯方块。我得到的是踢墙机制、最高分持久化存储、按关卡的分数倍率、带渐变按钮的暂停界面、保存到 localStorage 的静音状态,以及告知你是否打破最高分的游戏结束面板。这些都是我最终会去要求的功能,但我根本不需要开口。

踢墙实现是否符合官方俄罗斯方块指南?可能不完全是。计分系统是否100%原汁原味?接近,但我没有对照规范去验证。对于一个一天完成的项目来说,这些都无关紧要。重要的是它能运行,感觉不错,而且现在就可以玩了。


这是 30天Vibe编程挑战 的第4天。跟随我用AI辅助编程在30天内完成30个项目的旅程。

30 Days of Vibe Coding - 这篇文章属于一个选集。
§ 4: 本文

相关文章