# Gluttonous Snake **Repository Path**: GDGeekzhangqing/gluttonous-snake ## Basic Information - **Project Name**: Gluttonous Snake - **Description**: No description available - **Primary Language**: TypeScript - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-04 - **Last Updated**: 2025-12-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Gluttonous Snake(贪吃蛇) 一款基于 Cocos Creator 开发的现代化贪吃蛇游戏,支持玩家控制和智能 AI 对战。 ## ✨ 特性 ### 核心功能 - 🎮 **玩家控制**:使用摇杆控制蛇的移动 - 🤖 **智能 AI**:使用 GOAP(目标导向动作规划)+ 模糊逻辑的 AI 蛇 - 🍎 **食物系统**:动态生成食物,支持多食物点同时存在 - ⚔️ **战斗系统**:蛇与蛇之间的碰撞检测和战斗机制 - 🔊 **音效系统**:吃食物和死亡的音效反馈 ### 技术亮点 - 🧠 **GOAP AI 系统**:基于目标导向的动作规划算法 - 🎯 **模糊逻辑**:用于 AI 状态评估和决策 - 🛡️ **RVO 避障**:使用 Reciprocal Velocity Obstacles 算法实现智能避障 - 🏗️ **依赖注入**:模块化的服务架构,易于扩展 - 📡 **事件总线**:松耦合的事件驱动架构 - 🏭 **工厂模式**:灵活的游戏服务创建机制 ## 📋 系统要求 - Cocos Creator 3.8.6 或更高版本 - Node.js 14+ (用于运行测试) ## 🚀 快速开始 ### 安装 1. 克隆仓库 ```bash git clone cd gluttonous-snake ``` 2. 安装依赖 ```bash cd client npm install ``` ### 运行 1. 使用 Cocos Creator 打开 `client` 目录 2. 打开场景 `assets/GameView.scene` 3. 点击运行按钮开始游戏 ### 测试 ```bash cd client npm test # 运行所有测试 npm run test:watch # 监听模式运行测试 npm run test:coverage # 生成测试覆盖率报告 ``` ## 📁 项目结构 ``` client/ ├── assets/ │ ├── scripts/ │ │ ├── AI/ # AI 系统 │ │ │ ├── GOAP/ # GOAP 规划器 │ │ │ ├── FuzzyLogic/ # 模糊逻辑系统 │ │ │ └── SnakeAI/ # 蛇 AI 的具体实现 │ │ ├── RVO/ # RVO 避障系统 │ │ ├── services/ # 游戏服务层 │ │ ├── di/ # 依赖注入容器 │ │ ├── GameApp.ts # 游戏入口 │ │ ├── GameView.ts # UI 视图管理 │ │ ├── Snake.ts # 玩家蛇 │ │ ├── AISnake.ts # AI 蛇 │ │ └── ... │ └── res/ # 游戏资源 └── tests/ # 测试文件 ``` ## 🎯 游戏玩法 1. **开始游戏**:点击开始按钮进入游戏 2. **控制蛇**:使用摇杆控制蛇的移动方向 3. **吃食物**:吃到食物后蛇会变长,得分增加 4. **避免碰撞**:不要撞到边界、自己的身体或其他蛇 5. **击败对手**:当其他蛇撞到你时,你会获得它们的分数 ## 🏗️ 架构设计 ### 核心架构 项目采用**服务化架构**和**依赖注入**模式,主要组件包括: - **GameApp**:游戏入口,负责初始化和服务注册 - **SnakeBase**:玩家蛇和 AI 蛇的公共基类 - **SnakeGameService**:核心游戏逻辑服务 - **CombatService**:战斗和 RVO 系统管理 - **FoodManagerService**:食物生成和管理 ### AI 系统 AI 蛇使用以下技术栈: 1. **GOAP(Goal-Oriented Action Planning)** - 定义多个目标(追逐食物、躲避敌人、躲避墙壁等) - 使用 A* 算法规划最优动作序列 - 动态调整计划以适应环境变化 2. **模糊逻辑(Fuzzy Logic)** - 评估环境状态的模糊性(如"接近敌人"、"食物距离适中") - 提供更自然的 AI 行为 3. **RVO 避障** - 实时计算最佳避障路径 - 避免与多个移动对象同时碰撞 ### 服务层 - `IInputService`:输入服务接口(玩家摇杆、AI 输入) - `ISnakeGameService`:游戏逻辑服务 - `ISoundService`:音效服务 - `IFoodManagerService`:食物管理服务 - `ICombatService`:战斗服务 ## 🛠️ 开发指南 ### 添加新的 AI 行为 1. 在 `AI/SnakeAI/` 目录下创建新的 Action 或 Goal 2. 在 `GoapAiInputService` 中注册新的动作和目标 3. 调整模糊逻辑评估器以支持新的行为 ### 添加新的游戏服务 1. 定义服务接口 2. 在 `GameService.init()` 中注册服务 3. 通过依赖注入容器获取服务实例 ### 自定义游戏配置 修改 `SnakeGameConfig` 接口以添加新的配置项,然后在初始化时传入配置。 ## 📝 代码规范 - 使用 TypeScript 严格模式 - 遵循 Cocos Creator 组件化开发规范 - 使用 JSDoc 注释关键函数和类 - 保持服务层与视图层分离 ## 🤝 贡献指南 1. Fork 本仓库 2. 创建功能分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 开启 Pull Request ## 📄 许可证 本项目使用 [木兰宽松许可证,第2版](LICENSE) (Mulan PSL v2) 许可。 ## 🙏 致谢 感谢所有为这个项目做出贡献的开发者! --- 如有问题或建议,欢迎提交 Issue 或 Pull Request。