贪吃蛇(智能蛇的一些算法)

本文介绍了贪吃蛇游戏中的BFS(广度优先搜索)算法实现,包括初始化图、计算Bfs路径、获取Bfs路径的方法。通过C语言实现,结合二维数组表示地图,并给出具体代码示例。
摘要由CSDN通过智能技术生成
在网上参考了各大神的代码后,了解了BTS算法:
要实现一定的智能,肯定就要用到相应的寻路算法.我采用的是最简单的宽度优先搜索的方式 (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 1 1 
1 0 0 0 
0 0 0 1
1 1 0 0 

<2----->

a a 1 1 
a 0 0 
0 0 0 1
1 1 0 0 

<3----->

a a 1 1 
1 a a 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步,我们就能从起点搜索到终点了.
然后,头文件:
  1. //Bfs.h  
  2. //贪吃蛇基本寻路算法.  
  3.   
  4. #ifndef BFS_H_H  
  5. #define BFS_H_H  
  6.   
  7. #include <queue>  
  8. using std::queue;  
  9.   
  10. struct XY  
  11. {  
  12.     int x;  
  13.     int y;  
  14. };  
  15.   
  16. class Bfs  
  17. {  
  18. public:  
  19.     void InitBfs(bool **chess,XY size);//初始化图.  
  20.     void CalcBfs(XY st,XY en);//计算Bfs路径.  
  21.     void EetBfs(XY st,XY en);//得到Bfs路径.  
  22.     void CalcQue(XY en);
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值