我将尝试编程游戏。我的游戏需要运行 A*传统游戏网格上的寻路算法。
例如:(S=Start, G=Goal, X=Wall)
-------------------------------
| | | | | | | | | G| |
-------------------------------
| | | | | | | | | | |
-------------------------------
| | X| X| X| X| | | | | |
-------------------------------
| | | | | X| | | | | |
-------------------------------
| S| | | | | | | | | |
-------------------------------
要实现 A*,我需要能够获得任何节点的“邻居”。 (例如,Start 有 3 个邻居(上方、对角线和右侧)。)
我想到的将其映射到数据层的方法是二维数组或链表。
数组似乎是性能最高且易于实现的。因此,如果 S 是 [0][4],那么它的邻居将是 [0 + 1][4](右),[0][4 - 1](上方),[0 + 1][4 - 1](对角线)
但从事 .NET 应用程序开发已有几年,基本数组对我来说似乎有点老套。
所以在我走那条路之前,我想我会问是否有一个很好的 .NET 集合类型可以用来绘制网格(在数据层,而不是 UI)。
请您参考如下方法:
在这种情况下,数组听起来是正确的选择。请记住,所提供的大多数数据结构都试图提供不同的功能。
鉴于您唯一需要的抽象方法(邻居)是一个快速实现,没有理由使用任何更复杂的东西作为您的基础。
