基本信息
源码名称:javascript实现astar算法和demo
源码大小:4.96KB
文件格式:.zip
开发语言:js
更新时间:2019-07-20
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):78630559
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
用javascript做的astar寻路算法和demo,用起来很方便
用javascript做的astar寻路算法和demo,用起来很方便
<html>
<script type="text/javascript" src="js/node.js"></script>
<script type="text/javascript" src="js/astar.js"></script>
<script type="text/javascript" src="js/map.js"></script>
<script type="text/javascript" src="js/tile.js"></script>
<body>
<div id="select" align="center">
Start:<select id="sels"></select><br/><br/>
End:<select id="sele"></select><br/><br/>
<input type="button" value="search" onclick="buttonClick()"/>
</div>
<div id="tiles"></div>
<div id="path"></div>
</body>
<script type="text/javascript">
var screenWidth=document.body.clientWidth;
var screenHeight=document.body.clientHeight;
var tileDiv=document.getElementById("tiles");
var pathDiv=document.getElementById("path");
var tileImg="img/brick.gif";
var pathImg="img/brick_pass.gif";
var pathList=new Array();
var sels=document.getElementById("sels");
var sele=document.getElementById("sele");
initSel();
initTiles(screenWidth,screenHeight,map);
if(!window.ActiveXObject)
drawTiles(tileDiv,tileImg);
initMap();
setInterval("drawPath()",500);
function initSel() {
var html="";
for(i=0;i<map.length;i ) {
for(j=0;j<map[0].length;j ) {
if(map[i][j]==0) {
var pv=map[0].length*i j;
var options = document.createElement("option");
options.value=pv;
options.innerHTML="(" j "," i ")";
sels.appendChild(options);
var optione = document.createElement("option");
optione.value=pv;
optione.innerHTML="(" j "," i ")";
sele.appendChild(optione);
}
}
}
}
function selToNode(sel) {
var j=sel%map[0].length;
var i=parseInt(sel/map[0].length);
var node=new Node(i,j,null);
return node;
}
function buttonClick() {
pathDiv.innerHTML="";
var start=selToNode(sels.options[sels.selectedIndex].value);
var end=selToNode(sele.options[sele.selectedIndex].value);
var pathfind=new Astar(map);
pathList=pathfind.searchList(start,end);
}
function drawPath() {
var left=screenWidth/2-(map[0].length/2)*TILE_WIDTH;
var top=screenHeight/2-(map.length/2)*TILE_HEIGHT;
var sx=left TILE_WIDTH/2;
var sy=top TILE_HEIGHT/2;
if(pathList.length>0) {
var node=pathList[0];
var tile=new Tile(
sx node.getY()*TILE_WIDTH,sy node.getX()*TILE_HEIGHT);
tile.draw(pathDiv,pathImg);
pathList.splice(pathList[0],1);
}
}
</script>
</html>