使用 Ink 框架和 TypeScript 实现的命令行俄罗斯方块游戏,尽可能还原原版游戏体验。
- 标准游戏规则:10×20 的游戏面板,7 种方块类型(I、O、T、S、Z、J、L)
- 完整的游戏机制:
- 方块旋转、左右移动、下落
- 自动消除完整的行
- 标准计分系统(1行40分、2行100分、3行300分、4行1200分,乘以等级+1)
- 难度递增(每 10 行提升一个等级,下落速度加快)
- 游戏状态:暂停/继续、游戏结束检测
- 彩色显示:每种方块都有独特的颜色
- 下一个方块预览
- 实时得分、行数、等级显示
npm installnpm start或编译后运行:
npm run build
npm run play| 按键 | 功能 |
|---|---|
← / A |
左移 |
→ / D |
右移 |
↑ / W |
旋转 |
↓ / S |
软下落(加速下落) |
Space |
硬下落(立即放下) |
P |
暂停/继续 |
Q |
退出游戏 |
R |
重新开始 |
支持两种控制方式:
- 方向键:
← → ↑ ↓ - WSAD 键:
A D W S(也支持大小写)
- 方块从顶部随机生成
- 玩家可以操作方块左右移动和旋转
- 方块自动向下下落
- 当一行被填满时,该行会被消除
- 消除行数越多,一次获得的分数越高
- 每 10 行消除后,游戏难度增加
- 当新方块无法放置在游戏面板中时,游戏结束
- 1 行:40 × (等级+1)
- 2 行:100 × (等级+1)
- 3 行:300 × (等级+1)
- 4 行(Tetris):1200 × (等级+1)
src/
├── types.ts # 类型定义
├── tetromino.ts # 方块定义和旋转逻辑
├── game.ts # 游戏核心逻辑
├── App.tsx # React/Ink UI 组件
└── index.tsx # 应用入口
- React - UI 框架
- Ink - CLI React 渲染器
- TypeScript - 类型安全
- Chalk - 终端颜色输出
- 编译:
npm run build - 开发运行:
npm start(使用 ts-node) - 生产运行:
npm run play(使用编译后的 JavaScript)
MIT