4 个版本
0.1.3 | 2023 年 3 月 11 日 |
---|---|
0.1.2 | 2022 年 7 月 16 日 |
0.1.1 | 2022 年 7 月 9 日 |
0.1.0 | 2022 年 7 月 9 日 |
#10 在 #a-star 中
12KB
243 行
结构体 A*
这是一个基于结构体的 A* 算法的基本实现。如果你已经有了包含移动(可以是游戏、动画或其他能够确定可能路径的结构体),这将非常有用。
实现
- 在结构体上实现 PathGenerator trait;
- 调用 AStar::run(from_struct: Box<&T: PathGenerator>, start: (usize, usize), target: (Option, Option)) -> Option<Vec<(usize, usize)>>
注意
预期的结构体应该能够使用 2D 位置参数(x, y)工作,这些参数应该是数字。PathGenerator 将需要实现
- generate_paths -> 用于从位置生成可能路径的逻辑(在这里可以包括障碍物和额外的逻辑);
- calculate_cost -> 用于推导从位置到下一个位置的转移成本的逻辑;
- calculate_heuristic_cost -> 用于推导到目标的相关成本的逻辑;
AStar::run 接受一个目标,该目标可以包含 x 和 y(或到达的确切点)或仅包含一个(x 或 y),达到地图的一侧。
AStar::run 返回一个从目标到起始点的位置向量的 Option,如果没有路径可用,则返回 None。
- 这是我在一个项目中使用的一个实现,但可能对其他人也有用,所以我决定分享它。