不过,这样一来显然会遇到在选定的方向已经生成了房间的情况:
这时有两种方法。
一种是枚举出所有情况。但由于周围存在其它房间的情况一共有16种——
无房间相邻:1种;
1个房间相邻:4种;
2个房间相邻:6种;
3个房间相邻:4种;
4个房间相邻:1种。
这样显然非常繁琐。于是出现了第二种方法:在选定方向后判断一次该方向是否存在房间,如果存在则生成失败,重新尝试一次生成;如果不存在,那么就生成房间。这种方法一定程度上牺牲了效率,但是在可接受范围内。
这样一直进行下去,直到碰到边缘。碰到边缘后,直接将最后一个房间设置为终点。我们会发现,终点房间必定只会连接到单独的一个房间(想想是为什么!)。


看上去我们已经解决了问题的第一部分——