在
但是我们要做的是会自动寻路的贪吃蛇,所以本次就实现一个简单的"智能贪吃蛇"
要实现一定的智能,肯定就要用到相应的寻路算法.我采用的是最简单的 宽度优先搜索的方式 (BFS算法)
所以在具体的实现游戏之前,我们先来看一下BFS算法.
该算法在中有详细解说,并给出了可行的伪代码,本系列的博文的重点不在于此,所以只是简单一说,然后给出代码.
下面就给出一个例子来说明该算法的寻路过程
(说明:我们将路径抽象化为一个二维数组,在二维数组中,我们用0表示未探索过的通路,用a表示探索过的通路,用1表示不通)
具体到例子,比如说下面一个地图
0 0 1 1
1 0 0 0
0 0 0 1
1 1 0 0
假设起始点为(0,0),终止点为(3,3),即从左下角到右下角..
我们通过观察法得,最短的路径为:
(0,0)->(0,1)->(1,1)->(2,1)->(2,2)->(3,2)->(3,3)
下面我们就通过
Bfs
将该路径求出来
,Bfs
算法寻路过程如下所示(标蓝的字母是当前步骤搜索的节点):
<0----->
a
0 1 1
1 0 0 0
0 0 0 1
1 1 0 0
<1----->
a
a
1 1
1 0 0 0
0 0 0 1
1 1 0 0
<2----->
a a 1 1
1
a
0 0
0 0 0 1
1 1 0 0
<3----->
a a 1 1
1 a
a
0
0
a
0 1
1 1 0 0
<4----->
a a 1 1
1 a a a
a
a a
1
1 1 0 0
<5----->
a a 1 1
1 a a a
a a a 1
1 1 a
0
<6----->
a a 1 1
1 a a a
a a a 1
1 1 a a
这样,经过7步,我们就能从起点搜索到终点了.
这样只是找到了终点,那么最短路径是怎样求出来的呢?
下面我们就通过代码来逐步实现一个Bfs寻路算法,并把该算法应用到可爱的贪吃蛇中