我将尝试编写游戏。我的游戏需要在传统游戏网格上运行A*寻路算法。
例如:(S=Start,G=Goal,X=Wall)
-------------------------------
| | | | | | | | | G| |
-------------------------------
| | | | | | | | | | |
-------------------------------
| | X| X| X| X| | | | | |
-------------------------------
| | | | | X| | | | | |
-------------------------------
| S| | | | | | | | | |
-------------------------------
要实现 A*,我需要能够获取任何节点的“邻居”。(例如,Start 有 3 个邻居(Above、Diagonal 和 Right)。)
想到在数据层映射它的方法是二维数组或链表。
该阵列似乎是性能最高且易于实现的。所以如果S
是[0][4]
,那么它的邻居将是[0 + 1][4]
(右),[0][4 - 1]
(上),[0 + 1][4 - 1]
(对角线)
但是在进行了几年的 .NET 应用程序开发之后,基本数组对我来说似乎有点过时了。
所以在我走这条路之前,我想我会问是否有一个很好的 .NET 集合类型可以用来绘制一个网格(在数据层,而不是 UI)。