# 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界面扩展**: - 实现背包界面 - 添加角色属性面板 - 实现技能和升级系统界面 - 添加游戏菜单和设置界面 - **多人游戏**: - 实现本地多人游戏 - 添加网络多人游戏支持