2.0.3 • Published 2 years ago

a-star-map v2.0.3

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

a-star-map

A* 寻路

demo

demo
index.html 是寻路的 demo
使用 pubsub-js 做了寻路节点的可视化

安装

npm

npm install a-star-mapyarn add a-star-map

    import * as AStar from 'a-star-map'

    const map = new AStar.Map([
        [1,3,1],
        [1,5,1],
        [4,2,1]
    ])
    const route = AStar.find(map.map, [0, 0], [2,2])

browser script 引入

script 引入使用 dist 文件夹下的 index.js

<script src='./dist/index.js'></script>
<script>
    var map = new window.AStar.Map([
        [1,3,1],
        [1,5,1],
        [4,2,1]
    ])
    const route = AStar.find(map.map, [0, 0], [2,2])
</script>

创建地图

Astar.Map 地图类

创建地图

    const map = new AStar.Map([
        [1,3,1],
        [1,5,1],
        [4,2,1]
    ])

类型

RouteNode 8叉树节点 见 dist/Node.d.ts
Astar.Mapdist/index.d.ts

属性

map.map 地图 存储 RouteNode 的二维数组

方法

setNode

map.setNode(y: number, x: number, data: Partial<Pick<RouteNode, "cost" | "diagonal">>): void;
更新节点的花费与斜边通行属性
参数:
y (纵坐标) number 必须
x (横坐标) number 必须
cost (花费) number 可选
diagonal (允许斜边通行) boolean 可选

on

map.on(name:string ,(data:any)=>void):void
监听事件

un

map.un(name:string ,(data:any)=>void):void
解绑事件

emit

map.emit(name:string ,data:any):void
触发事件,但是没有什么情况是需要从外部触发map事件的
可以把它当作一个发布订阅来触发自定义事件

事件

事件回调 data 的数据类型 data:number,number

onPutOpenlist

当节点被放入openlist后触发的事件

onPutCloselist

当节点被放入closelist后触发的事件

onRoute

从终点到起点依次触发的路径事件

更新地图

默认地图格子允许斜边通行

// 使0,0格子不可行走
map.setNode(0,0,{cost:Infinity})

// 使0,0格子花费为5 并允许斜边通行
map.setNode(0,0,{cost:5,diagonal:true})

寻路

// 创建地图...
const route = AStar.find(map.map, [0, 0], [2,2])
2.0.3

2 years ago

2.0.2

2 years ago

2.0.1

2 years ago

2.0.0

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago

0.0.1

2 years ago