首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

A*寻路中的启发函数,该如何解决

2012-03-09 
A*寻路中的启发函数看不懂这个启发函数,麻烦哪位能给详细地说一下intGetNextAct()//找到下一个移动方向。{i

A*寻路中的启发函数
看不懂这个启发函数,麻烦哪位能给详细地说一下

int   GetNextAct(   )   //找到下一个移动方向。
{  
int   dis[4];   //按四个方向移动后离目标距离
int   order[4];   //四个方向搜索次序
int   t=32767;
int   tt=2;
for   (int   i=0;i <4;i++)
dis[i]=abs(x+dx[i]-TargetX)+abs(y+dy[i]-TargetY);
for   (i=0;i <4;i++)
if   (dis[i] <t)
{
order[0]=i+1;
t=dis[i];
}
if   (Act[Level]==0)
return   order[0];
order[1]=-1;
for   (i=0;i <4;i++)
if   ((dis[i]==t)&&(i!=(order[0]-1)))
{
order[1]=i+1;
break;
}
if   (order[1]!=-1)
{
for   (i=0;i <4;i++)
if   (dis[i]!=t)
{
order[tt]=i+1;
tt++;
}
}
else
{
for   (i=0;i <4;i++)
if   (dis[i]!=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;
}

[解决办法]
光看代码不容易理解,找本人工智能的书看看,再来看这段代码,估计会好懂些

热点排行