mirror of
http://junepve.top:3000/chicrobot/CINC.git
synced 2026-10-30 04:21:29 +08:00
129 lines
5.1 KiB
Markdown
129 lines
5.1 KiB
Markdown
# CINC 游戏项目
|
||
|
||
## 项目介绍
|
||
CINC是一个基于Phaser.js开发的2D策略/模拟游戏项目。该项目采用模块化架构设计,实现了单位管理、选择控制、移动命令等核心游戏功能,支持键盘和鼠标操作,以及虚拟摇杆控制。
|
||
|
||
## 功能特性
|
||
- **单位系统**:创建和管理游戏单位,支持单位移动和碰撞检测
|
||
- **选择系统**:支持单选和框选多个单位
|
||
- **命令系统**:处理单位移动命令,支持相对移动和目标点移动
|
||
- **输入系统**:统一处理键盘和鼠标输入
|
||
- **物品系统**:支持物品的创建、拾取、使用和管理,包含网格类型的背包系统
|
||
- **侧边栏UI**:显示游戏信息、角色属性、物品详情和交互提示
|
||
- **响应式设计**:适配不同屏幕尺寸
|
||
- **虚拟摇杆**:支持触摸设备操作
|
||
|
||
## 技术栈
|
||
- **游戏引擎**:Phaser.js
|
||
- **开发语言**:ES6+ JavaScript (模块化)
|
||
- **渲染技术**:HTML5 Canvas
|
||
- **物理系统**:Phaser Arcade Physics
|
||
|
||
## 项目结构
|
||
```
|
||
├── config/ # 游戏配置文件
|
||
│ └── gameConfig.js
|
||
├── data/ # 游戏数据文件
|
||
│ └── items.json # 物品数据定义
|
||
├── index.html # 入口HTML文件
|
||
├── items/ # 物品系统
|
||
│ ├── Inventory.js # 背包系统
|
||
│ ├── Item.js # 物品类
|
||
│ └── ItemManager.js # 物品管理器
|
||
├── main.js # 游戏初始化入口
|
||
├── objects/ # 游戏对象定义
|
||
│ └── Unit.js # 单位类
|
||
├── phaser.min.js # Phaser.js库
|
||
├── scenes/ # 游戏场景
|
||
│ ├── BootScene.js # 启动场景
|
||
│ ├── GameScene.js # 主游戏场景
|
||
│ ├── ItemTestScene.js # 物品系统测试场景
|
||
│ ├── MovementTestScene1.js # 移动测试场景1
|
||
│ ├── MovementTestScene2.js # 移动测试场景2
|
||
│ ├── MovementTestScene3.js # 移动测试场景3
|
||
│ ├── MovementTestScene4.js # 移动测试场景4
|
||
│ ├── MovementTestScene5.js # 移动测试场景5
|
||
│ └── MovementTestScene6.js # 移动测试场景6
|
||
├── systems/ # 游戏系统
|
||
│ ├── CommandSystem.js # 命令处理系统
|
||
│ ├── ControlMode.js # 控制模式管理
|
||
│ ├── InputSystem.js # 输入处理系统
|
||
│ └── SelectionSystem.js # 单位选择系统
|
||
├── ui/ # 用户界面组件
|
||
│ ├── MiniMap.js # 小地图组件
|
||
│ └── VirtualJoystick.js # 虚拟摇杆
|
||
└── utils/ # 工具文件
|
||
```
|
||
|
||
## 运行方法
|
||
1. 使用Python启动本地HTTP服务器:
|
||
```bash
|
||
python -m http.server 8000
|
||
```
|
||
|
||
2. 在浏览器中访问:
|
||
```
|
||
http://localhost:3173
|
||
```
|
||
|
||
## 游戏操作
|
||
### 单位操作
|
||
- **单选单位**:鼠标左键点击单位
|
||
- **框选单位**:按住鼠标左键拖动框选多个单位
|
||
- **移动命令**:点击空地指定移动目标点
|
||
- **键盘控制**:使用WASD或方向键进行相对移动(需先选中单位)
|
||
|
||
### 物品操作
|
||
- **查看物品信息**:鼠标左键点击物品
|
||
- **拾取物品**:点击物品后按E键
|
||
- **快捷使用物品**:点击物品后按Q键
|
||
- **创建随机物品**:按1键
|
||
- **创建食物类物品**:按2键
|
||
- **创建工具类物品**:按3键
|
||
- **清理所有物品**:按4键
|
||
|
||
### 场景导航
|
||
- **返回启动场景**:按空格键
|
||
|
||
### 相机控制
|
||
- **移动视角**:使用WASD或方向键
|
||
- **小地图交互**:点击小地图快速移动视角,拖拽小地图调整视角
|
||
|
||
## 开发说明
|
||
项目采用模块化设计,各系统之间通过事件系统通信,便于扩展和维护。主要系统职责:
|
||
|
||
- **InputSystem**:处理所有输入事件,转换为游戏命令,支持键盘、鼠标和虚拟摇杆输入
|
||
- **SelectionSystem**:管理单位选择状态,支持单选和框选
|
||
- **CommandSystem**:执行具体游戏命令,处理单位移动和交互
|
||
- **ItemManager**:加载和管理物品数据,创建和维护物品实例
|
||
- **Inventory**:背包系统,管理拾取的物品,支持网格类型的背包系统
|
||
- **Unit**:单位对象,处理自身逻辑和渲染
|
||
- **Item**:物品对象,处理物品交互和使用逻辑
|
||
|
||
## 扩展建议
|
||
- **物品系统扩展**:
|
||
- 增强背包系统功能(如物品堆叠、自动整理)
|
||
- 添加物品合成和制作系统
|
||
- 实现物品耐久度和消耗机制
|
||
- 添加更多物品类型和属性
|
||
- **战斗系统**:
|
||
- 实现单位属性系统(生命值、攻击力等)
|
||
- 添加攻击和防御机制
|
||
- 实现战斗动画和特效
|
||
- **地图和关卡系统**:
|
||
- 实现地图生成和加载
|
||
- 添加关卡目标和胜利条件
|
||
- 实现地形和障碍物系统
|
||
- **资源管理系统**:
|
||
- 添加资源采集和生产机制
|
||
- 实现资源存储和消耗系统
|
||
- **UI界面扩展**:
|
||
- 实现背包界面
|
||
- 添加角色属性面板
|
||
- 实现技能和升级系统界面
|
||
- 添加游戏菜单和设置界面
|
||
- **多人游戏**:
|
||
- 实现本地多人游戏
|
||
- 添加网络多人游戏支持
|
||
|
||
# 仓库已支持CICD |