游戏中的 寻路算法(A*算法)源码

附件:
您所在的用户组无法下载或查看附件 var tabel1=new Array();//已访问的点
var tabel2=new Array();//路线
var tabel3=new Array();//临时路线
var point={x:-1,y:-1};
function _axing(res)
{
tabel1=new Array();//已访问的点
tabel2=new Array();//路线
tabel3=new Array();//临时路线
var rv=res.value;
var curlu=new Array();
if(rv.x!=-1 && rv.y!=-1)
{
curlu=new Array();
point={x:rv.x,y:rv.y};
tabel1.push(point);
curlu.push(point);
tabel2.push(curlu);
int pianlizhi=10;
int p=0;
var isfind=0;
/////////////////////////////////////////////
point={x:tox,y:toy};
if(cannotpoint(point))
return;
while(isfind==0 && p<pianlizhi)
{
p++;
tabel3=new Array();
for(var i=0;i<tabel2.length && isfind==0;i++)
{
for(var j=0;j<4 && isfind==0;j++)
{
lu=tabel2
.slice();
if(j==0)
point={x:lu[lu.length-1].x-1,y:lu[lu.length-1].y}
else if(j==1)
point={x:lu[lu.length-1].x,y:lu[lu.length-1].y-1}
else if(j==2)
point={x:lu[lu.length-1].x+1,y:lu[lu.length-1].y}
else if(j==3)
point={x:lu[lu.length-1].x,y:lu[lu.length-1].y+1}
if(!cannotpoint(point))
{
tabel1.push(point);
if(point.x!=tox || point.y!=toy)
{
lu.push(point);
tabel3.push(lu);
}
else
{
isfind=1;
curlu=lu;
break;
}
}
}
}
tabel2=tabel3;
}
alert(isfind);
}
}
function cannotpoint(point)
{
if(point.x<0 || point.y<0 || point.x>width || point.y>height)
return true;
for(var i=0;i<tabel1.length;i++)
{
if(tabel1.x==point.x && tabel1.y==point.y)
return true;
}
return false;
}