Skip to content

Latest commit

 

History

History
45 lines (34 loc) · 1.47 KB

architecture.md

File metadata and controls

45 lines (34 loc) · 1.47 KB

架构说明

PathLab 将算法核心与 Windows 桌面界面分离,保证核心逻辑可独立测试。

Win32/GDI 桌面界面
  ├─ 地图画布与地形工具
  ├─ 搜索动画与指标面板
  └─ 文件选择与交互事件
              │
              ▼
pathfinding_core 静态库
  ├─ Grid:网格、地形、起终点与邻接关系
  ├─ Pathfinder:BFS、Dijkstra、A*
  └─ MapIO:版本化 JSON 地图保存/加载
              │
              ▼
自动化测试与样例地图

算法口径

  • BFS 以步数为优先级,不考虑地形权重,适合作为无权图基线。
  • Dijkstra 使用进入目标格子的地形代价,保证非负权图上的最低代价路径。
  • A* 使用曼哈顿距离作为启发函数。最小地形代价为 1,因此该启发函数可采纳,结果与 Dijkstra 的最优代价一致。
  • 四方向移动,不允许对角穿越。

数据结构

  • 网格采用一维连续 std::vector<Terrain>,坐标通过 y * width + x 映射。
  • BFS 使用 std::queue。
  • Dijkstra 与 A* 使用 std::priority_queue。
  • 前驱数组用于回溯最终路径,访问顺序单独保留供动画播放。

地图格式

地图以带版本号的 JSON 文档保存。每个字符代表一种地形:

  • .:平地,代价 1
  • F:森林,代价 3
  • W:水域,代价 6
  • #:障碍,不可通行

加载时会校验版本、尺寸、行数、行宽、地形代码以及起终点坐标。