浅谈DFS算法
DFS,深度搜索算法。可以用于NPC的自动寻路。当然 BFS和 A*可能较优。
过程解析:寻路算法动画演示
主要的思路是通过For循环遍历全部可能的方向,在遍历的同时使用递归持续监测该坐标及邻居是否能走得通。(个人解读)
分析一下:
1、使用For循环——将某点(以(1,1)为例),寻找出上下左右四个方向的邻居(即(0,1) (2,1) (1,0) (1,2)四点)。
2、对周围4点进行判断——是否能通,即 A、是否为墙
或 B、是否出界
如果能通——对该坐标进行标记,并将(1,1)作为该点的父节点,然后执行下一步
如果不通——放弃递归(记住此步骤,后面会提到)
,直接执行下一步
3、如果能通,便以该点为中心继续进行第二点,判断四周是否能通。(开始递归)
而此时第三步开始递归,并遍历所有可能的情况
直到某一个邻居与终点坐标相等,返回路径链表(第二步储存了父节点)
寻找邻居的代码:
private static List<Node> getNeighbor(Node currentNode)
{
List<Node> nodes = new List<Node>(); //初始化变量
int x = currentNode.X;
int y = currentNode.Y