{"id":50982889,"url":"https://github.com/galaxywk223/tank-battle","last_synced_at":"2026-06-19T16:05:05.252Z","repository":{"id":364035760,"uuid":"1254805990","full_name":"galaxywk223/tank-battle","owner":"galaxywk223","description":"基于 C++20 与 SDL2 的坦克大战游戏课程设计，包含关卡、敌人 AI、道具、碰撞检测、基地保护和排行榜。","archived":false,"fork":false,"pushed_at":"2026-06-11T10:21:15.000Z","size":35,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-11T12:11:58.470Z","etag":null,"topics":["cmake","coursework","cpp","desktop-game","game-development","sdl2","student-project","tank-battle"],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/galaxywk223.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-31T02:57:10.000Z","updated_at":"2026-06-11T10:21:20.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/galaxywk223/tank-battle","commit_stats":null,"previous_names":["galaxywk223/tank-battle"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/galaxywk223/tank-battle","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/galaxywk223%2Ftank-battle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/galaxywk223%2Ftank-battle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/galaxywk223%2Ftank-battle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/galaxywk223%2Ftank-battle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/galaxywk223","download_url":"https://codeload.github.com/galaxywk223/tank-battle/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/galaxywk223%2Ftank-battle/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34538480,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-19T02:00:06.005Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cmake","coursework","cpp","desktop-game","game-development","sdl2","student-project","tank-battle"],"created_at":"2026-06-19T16:05:03.105Z","updated_at":"2026-06-19T16:05:05.244Z","avatar_url":"https://github.com/galaxywk223.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# C++ 坦克大战游戏\n\n坦克大战是基于 C++20 与 SDL2 从零实现的 2D 坦克射击游戏课程设计。游戏包含主菜单、难度选择、关卡推进、敌人 AI、碰撞检测、道具系统、基地保护、排行榜和可分发运行目录。\n\n## 功能特性\n\n- 玩家坦克：支持方向键或 WASD 移动，空格发射子弹。\n- 敌人类型：普通、快速、装甲、射手和 Boss。\n- 敌人 AI：巡逻、追踪玩家、障碍规避和直线射击。\n- 碰撞系统：子弹与墙体、子弹与坦克、坦克与坦克、坦克与墙体碰撞。\n- 地图系统：砖墙、钢墙、水域、森林和基地。\n- 道具系统：生命、加速、护盾、快速射击和全屏炸弹。\n- 关卡流程：5 个递进难度关卡。\n- 游戏流程：主菜单 -\u003e 难度选择 -\u003e 游戏中 -\u003e 关卡完成 -\u003e 胜利或失败。\n- HUD：分数、生命、关卡、剩余敌人、道具状态和 FPS。\n- 排行榜：记录前 10 名分数、难度和到达关卡。\n- 稳定性：缺少地图或数据目录时自动生成所需文件。\n- 便携运行：运行路径按可执行文件位置解析，便于打包分发。\n\n## 构建要求\n\n- CMake 3.20+\n- 支持 C++20 的编译器：MSVC 2022+、GCC 11+ 或 Clang 14+\n- Git\n- SDL2 由 CMake FetchContent 自动下载，无需手动安装\n\n## 构建方式\n\n```bash\ncd tank-battle\nmkdir build\ncd build\ncmake .. -G \"Visual Studio 18 2026\" -A x64\ncmake --build . --config Release\n```\n\nLinux 或 macOS 可使用默认生成器：\n\n```bash\ncmake ..\ncmake --build . --config Release\n```\n\n## 运行方式\n\n```bash\ncd build/Release\n./TankBattle.exe\n```\n\nLinux 或 macOS：\n\n```bash\n./TankBattle\n```\n\n地图和数据目录会在缺失时自动创建。排行榜默认保存到 `data/leaderboard.txt`。\n\n## 分发目录\n\n```text\nTankBattle/\n├── TankBattle.exe\n├── SDL2.dll\n├── maps/\n│   ├── level1.txt\n│   ├── level2.txt\n│   ├── level3.txt\n│   ├── level4.txt\n│   └── level5.txt\n└── data/\n```\n\n分发流程：\n\n1. 构建 Release 版本。\n2. 将 `TankBattle.exe` 和 `SDL2.dll` 放入同一目录。\n3. 将 `maps/` 目录复制到可执行文件旁边。\n4. 首次运行时自动创建 `data/` 目录。\n5. 将目录打包为压缩包。\n\n## 操作方式\n\n| 按键 | 操作 |\n| --- | --- |\n| W / 方向上 | 向上移动 |\n| S / 方向下 | 向下移动 |\n| A / 方向左 | 向左移动 |\n| D / 方向右 | 向右移动 |\n| 空格 | 发射子弹 |\n| P / Escape | 暂停或继续 |\n| R | 暂停或失败时重开关卡 |\n| Q | 暂停时返回菜单 |\n| Enter | 确认选择或进入下一关 |\n| Up / Down | 菜单导航 |\n\n## 敌人类型\n\n| 类型 | 颜色 | 生命值 | 速度 | 分数 | 说明 |\n| --- | --- | --- | --- | --- | --- |\n| Basic | 红色 | 1 | 普通 | 100 | 标准敌人 |\n| Fast | 橙色 | 1 | 快 | 150 | 移动更快 |\n| Armored | 灰色 | 3 | 慢 | 200 | 需要多次命中 |\n| Shooter | 紫色 | 1 | 慢 | 250 | 射击频率更高 |\n| Boss | 亮红色 | 6 | 慢 | 500 | 第 3 关后出现 |\n\n## 道具\n\n| 符号 | 效果 | 持续时间 |\n| --- | --- | --- |\n| `+` | 恢复 2 点生命 | 立即生效 |\n| `S` | 1.5 倍移动速度 | 10 秒 |\n| `D` | 无敌护盾 | 10 秒 |\n| `R` | 2.5 倍射击频率 | 10 秒 |\n| `B` | 消灭所有敌人 | 立即生效 |\n\n## 地图格式\n\n地图文件为 26 x 26 网格的空格分隔整数文本：\n\n| 值 | 含义 |\n| --- | --- |\n| `0` | 空地 |\n| `1` | 砖墙，子弹可摧毁 |\n| `2` | 钢墙，不可摧毁 |\n| `3` | 水域，阻挡移动，子弹可穿过 |\n| `4` | 森林，可通过并遮挡坦克 |\n| `5` | 基地，被摧毁后损失生命 |\n\n## 许可证\n\n本项目基于 [MIT License](./LICENSE) 开源。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgalaxywk223%2Ftank-battle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgalaxywk223%2Ftank-battle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgalaxywk223%2Ftank-battle/lists"}