Skip to content

Latest commit

 

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Algorithm Defense: Complexity War

《算法防线:复杂度战争》是一款以 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 或更高版本

1. 启动前端

cd frontend
npm install
npm run dev

浏览器访问:http://localhost:5173

如果只想体验本地关卡,启动前端即可。

2. 启动后端(可选)

在另一个终端中运行:

cd backend
python -m venv venv

Windows PowerShell:

.\venv\Scripts\Activate.ps1
pip install -r requirements.txt
python manage.py migrate
python manage.py runserver

macOS / 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/

后端 API

方法 路径 说明
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/                   # 游戏设计与开发路线

设计方向

项目当前重点是验证以下核心体验:

  1. 敌人代表输入数据、Bug 或性能压力。
  2. 塔代表算法、数据结构或 C++ 工程手段。
  3. 地图代表程序执行路径。
  4. 玩家可以通过重构改变后续运行压力。
  5. 战后复盘能解释为什么成功或失败,以及对应的知识点。

更多设计背景见:

当前状态

项目仍处于开发和玩法验证阶段,配置以本地开发为主,尚未按生产环境部署要求进行安全加固。

About

自强vibecoding

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages