代表迷宫的数据结构

Mah*_*pta 11 maze data-structures

我正在编写一个动态迷宫游戏,每次迷宫的结构都会改变(有些门会关闭,有些门会打开.有些像HP4中的Triwazard).任何人都可以建议我哪种数据结构最适合代表这个?

DVK*_*DVK 12

迷宫是矩形网格吗?别的什么?

它还取决于地图中将包含多少有用信息(通道或对象).

如果它是一个矩形网格,大多数网格方块将包含SOMETHING,一个好的数据结构是一个2D数组(数组数组),数组的每个元素代表1行,内部数组的每个元素代表该行中的1个单元格,这是一个包含与该单元有关的数据的对象(可以移动相邻单元格,单元格包含什么,其上是否有字符).

但是,如果迷宫不是矩形,或者如果大迷宫中的大多数单元实际上不包含任何有用的(例如,是不可通过的块),则良好的数据结构是图形.

图的每个顶点都是可通过的单元格.边缘表示可以在两者之间移动的单元格对(如果某些门只是单向的,则可以使其成为有向图).每个顶点/单元格都是一个包含该单元格信息的对象(例如,它在要绘制的物理迷宫中的位置等).

数组数组结构的好处在于它非常容易绘制它,并且相当直接地处理(任何移动只是在索引中/ de-crement).添加/删除墙就像更改2个相邻单元的数组元素中的数据一样简单.

图形结构的好处是,如果迷宫通过非常稀疏(例如只有1/100的场通过),它占用的空间要少得多; 它是唯一可以表示随机(例如非矩形网格)几何的结构,并且处理相当简单.添加/删除墙很容易,因为它只是为图形添加边.