读书人

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

发布时间: 2012-03-09 21:42:54 作者: rapoo

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;
}

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

读书人网 >C++

热点推荐