我实际上不确定“迷宫”是否是正确的术语。基本上,用户从一个Room
具有4个门(N,S,E和W)的单个门开始。它们可以向任何方向移动,每个后续房间都包含另一个房间,该房间的其他任何地方都具有1至4个门口。
“迷宫”的大小应该是无限的,并且随着房间的移动而增长。Rooms
可用数量有限,但是可用数量是动态的并且可以更改。
我的问题是,我不确定这种模式的最佳数据结构
我最初想到的只是使用[X] [X] Room
对象数组,但我真的宁愿避免这样做,因为该对象应该沿任何方向生长,并且只应构建“已访问”的房间。
另一个想法是让每个Room
类包含Room
N,S,E和W的4个链接属性,并且仅链接到前一个Room
,但是问题是我不知道如何识别用户是否进入了一个有一个相邻的房间已经“建造”
例如,
------------- | | | | 开始5 4 | | | | ---- ------------- --- --- | | | | | | | 1 2 3 | | | | | | ---------------
如果用户从“开始”>“ 1”>“ 2”>“ 3”>“ 4”>“ 5”移动,则Room
#5需要知道W包含起始房间,S是房间#2,在这种情况下不可用,N可以是新的Room
或一堵墙(一无所有)。
也许我需要混合使用阵列和链接的房间,或者也许我只是看错了方向。
是否有更好的方法为这种“迷宫”构建数据结构?还是我在目前的思维过程中步入正轨,而只是缺少一些信息?
(如果您有兴趣,该项目是一个与Munchkin Quest非常相似的游戏)