Files
nanocode/happy-games/games/tetris/README.md
T
Ubuntu 32b43f85bd a
2026-07-03 16:58:28 +08:00

196 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🎮 俄罗斯方块游戏
经典俄罗斯方块游戏实现,遵循FC/Game Boy标准规则。
## 🎯 游戏特性
### 核心规则
- **场地尺寸**: 10列 × 20行标准网格
- **方块类型**: 7种标准四连方块 (I, O, T, L, J, S, Z)
- **控制方式**: 虚拟按钮 + 键盘控制
- **分辨率**: 540×720竖屏 (优化显示效果)
### 游戏机制
1. **方块生成**: 纯随机生成7种方块
2. **移动控制**: 左右移动、旋转、软降
3. **消行规则**: 单行100分、双行300分、三行500分、四行800分
4. **等级系统**: 每消除10行升1级,速度逐渐加快
5. **游戏结束**: 新方块无法放置时结束
## 🎮 控制方式
### 虚拟按钮 (移动设备)
- **← 左移**: 向左移动方块
- **→ 右移**: 向右移动方块
- **↓ 软降**: 加速下落 (每格+1分)
- **↻ 旋转**: 顺时针旋转方块
### 键盘控制 (桌面设备)
- **← / →**: 左右移动
- **↓**: 软降加速
- **↑ / 空格**: 旋转方块
- **P**: 暂停/继续游戏
### 触摸控制 (移动设备)
- **左右滑动**: 水平移动
- **向下滑动**: 软降加速
- **向上滑动**: 旋转方块
## 📊 游戏界面
### 布局设计 (移动优化)
```
┌─────────────────────┐
│ 游戏画布 │
│ (540×720像素) │
├─────────────────────┤
│ 虚拟控制按钮 │
│ [开始] [↻旋转] [重来] │
│ [←][↓][→] │
├─────────────────────┤
│ 游戏信息面板 │
│ 分数 | 等级 | 消行 | 速度 │
└─────────────────────┘
```
### 控制按钮特点
- **第一行**: 开始(左) | 旋转(中) | 重来(右)
- **第二行**: 方向按钮紧凑排列 ← ↓ → (间距5px)
- **按钮大小**: 65×65像素,适合手指操作
- **布局优化**: 方向按钮紧密排列,操作更便捷
### 控制按钮布局
- **第一行**: 开始按钮 (左) | 旋转按钮 (中) | 重来按钮 (右)
- **第二行**: 方向控制按钮 (← ↓ →)
- **开始按钮**: 动态状态 (开始/暂停/继续/重新开始)
- **重来按钮**: 立即重置游戏,重新开始
### 信息面板 (虚拟键盘下方)
- **分数**: 当前游戏得分 (大字体显示)
- **等级**: 当前游戏等级 (0-20)
- **消行**: 已消除的行数
- **速度**: 当前下落速度倍数
### 信息面板 (虚拟键盘下方)
- **分数**: 当前游戏得分 (大字体显示)
- **等级**: 当前游戏等级 (0-20)
- **消行**: 已消除的行数
- **速度**: 当前下落速度倍数
**设计特点**:
- 信息面板位于虚拟键盘下方,方便查看
- 水平排列,节省垂直空间
- 大字体显示,易于阅读
- 视觉增强:阴影、边框、间距优化
### 游戏状态
- **游戏进行中**: 正常游戏状态
- **游戏暂停**: 点击画布或按P键暂停
- **游戏结束**: 显示最终得分和统计
## 🔧 技术实现
### 技术栈
- **游戏引擎**: PlayCanvas (WebGL 2.0/WebGPU)
- **SDK集成**: Poki SDK (游戏状态管理)
- **分辨率**: 540×720竖屏优化
- **响应式**: 自适应不同屏幕尺寸
### 代码结构
```
TetrisGame类
├── 游戏初始化 (initGame)
├── 方块管理 (spawnNewPiece, rotatePiece, movePiece)
├── 碰撞检测 (checkCollision)
├── 消行逻辑 (clearLines, updateScore)
├── 游戏循环 (startGameLoop)
├── 渲染系统 (render, drawBlock, drawRect, drawLine)
└── 控制管理 (setupControls, setupUI)
```
### 关键算法
1. **碰撞检测**: 实时检测边界和方块重叠
2. **旋转算法**: 4×4矩阵转置实现90度旋转
3. **消行检测**: 遍历每行检查是否填满
4. **分数计算**: 基础分 × 等级倍数
5. **速度控制**: 等级越高下落间隔越短
## 🚀 快速开始
### 访问方式
1. 通过游戏门户: http://129.211.173.87:8895/
2. 直接访问: http://129.211.173.87:8895/games/tetris/
### 开发测试
```bash
# 进入游戏目录
cd /home/ubuntu/nanocode/happy-games/games/tetris/
# 查看游戏文件
ls -la
# 编辑游戏配置
vim index.html
```
## 📈 游戏策略
### 新手技巧
1. **保持平整**: 尽量填平底部,避免出现深坑
2. **预留空间**: 为I型方块留出4格空间完成Tetris
3. **优先消行**: 尽快消除行数提升等级
4. **控制速度**: 高等级时提前规划方块位置
### 高级技巧
1. **T-Spin准备**: 虽然经典版无T-Spin,但可预留T型位置
2. **连消规划**: 一次性消除多行获得更高分数
3. **速度适应**: 随着等级提升调整操作节奏
## 🔄 更新日志
### v1.2.0 (2026-04-03)
- ✅ 移动开始/重来按钮到底部控制行
- ✅ 布局优化:开始(左) | 旋转(中) | 重来(右)
- ✅ 方向按钮紧凑排列 (←↓→ 间距5px)
- ✅ 保持动态开始按钮状态 (开始/暂停/继续/重新开始)
- ✅ 保持快速游戏重置功能
### v1.1.0 (2026-04-03)
- ✅ 优化移动端布局:信息面板移到虚拟键盘下方
- ✅ 改进信息面板设计:水平排列 + 大字体显示
- ✅ 增强视觉体验:阴影、边框、间距优化
### v1.0.0 (2026-04-03)
- ✅ 实现经典俄罗斯方块核心规则
- ✅ 添加虚拟控制按钮系统
- ✅ 集成PlayCanvas游戏引擎
- ✅ 添加Poki SDK支持
- ✅ 实现分数和等级系统
- ✅ 优化540×720竖屏显示
- ✅ 添加游戏暂停/继续功能
- ✅ 集成到小游戏中心门户
## 📝 规则参考
详细规则请参考: [经典俄罗斯方块(标准复古版)规则.md](./经典俄罗斯方块(标准复古版)规则.md)
## 🎨 设计说明
### 视觉设计
- **色彩方案**: 每种方块有独特颜色,易于区分
- **网格显示**: 清晰显示10×20游戏场地
- **预览系统**: 显示方块最终下落位置
- **高光阴影**: 方块立体效果增强视觉体验
### 用户体验
- **响应控制**: 虚拟按钮即时反馈
- **状态提示**: 清晰显示游戏状态
- **信息展示**: 实时更新分数和等级
- **错误处理**: 无效操作无响应,避免误操作
## 🔗 相关链接
- [小游戏中心主页](http://129.211.173.87:8895/)
- [PlayCanvas文档](https://developer.playcanvas.com/)
- [Poki SDK文档](https://poki.com/developers)
- [俄罗斯方块维基百科](https://zh.wikipedia.org/wiki/俄罗斯方块)