js版本A*寻路算法
2006-12-22 00:00
911 查看
说到做游戏,必不可少的需要用到寻路算法,一般游戏里的寻路算法大多数都以A*算法为主,这里也就实现了js里采用a*寻路的程序,在51js和蓝色都开了帖。
程序是以前写的,后来也没有修正或者精简,有冗余之处大家还见谅一下。
当然,这个寻路算法也不是最优化的,像幻宇开发的“交点寻径法”也是个中精品,两者可谓各有千秋,只是如果地图很大的情况下,我们会惊讶于“交点寻径法”的迅速。
use A* to find path...
/*
written by 百晓生
email:jsrpg@126.com
qq:156809986
msn:jscript_rpg@hotmail.com
*/
var closelist=new Array(),openlist=new Array();
var gw=10,gh=10,gwh=14;
var p_start=new Array(2),p_end=new Array(2);
var s_path,n_path="";
var num,bg,flag=0;
var w=32,h=32;
function GetRound(pos){
var a=new Array();
a[0]=(pos[0]+1)+","+(pos[1]-1);
a[1]=(pos[0]+1)+","+pos[1];
a[2]=(pos[0]+1)+","+(pos[1]+1);
a[3]=pos[0]+","+(pos[1]+1);
a[4]=(pos[0]-1)+","+(pos[1]+1);
a[5]=(pos[0]-1)+","+pos[1];
a[6]=(pos[0]-1)+","+(pos[1]-1);
a[7]=pos[0]+","+(pos[1]-1);
return a;
}
function GetF(arr){
var t,G,H,F;
for(var i=0;is_path[3][0]){
if(arr[1]>s_path[3][1]){
if(IsPass((arr[0]-1)+","+arr[1])||IsPass(arr[0]+","+(arr[1]-1)))
return false;
}
else if(arr[1]
程序是以前写的,后来也没有修正或者精简,有冗余之处大家还见谅一下。
当然,这个寻路算法也不是最优化的,像幻宇开发的“交点寻径法”也是个中精品,两者可谓各有千秋,只是如果地图很大的情况下,我们会惊讶于“交点寻径法”的迅速。
use A* to find path...
/*
written by 百晓生
email:jsrpg@126.com
qq:156809986
msn:jscript_rpg@hotmail.com
*/
var closelist=new Array(),openlist=new Array();
var gw=10,gh=10,gwh=14;
var p_start=new Array(2),p_end=new Array(2);
var s_path,n_path="";
var num,bg,flag=0;
var w=32,h=32;
function GetRound(pos){
var a=new Array();
a[0]=(pos[0]+1)+","+(pos[1]-1);
a[1]=(pos[0]+1)+","+pos[1];
a[2]=(pos[0]+1)+","+(pos[1]+1);
a[3]=pos[0]+","+(pos[1]+1);
a[4]=(pos[0]-1)+","+(pos[1]+1);
a[5]=(pos[0]-1)+","+pos[1];
a[6]=(pos[0]-1)+","+(pos[1]-1);
a[7]=pos[0]+","+(pos[1]-1);
return a;
}
function GetF(arr){
var t,G,H,F;
for(var i=0;is_path[3][0]){
if(arr[1]>s_path[3][1]){
if(IsPass((arr[0]-1)+","+arr[1])||IsPass(arr[0]+","+(arr[1]-1)))
return false;
}
else if(arr[1]
相关文章推荐
- 用js重建星际争霸
- Javascript开发包大全整理
- 使用Modello编写JavaScript类
- 用Javascript实现UTF8编码转换成gb2312编码
- 添加到收藏夹的Javascript脚本 for ie,firefox
- 一些常用的Javascript函数
- Javascript实现的分页函数
- 用javascript获取地址栏参数
- JavaScript事件列表解说
- JavaScript中Array 对象相关的几个方法
- Javascript直接定义对象实例[
- JavaScript使用prototype定义对象类型(转)[
- 枚举JavaScript对象的函数
- 在Javascript中定义对象类别
- 用JavaScript限制textarea输入长度 (For: IE、Firefox ...)[
- 犀利的 JavaScript
- JS实现根据用户行为延时提交
- 第一个:_Config.js
- firefox下的javascript编写注意
- jsp的实训=玩游戏(推魔兽)