|
|
A* 算法找路径,看了好长时间,还是不知道每句的具体意思,烦哪位能详细解释一下
int GetNextAct( )
{
int dx[4]={0,0,-1,1}; //四种移动方向对x和y坐标的影响
int dy[4]={-1,1,0,0};
int dis[4]; //按四个方向移动后离目标距离
int order[4]; //四个方向搜索次序
int t=32767;
int tt=2;
for (int i=0;i<4;i++)
dis=abs(x+dx-TargetX)+abs(y+dy-TargetY);
//这个是找出和目标点最近的点
for (i=0;i<4;i++)
if (dis<t)
{
order[0]=i+1;
t=dis;
}
//下面开始就看不懂了...
if (Act[Level]==0)
{
return order[0];
}
order[1]=-1;
for (i=0;i<4;i++)
{
if ((dis==t)&&(i!=(order[0]-1)))
{
order[1]=i+1;
break;
}
}
if (order[1]!=-1)
{
for (i=0;i<4;i++)
{
if (dis!=t)
{
order[tt]=i+1;
tt++;
}
}
}
else
{
for (i=0;i<4;i++)
{
if (dis!=t)
{
order[tt-1]=i+1;
tt++;
}
}
}
if (Act[Level]==order[0])
return order[1];
if (Act[Level]==order[1])
return order[2];
if (Act[Level]==order[2])
return order[3];
if (Act[Level]==order[3])
return 5;
} |
|