PathLab 是一个使用 C++23、CMake 与原生 Win32/GDI 开发的桌面工具,可编辑加权网格地图,并动态演示 BFS、Dijkstra 和 A* 的搜索过程。项目重点展示算法实现、桌面交互、文件持久化、性能指标与自动化测试,而不是依赖现成游戏引擎或大型 GUI 框架。
下载 PathLab v1.0.0 Windows x64 便携版 · SHA-256 校验文件 · 查看 Release
下载后解压整个 ZIP,双击 PathfindingVisualizer.exe 即可运行,无需另外安装运行库。压缩包内附带示例地图与使用说明。
在同一张加权地图上,A* 访问 214 个节点,得到长度 41、总代价 41 的路径。启发式搜索显著缩小了搜索范围。
| BFS | Dijkstra |
|---|---|
![]() |
![]() |
| BFS 访问 477 个节点;路径长度为 41,但总代价为 49。 | Dijkstra 访问 473 个节点,得到长度 41、总代价 41 的最低代价路径。 |
截图中的耗时为单次桌面运行结果,会随硬件和系统负载变化;可重复的性能数据请参考 docs/performance-report.md。
- 绘制障碍、平地、森林和水域,分别表达不可通行或不同移动代价。
- 设置起点与终点,支持鼠标连续绘制和右键快速擦除。
- 动态播放 BFS、Dijkstra、A* 的访问节点与最终路径。
- 显示访问节点数、路径长度、路径代价和算法耗时。
- 一键运行三种算法,并在同一指标面板中比较结果。
- 生成随机加权地图,或清空地图重新编辑。
- 使用带版本号的 JSON 格式保存、加载地图。
- 提供 8 项不依赖界面的核心自动化测试。
- 提供固定随机种子的 160×90 网格基准程序,可重复比较三种算法。
| 地形 | 代价 | 说明 |
|---|---|---|
| 平地 | 1 | 默认通行区域 |
| 森林 | 3 | 中等代价区域 |
| 水域 | 6 | 高代价区域 |
| 障碍 | — | 不可通行 |
BFS 寻找最少步数路径;Dijkstra 寻找最低总代价路径;A* 使用曼哈顿距离加速最低代价路径搜索。四方向移动,不允许对角穿越。
- Windows 10/11
- 支持 C++23 的编译器(GCC 14+、Clang 18+ 或 Visual Studio 2022)
- CMake 3.24+
- Ninja(推荐)
在 PowerShell 中执行:
cd PathfindingVisualizer
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build
.\build\PathfindingVisualizer.exe运行自动化测试:
ctest --test-dir build --output-on-failure运行可重复的性能基准:
.\build\pathfinding_benchmark.exe也可以加载仓库内的 samples/weighted-demo.map.json,直接比较不同算法在加权地形上的表现。
如果不熟悉命令行,可以直接双击根目录下的 build-and-run.cmd 完成构建和启动;run-tests.cmd 会构建项目、运行测试并输出性能基准。
| 快捷键 | 操作 |
|---|---|
Space |
运行动画 |
Enter |
单步推进 |
N |
新建空白地图 |
R |
生成随机地图 |
C |
三算法对比 |
Esc |
清除搜索轨迹 |
Ctrl+S |
保存地图 |
Ctrl+O |
加载地图 |
PathfindingVisualizer/
├─ src/core/ # 网格、算法与地图文件逻辑
├─ src/app/ # Win32/GDI 桌面界面
├─ tests/ # 核心自动化测试
├─ samples/ # 可复现的样例地图
├─ docs/ # 架构和算法口径
└─ CMakeLists.txt
更详细的设计说明见 docs/architecture.md,实测数据见 docs/performance-report.md。
项目不联网、不采集用户信息。地图文件仅包含网格尺寸、起终点和地形编码。
本仓库用于个人作品展示与招聘评估。除非另有书面授权,不授予复制、修改、分发或商业使用许可,详见 COPYRIGHT.md。



