# ColorBlock 消消乐游戏 - 整体说明书
## 一、游戏架构概述
### 1.1 场景流程
```
Main.ts (入口)
↓
Load.ts (加载场景初始化)
↓
GameManager.ts (游戏管理器 - 预加载资源)
↓
JiaZai.ts (主页场景 - 主菜单)
↓
Map.ts + Block.ts (游戏场景 - 核心玩法)
↓
GameOver.ts (结算场景)
```
### 1.2 核心模块划分
| 模块 | 说明 |
|------|------|
| **核心游戏** | 游戏主逻辑、场景管理、地图控制、方块控制 |
| **道具系统** | 各种特殊方块(钥匙、炸弹、冻结等) |
| **UI系统** | 界面控制、弹窗管理、设置面板 |
| **工具模块** | 音频管理、网络请求、数据存储 |
| **SDK模块** | 微信小游戏SDK、分享、支付 |
---
## 二、核心类说明
### 2.1 入口与初始化
| 文件 | 类名 | 功能说明 |
|------|------|----------|
| **Main.ts** | Main | 游戏入口,加载 LoadScene 场景 |
| **Load.ts** | NewClass | 加载场景初始化,配置碰撞系统、微信参数 |
| **GameManager.ts** | GameManager | 游戏总管理器,单例模式,负责游戏初始化、资源预加载、微信配置 |
### 2.2 主页场景
| 文件 | 类名 | 功能说明 |
|------|------|----------|
| **JiaZai.ts** | JiaZai | 主页场景控制器(HomeScene),负责:
- UI管理(关卡、金币、体力显示)
- 商店、月卡、每日任务
- 通行证系统
- 排行榜功能
- 分享奖励
- 新手引导 |
### 2.3 游戏核心
| 文件 | 类名 | 功能说明 |
|------|------|----------|
| **Map.ts** | MapConroler | 地图控制器,核心游戏逻辑:
- 地图生成与渲染
- 方块生成与布局
- 门控制(颜色门、星星门、锁门)
- 特殊效果(冰冻、锤子、魔法棒)
- 胜负判定 |
| **Block.ts** | Block | 方块组件,控制所有方块行为:
- 22种方块类型(普通、钥匙、锁、冻结、炸弹、粘合等)
- 7种颜色
- 移动、消除逻辑
- 碰撞检测 |
| **SceneManager.ts** | SceneManager | 游戏场景管理器(GameScene),负责:
- 道具使用(锤子、魔法棒、冰冻)
- 弹窗管理(商店、奖励、月卡)
- 复活逻辑 |
### 2.4 道具系统 (prop文件夹)
| 文件 | 道具名 | 功能说明 |
|------|--------|----------|
| **Key.ts** | 钥匙块 | 用来打开锁块 |
| **Lock.ts** | 锁块 | 被锁锁住,需要钥匙消除 |
| **Boom.ts** | 炸弹块 | 炸毁周围方块 |
| **Freeze.ts** | 冻结块 | 冻住一定步数 |
| **Star.ts** | 星星块 | 打开星星门 |
| **Adhesive.ts** | 粘合块 | 与其他方块粘合移动 |
| **Question.ts** | 问号块 | 随机效果 |
| **AddTime.ts** | 加时间块 | 增加游戏时间 |
| **Floor.ts** | 地板块 | 可移动的地板 |
| **Switchs.ts** | 开关块 | 控制开关逻辑 |
### 2.5 UI界面
| 文件 | 类名 | 功能说明 |
|------|------|----------|
| **GameOver.ts** | NewClass | 游戏结算界面,显示分数、通关率、排行榜 |
| **Pause.ts** | - | 暂停界面(已注释) |
| **Reward.ts** | - | 奖励界面 |
| **Revive.ts** | - | 复活界面 |
| **Barrier.ts** | - | 障碍物界面 |
| **Window.ts** | - | 通用弹窗 |
| **gameOverUi.ts** | - | 游戏结束UI |
### 2.6 工具模块 (module文件夹)
#### 配置与数据
| 文件 | 功能说明 |
|------|----------|
| **GameConfig.ts** | 游戏配置中心,存储GM_INFO等全局数据 |
| **GameTool.ts** | 工具类,提供登录认证、埋点上传、排行榜、存储等 |
#### 音频与音乐
| 文件 | 功能说明 |
|------|----------|
| **AudioManager.ts** | 音频管理器,单例模式,管理所有游戏音效和背景音乐 |
#### 存储与网络
| 文件 | 功能说明 |
|------|----------|
| **Storage.ts** | 本地存储,封装localStorage操作 |
| **HttpUtil.ts** | 网络请求工具,封装加密HTTP请求 |
#### 支付与道具
| 文件 | 功能说明 |
|------|----------|
| **Utils.ts** | 支付工具,处理月卡、通行证、订单等 |
#### 其他工具
| 文件 | 功能说明 |
|------|----------|
| **Notification.ts** | 事件通知系统 |
| **NodePoolMgr.ts** | 对象池管理器 |
| **GetPosition.ts** | 地理位置获取 |
| **RankManager.ts** | 排行榜管理 |
| **List.ts** | 列表组件 |
| **scrollviewList.ts** | 滚动列表 |
### 2.7 SDK模块 (Sdk文件夹)
| 文件 | 功能说明 |
|------|----------|
| **MiniGameSdk.ts** | 微信小游戏SDK封装 |
| **MiniGameManager.ts** | 小游戏管理器 |
### 2.8 物理与碰撞系统
| 文件 | 功能说明 |
|------|----------|
| **lq_collide_system/** | 自定义碰撞检测系统 |
| **CollisionDetection.ts** | 碰撞检测工具 |
---
## 三、游戏核心玩法
### 3.1 方块类型 (Block.ts)
| 类型 | 说明 |
|------|------|
| 普通块 | 最基础的方块,可以移动并消除在对应颜色的门上 |
| 叠加块上/下 | 叠加方块的上下两部分 |
| 钥匙块 | 带有钥匙功能的方块,用来打开对应的锁 |
| 上锁块 | 被锁锁住的方块,需要对应钥匙才能消除 |
| 冻结块 | 带有冰冻效果的方块,会冻住一定步数 |
| 星星块 | 带有星星的方块,用来打开星星门 |
| 炸弹块 | 带有炸弹的方块,可以炸毁周围方块 |
| 水平块 | 只能在水平方向移动的方块 |
| 垂直块 | 只能在垂直方向移动的方块 |
| 粘合块 | 会与其他方块粘合在一起移动的方块 |
| 障碍块 | 障碍物,无法消除 |
| 问号块 | 随机效果的方块 |
| 变色块 | 颜色会变化的方块 |
| 加时间块 | 增加游戏时间的方块 |
| 可移动地板块 | 可以在地图上移动的地板块 |
| 三连粘合块 | 会与三个方向粘合的方块 |
### 3.2 颜色系统
| 颜色 | 说明 |
|------|------|
| 紫色 | 对应紫色门 |
| 黄色 | 对应黄色门 |
| 绿色 | 对应绿色门 |
| 蓝色 | 对应蓝色门 |
| 粉色 | 对应粉色门 |
| 橘黄色 | 对应橘黄色门 |
| 青色 | 对应青色门 |
### 3.3 门类型 (Map.ts)
| 门类型 | 消除条件 |
|--------|----------|
| 颜色门 | 对应颜色的方块可以消除 |
| 星星门 | 需要星星块消除 |
| 锁门 | 需要钥匙块消除 |
| 冰冻门 | 冻结块可以冻住 |
### 3.4 道具系统
| 道具 | 功能 |
|------|------|
| 锤子 | 消除单个方块 |
| 魔法棒 | 改变方块颜色 |
| 冰冻 | 暂停方块移动 |
---
## 四、数据结构
### 4.1 GM_INFO 主要属性
```typescript
{
level: number, // 当前关卡
coin: number, // 金币
hp: number, // 体力值
hp_Max: number, // 体力上限
score: number, // 分数
openid: string, // 微信openid
userId: number, // 用户ID
userPowerTime: number, // 无限体力到期时间
playerPassLevel: number, // 通行证等级
passCheckActivate: boolean, // 通行证是否激活
gameId: number, // 游戏ID
scode: string, // 渠道码
matchId: string, // 比赛ID
successList: boolean[], // 成功列表
}
```
### 4.2 关卡数据结构
```typescript
{
id: string, // 关卡ID
map: number[], // 地图数据
risefall: {...}, // 升降台配置
gap: {...} // 鸿沟配置
}
```
### 4.3 方块数据结构
```typescript
{
type: BlockType, // 方块类型
color: BlockColor, // 方块颜色
pos: cc.Vec2, // 位置坐标
special: number, // 特殊属性
}
```
---
## 五、场景说明
| 场景名 | 控制器 | 功能 |
|--------|--------|------|
| **LoadScene** | Load.ts | 加载场景,初始化微信参数 |
| **HomeScene** | JiaZai.ts | 主菜单,显示关卡、金币、商店、任务等 |
| **GameScene** | Map.ts + SceneManager.ts | 游戏主场景,核心玩法 |
| **GameOver** | GameOver.ts | 结算场景 |
---
## 六、系统功能说明
### 6.1 体力系统
- 玩家拥有体力值,每进行一关游戏消耗体力
- 体力会随时间恢复(每5分钟恢复1点)
- 可以通过月卡获得无限体力
- 体力不足时显示恢复倒计时
### 6.2 月卡系统
- 购买月卡后享受每日奖励
- 月卡期间体力上限提升
- 月卡到期后自动恢复默认体力上限
### 6.3 通行证系统(PassCheck)
- 通过积累进度提升通行证等级
- 通行证达到特定等级可获得奖励
- 需要购买通行证才能获得奖励
### 6.4 每日任务
- 每日有分享任务
- 完成分享任务可获得奖励
- 任务进度每日重置
### 6.5 排行榜系统
- 显示好友排行榜
- 按关卡等级排序
- 支持显示玩家省份信息
### 6.6 分享系统
- 分享到群聊邀请好友
- 好友通过分享链接进入游戏
- 分享成功可获得奖励
---
## 七、文件目录结构
```
assets/Script/
├── Sdk/ # SDK模块
│ ├── MiniGameSdk.ts # 微信小游戏SDK
│ └── MiniGameManager.ts # 小游戏管理器
├── lq_base/ # 基础模块
│ ├── data/ # 数据定义
│ └── util/ # 工具函数
├── lq_collide_system/ # 碰撞系统
├── module/ # 功能模块
│ ├── Config/GameConfig.ts # 游戏配置
│ ├── Crypto/HttpUtil.ts # 加密网络请求
│ ├── Music/AudioManager.ts # 音频管理
│ ├── Pay/Utils.ts # 支付工具
│ ├── Position/GetPosition.ts # 位置获取
│ ├── RankList/ # 排行榜
│ ├── Storage/Storage.ts # 本地存储
│ └── Tool/GameTool.ts # 游戏工具
├── prop/ # 道具系统
│ ├── Key.ts # 钥匙
│ ├── Lock.ts # 锁
│ ├── Boom.ts # 炸弹
│ ├── Freeze.ts # 冻结
│ ├── Star.ts # 星星
│ ├── Adhesive.ts # 粘合
│ └── Question.ts # 问号
├── Avatar.ts # 头像组件
├── Barrier.ts # 障碍物
├── Block.ts # 方块组件
├── CollisionDetection.ts # 碰撞检测
├── ControlManager.ts # 控制管理
├── GameManager.ts # 游戏管理器
├── GameOver.ts # 游戏结束
├── ItemGuide.ts # 道具引导
├── JiaZai.ts # 主页场景
├── Load.ts # 加载场景
├── Main.ts # 游戏入口
├── Map.ts # 地图控制
├── MapBlock.ts # 地图方块
├── Message.ts # 消息
├── MessageContent.ts # 消息内容
├── NewMode.ts # 新模式
├── NumberToImage.ts # 数字转图片
├── Pause.ts # 暂停
├── RedeemCode.ts # 兑换码
├── Reduce.ts # 减少
├── Revive.ts # 复活
├── Reward.ts # 奖励
├── RippleShrink.ts # 涟漪收缩
├── SceneManager.ts # 场景管理
├── Uid.ts # 用户ID
├── Wall.ts # 墙壁
├── Window.ts # 窗口
├── btnControl.ts # 按钮控制
├── gameOverUi.ts # 游戏结束UI
├── heathnum.ts # 体力数字
├── monthlyCard.ts # 月卡
├── peizhi.ts # 配置
├── position.ts # 位置
└── ranking.ts # 排行榜
```
---
## 八、技术栈
| 技术 | 说明 |
|------|------|
| **引擎** | Cocos Creator |
| **语言** | TypeScript |
| **平台** | 微信小游戏、字节跳动小游戏 |
| **网络** | HTTPS + 加密传输 |
| **存储** | localStorage + 微信云存储 |
---
## 九、游戏流程图
```
┌─────────────────────────────────────────────────────┐
│ Main.ts │
│ 游戏入口加载 │
└─────────────────────┬───────────────────────────────┘
│
┌─────────────────────▼───────────────────────────────┐
│ Load.ts │
│ 加载场景-初始化配置 │
└─────────────────────┬───────────────────────────────┘
│
┌─────────────────────▼───────────────────────────────┐
│ GameManager.ts │
│ 游戏管理器-预加载资源、微信配置 │
└─────────────────────┬───────────────────────────────┘
│
┌─────────────────────▼───────────────────────────────┐
│ JiaZai.ts (HomeScene) │
│ 主页-关卡选择/商店/任务/排行榜/通行证/分享 │
└─────────────────────┬───────────────────────────────┘
│
┌─────────────────────▼───────────────────────────────┐
│ Map.ts + Block.ts (GameScene) │
│ 游戏核心-地图/方块/道具/胜负判定 │
└─────────────────────┬───────────────────────────────┘
│
┌─────────────────────▼───────────────────────────────┐
│ GameOver.ts │
│ 结算-分数/排行榜/奖励 │
└─────────────────────────────────────────────────────┘
```
---
## 十、总结
这是一款基于 **Cocos Creator** 开发的**微信消消乐小游戏**,核心玩法是通过移动方块来消除对应颜色的门。游戏包含完整的商业化系统:
- **体力系统**:控制游戏节奏
- **商店系统**:售卖虚拟商品
- **月卡系统**:提供订阅价值
- **通行证系统**:提供成长目标
- **每日任务**:提高用户粘性
- **排行榜系统**:促进社交互动
- **分享系统**:裂变获客
游戏设计精巧,代码结构清晰,是一款成熟的三消类小游戏产品。