Skip to content

Repository files navigation

PathLab|C++ 地图编辑与寻路可视化工具

PathLab 项目横幅

PathLab 是一个使用 C++23、CMake 与原生 Win32/GDI 开发的桌面工具,可编辑加权网格地图,并动态演示 BFS、Dijkstra 和 A* 的搜索过程。项目重点展示算法实现、桌面交互、文件持久化、性能指标与自动化测试,而不是依赖现成游戏引擎或大型 GUI 框架。

下载体验

下载 PathLab v1.0.0 Windows x64 便携版 · SHA-256 校验文件 · 查看 Release

下载后解压整个 ZIP,双击 PathfindingVisualizer.exe 即可运行,无需另外安装运行库。压缩包内附带示例地图与使用说明。

运行效果

A*:更少的搜索节点

PathLab A* 寻路结果

在同一张加权地图上,A* 访问 214 个节点,得到长度 41、总代价 41 的路径。启发式搜索显著缩小了搜索范围。

BFS Dijkstra
PathLab BFS 寻路结果 PathLab 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

About

使用 C++23、CMake 与原生 Win32/GDI 开发的地图编辑与寻路算法可视化工具,支持 BFS、Dijkstra、A*、加权地形、性能对比和地图持久化。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages