switch(d){
case 0 : //left derect
nj = cj-1;
break;
case 1 : //up derect
ni = ci-1;
break;
case 2 : //right derect
nj = cj+1;
break;
case 3 : //down derect
ni = ci+1;
break;
}//end_switch
if(isok(ni,nj)){
n1 = ni*MAZE_COL+nj;
fn1 = abs(Ei-ni)+abs(Ej-nj)+gn1;
pos = gmap.find(n1);
if(pos!=gmap.end()){//n1 is old
if(pos->second->fn > fn1){
pos->second->fn = fn1;
pos->second->gn = gn1;
if(pos->second->flag==2){
it = find(close.begin(),close.end(),n1);
close.erase(it);
open.push_back(n1);
}
sort(open.begin(),open.end(),opensort );
}
}
else{//
pgf = new GFN;
pgf->gn = gn1;
pgf->fn = fn1;
pgf->flag = 1;
gmap[n1] = pgf;
open.push_back(n1);
sort(open.begin(),open.end(),opensort );
}//end_else
}//end_if
}//end_for
}//end_while
cout<<"没有路径可以到达出口!\n\n\n"<<endl;
return 1;
}
bool isok(int i,int j) //判断n1位置为迷宫中可以走的位置
{
if( i>=0 && i<=MAZE_ROW && j>=0 && j<=MAZE_COL && maze[i][j]==' ')
return true;
return false;
}