sdl2_version #2
Reference in New Issue
Block a user
Delete Branch "sdl2_version"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
**问题背景** 原项目全部逻辑集中在 main.cpp(1468 行),大量全局变量、4 方向逻辑 复制粘贴 4 遍、场景通过递归函数调用跳转(栈溢出隐患),难以维护扩展。 **重构内容** 文件架构(新增 src/ 目录): - src/Game.h/.cpp — 状态机驱动主循环,Scene 枚举消除递归跳转 - src/AssetManager.h/.cpp — 纹理/字体/BGM 加载与缓存管理 - src/Renderer.h/.cpp — SDL 渲染封装(清屏/纹理/文字/提交) - src/Map.h/.cpp — 地图数据 + 统一碰撞检测 - src/Tank.h/.cpp — 坦克类,dx()/dy() 方向向量消除 4x 复制粘贴 - src/Bullet.h/.cpp — 子弹类,peekAt()/step() 封装移动逻辑 - src/UI.h — 按钮区域常量 + 命中检测 核心改进: - 全局变量清零 → 全部归入 Game 类实例管理 - 场景递归跳转 → Scene 枚举状态机,主循环驱动 - 4 方向复制粘贴 → 方向向量 {dx,dy} 表统一处理 - 修复 EnemiesMove 中循环变量 i 遮蔽 bug - clock() → SDL_GetTicks(),跨平台时间精度 - 清理死代码 map1[50]、旧注释、未使用常量 - data_config.h 精简为纯常量 文件变更: - 新增 7 个源文件(src/下) - 重写 main.cpp(1468 → 6 行入口) - 重写 data_config.h、CMakeLists.txt - 删除 tank.h、bullet.h、map.h、map.cpp(被新架构替代) - 更新 .gitignore(build_Debug/、.hermes/ 等)