《算法防线:复杂度战争》是一款以 C++、数据结构和算法复杂度 为主题的浏览器塔防游戏。
玩家需要在程序执行路径旁部署“算法塔”和“编程词条”,抵御输入数据、异常状态与性能压力。游戏将线性扫描、哈希索引、控制流、引用、断言等概念转化为可观察、可操作的战斗机制,并通过波次间重构和战后复盘解释策略背后的编程知识。
- 代码路径塔防:地图由输入、循环、处理、索引和输出等语义节点组成。
- 14 个关卡:包含教学关与挑战关,逐步引入 C++ 和算法概念。
- 塔与词条组合:通过基础塔、功能塔和修饰词条构建防线。
- 复杂度与运行压力:除了守住核心,还需要控制 Complexity 与 Runtime 指标。
- 波次间重构:根据代码瓶颈选择优化方案,让后续战斗体现复杂度变化。
- 战后复盘:以 AC、TLE 等程序判定语言解释失败原因和改进方向。
- 剧情与百科:通过角色对话和知识卡连接游戏机制与真实编程概念。
- 可选 Django 后端:提供关卡配置、排行榜和战斗评价 API;后端不可用时,前端关卡仍可使用本地数据运行。
- JavaScript ES Modules
- HTML5 Canvas 2D
- Vite 6
- 无前端运行时框架
- Python
- Django 5.2
- Django REST Framework
- SQLite
- django-cors-headers
- Node.js 18 或更高版本
- npm
- Python 3.10 或更高版本
cd frontend
npm install
npm run dev浏览器访问:http://localhost:5173
如果只想体验本地关卡,启动前端即可。
在另一个终端中运行:
cd backend
python -m venv venvWindows PowerShell:
.\venv\Scripts\Activate.ps1
pip install -r requirements.txt
python manage.py migrate
python manage.py runservermacOS / Linux:
source venv/bin/activate
pip install -r requirements.txt
python manage.py migrate
python manage.py runserver后端默认运行于 http://localhost:8000,前端会访问 http://localhost:8000/api/v1。
cd frontend
npm run build
npm run preview构建结果输出到 frontend/dist/。
| 方法 | 路径 | 说明 |
|---|---|---|
GET |
/api/v1/levels/<level_id>/ |
获取关卡配置 |
GET |
/api/v1/leaderboard/ |
获取排行榜,可使用 level_id 查询参数过滤 |
POST |
/api/v1/leaderboard/submit/ |
提交玩家成绩 |
POST |
/api/v1/battle/review/ |
获取战斗评价 |
.
├── frontend/
│ ├── index.html # 游戏页面、HUD 与覆盖层
│ └── src/
│ ├── core/ # 游戏循环、渲染、输入和路径
│ ├── data/ # 关卡、章节、剧情和数值数据
│ ├── entities/ # 敌人、塔、投射物和词条
│ ├── systems/ # 波次、复杂度、计分和升级系统
│ ├── ui/ # 战前准备、对话、百科等界面
│ └── utils/ # 常量、API 与通用工具
├── backend/
│ ├── complexity_war/ # Django 项目配置
│ └── game/ # 关卡、排行榜和战斗评价 API
└── docs/ # 游戏设计与开发路线
项目当前重点是验证以下核心体验:
- 敌人代表输入数据、Bug 或性能压力。
- 塔代表算法、数据结构或 C++ 工程手段。
- 地图代表程序执行路径。
- 玩家可以通过重构改变后续运行压力。
- 战后复盘能解释为什么成功或失败,以及对应的知识点。
更多设计背景见:
项目仍处于开发和玩法验证阶段,配置以本地开发为主,尚未按生产环境部署要求进行安全加固。