迷宫算法的核心思想是对自己当前的位置的前后左右进行判断,判断是否为通路,如果是通路就可以朝对应的方向走,而走到下一步也是进行相同的判断,但对于前后左右均不通的话,那就得往回走(这里我们将走过的路进行标记,防止在判断的时候与未走过的混淆影响判断)
对于迷宫地图,我们可以给出一个二维数组,当中的每一个元素代表二维数组中的每一个位置,1----通路,0---障碍物,2----已走过的路,3----已走过并判断出是死路的路径
首先,我们得给出表示当前位置的方法,构建一个结构体:
struct Pos
{
Pos(int Row,int Col)//Row---行,Col---列
:_Row(Row)
,_Col(Col)
{}
int _Row;
int _Col;
};
对于迷宫地图,我们可以给出一个文件来专门保存,而因此我们也需要通过文件操作来读取迷宫地图的相关信息:当前关卡,当前地图的行列数,当前地图的入口
所以我们要进行如下读取文件操作:
int ReadLevel(FILE*& fp) //读取当前关卡
{
char str;
size_t num=0;
while((str=fgetc(fp))!='L');
while((str=fgetc(fp))!='\n')
{
num=(str-'0')+num*10;
}
cout<<"the "<<num<<endl;
return num;
}
int ReadRow(FILE*& fp) //读取当前地图的行数
{
char str;
while((str=fgetc(fp)!='R'));
int num=0;
while((str=fgetc(fp))!='\n')
{
num=(str-'0')+num*10;
}
return num;
}
int ReadCol(FILE*& fp) //读取当前地图的列数
{
char str;
while((str=fgetc(fp)!='C'));
int num=0;
while((str=fgetc(fp))!='\n')
{
nu