我正在编写一个动态迷宫游戏,每次迷宫结构改变后(有些门会关闭,有些门会打开。有些像HP4中的Triwazard)。谁能告诉我哪种数据结构最适合代表这个呢?
答案 0 :(得分:11)
迷宫是矩形网格吗?还有别的吗?
它还取决于地图中将包含多少有用信息(传递或对象)。
如果是矩形网格并且大多数网格方块将包含SOMETHING,则良好的数据结构是2D数组(数组数组),数组的每个元素代表1行,内部数组的每个元素代表1个单元格该行,它是一个包含与该单元格相关的数据的对象(可以移动相邻单元格,单元格包含什么,其上是否有字符)。
然而,如果迷宫不是矩形,或者如果大迷宫中的大多数单元实际上不包含任何有用的(例如,是不可通过的块),则良好的数据结构是图形。 / p>
图表的每个顶点都是可通过的单元格。边缘表示可以在其间移动的单元格对(如果某些门仅为单向,则可以使其成为有向图形)。每个顶点/单元格都是一个包含该单元格信息的对象(例如,它在要绘制的物理迷宫中的位置等)。
数组数组结构的好处在于它非常容易绘制它,并且相当直接地处理(任何移动只是在索引中/ de-crement)。添加/删除墙就像更改2个相邻单元的数组元素中的数据一样简单。
图形结构的好处是,如果迷宫通过非常稀疏(例如只有1/100的场通过),它占用的空间要少得多;它是唯一可以表示随机(例如非矩形网格)几何结构的结构,并且处理相当简单。 添加/删除墙很容易,因为它只是为图形添加边缘。