上一次我们生成了一个随机迷宫,这次我们就用DFS算法来进行自动寻路吧!
首先我们在上一次迷宫随机算法的基础上创建一个角色,使用这个角色来走迷宫,并完成一些初始化设置:
我们看到这里有四个列表:stack,seen,parent和解法路径。DFS使用到的是先进后出的栈,我们用stack列表来存储。seen列表则用来存储已访问的节点,0表示未访问,1表示已访问;parent列表用来存储每个节点的父节点,将这两个列表的每一项填充上0。最后,使用解法路径列表存储解出的路径。
接着设定初始位置,并将初始位置放入stack:
然后取stack的最后一个节点,将seen列表对应编号项标记为已访问,之后删除这个stack节点,最后将这个节点上下左右的节点入栈(如果这个节点不是墙,而且seen列表中的对应项没有标记为1):
这是将上下左右节点入栈的具体实现。首先确保该节点不是墙,然后确保该节点没有被访问过,如果这两个条件都满足,将把这个节点加入stack列表,然后将该节点的parent列表对应位置设置为父节点的编号: