存储瓷砖地图节点的最佳容器?

时间:2013-08-28 14:04:54

标签: c++ path-finding

我正在编写等距2D场景,我将不得不使用A *寻路。有一个向量来存储所有tile节点更好(每次我请求“West-South相邻节点”计算它并检查它是否存在一些数学),或者我直接用指向9个相邻节点的指针准备所有节点如果它是一个约束,并将它们归零?这个选项有点耗费内存,但值得吗?

一般存储tile map节点的最佳方法是什么,std :: vector,std :: list,custom?

2 个答案:

答案 0 :(得分:2)

使用网格图,An(一维)数组/向量可以完成工作。 计算/检查邻居的“数学”非常简单。

您可以在地图周围添加“假”瓷砖,以简化/优化支票。

因此,对于3x3地图,您可以构建一个5x5地图,边框上有无法通行的图块。

XXXXX
X...X
X...X
X...X
XXXXX

北/南:指数+/- 5

东/西:指数+/- 1

答案 1 :(得分:0)

我建议使用你给每个节点存储9个指针的选项,每个节点都指向一个邻居。除非你有巨大的数量的节点,否则今天的硬件上的内存使用量可以忽略不计,如果你可以轻松地将邻居返回节点,而不是搜索你必须找到每个节点。

简而言之,内存使用量不会 高,并且寻路速度会比其他方案更快。