# team_Software_Engineering_project
软件工程小组github
拥抱变化,极速交付!
- 产品负责人(PO):井千惠(9109223082)
- Scrum Master(SM):姚长钶(9109223141)
- 开发团队(Dev Team):罗嘉乐(9109223129)
更新项目README文件,补充系统架构图、本地开发环境搭建步骤、核心业务模块职责说明,确保新成员仅凭该README即可完成环境搭建和代码理解,更新后的README完整内容如下:
本项目是一款基于C++开发的宝可梦文字冒险(MUD)游戏引擎,实现了地图探索、野生精灵遭遇、回合制战斗、队伍管理等核心功能。项目经过多轮重构,采用模块化设计,逐步提升代码可维护性,支持多人协作开发和后续功能扩展。
项目采用模块化设计,核心分为5个核心控制模块,各模块职责清晰、边界明确,通过接口调用实现协同工作,整体架构如下: 【系统架构图占位:此处插入模块关系图,核心模块及关系如下】
- 核心调度层:Game类 → 负责统筹所有模块,实现主循环、命令分发、模块协同;
- 业务模块层:Map(地图)、Battle(战斗)、TeamView(队伍管理) → 封装各自核心业务逻辑;
- 数据层:Player(玩家)、Pokemon(精灵) → 存储核心数据,提供数据操作接口。
- Game类依赖Map、Battle、TeamView模块,通过调用各模块接口实现游戏流程调度;
- Battle、TeamView模块依赖Player模块,通过Player提供的接口操作玩家数据(队伍、道具等);
- Map模块独立负责地图数据管理和移动逻辑,不直接依赖其他业务模块,仅通过接口向Game类返回移动结果和遭遇判定。
- 操作系统:Windows 10及以上(当前代码暂依赖Windows平台,后续将逐步支持跨平台);
- 开发工具:Visual Studio 2022(推荐)或其他支持C++11及以上标准的编译器;
- 依赖工具:Git(代码版本控制)、CMake(项目构建)。
- 编译失败:检查Visual Studio是否安装“使用C++的桌面开发”组件,确保CMake配置正确,代码无语法错误;
- 运行时乱码:代码已配置Windows控制台编码,若仍出现乱码,重启Visual Studio或重新生成解决方案;
- 测试无法运行:确保单元测试项目PokemonTestsNative已正确生成,且测试方法无语法错误。
项目核心分为5个控制模块,各模块职责清晰,具体说明如下:
- Game类(核心调度模块) 核心职责:游戏主循环管理、顶层命令解析与分发、各模块协同调度,是整个游戏引擎的入口和核心枢纽。
- 启动游戏,初始化各模块(Map、Player等);
- 解析玩家输入的命令(移动、战斗、队伍查看等),分发至对应模块处理;
- 触发地图移动、野生精灵遭遇,启动战斗流程;
- 维护游戏整体运行状态,确保各模块协同工作。
- Map类(地图模块) 核心职责:地图数据管理、玩家移动逻辑、野生精灵遭遇判定,封装所有与地图相关的功能。
- 存储地图数据(各地点信息、可移动方向、野生精灵列表等);
- 提供Map::tryMove()方法,判定玩家移动合法性,更新玩家当前位置;
- 提供Map::shouldEncounter()方法,按概率判定是否触发野生精灵遭遇;
- 展示当前位置信息、可移动方向等。
- Battle类(战斗模块) 核心职责:回合制战斗流程控制、伤害计算、精灵捕捉、逃跑判定等,封装所有战斗相关逻辑。
- 启动战斗,初始化战斗双方(玩家精灵、野生精灵)状态;
- 通过Battle::run()方法管理战斗主循环,交替执行玩家回合与敌方回合;
- 提供Battle::calculateDamage()方法,计算攻击伤害(含属性克制、本系加成);
- 处理精灵捕捉、逃跑、治疗、精灵更换等操作,判定战斗结束条件。
- TeamView类(队伍管理模块) 核心职责:玩家队伍、仓库、背包的交互管理,提供后勤操作功能。
- 展示玩家队伍精灵、仓库精灵、背包物品信息;
- 处理精灵排序、精灵存入/取出仓库等操作;
- 提供物品使用功能,为精灵恢复HP等状态;
- 接收玩家操作命令,更新玩家队伍和背包数据。
- Player类(玩家数据模块) 核心职责:存储玩家核心数据,提供数据操作接口,为其他模块提供数据支撑。
- 存储玩家队伍(team)、仓库(storage)、精灵球(pokeballs)、物品(items)等核心数据;
- 提供数据操作接口(如获取精灵球数量、扣减精灵球、使用物品等),供Battle、TeamView等模块调用;
- 维护玩家基本状态,确保数据的一致性和安全性(后续将进一步加强封装)。
- 分支管理:遵循GitFlow规范,所有开发工作在feature/*分支进行,PR提交前需反向同步主干,完成冲突预解决;
- 代码规范:统一使用4空格缩进,核心函数需添加注释,避免冗余代码;
- 测试规范:新增功能需补充单元测试,确保测试覆盖核心逻辑,提交代码前需通过本地测试。
- 改进可测试性:分离I/O与业务逻辑,补充更多单元测试,提升测试覆盖率;
- 提升可移植性:消除Windows平台依赖,实现跨平台编译和运行;
- 加强代码封装:优化Player类封装,禁止外部模块直接访问核心数据;
- 扩展功能:新增NPC交互、任务系统、存档读档等功能,丰富游戏玩法。