A-STAR最短路徑計(jì)算
A-STAR 尋找一種靜態(tài)路網(wǎng)(本算法中為二維數(shù)組)中求解最短路徑的解決辦法
我們可以通過: var element = new Element();
來創(chuàng)建二維數(shù)組的一個(gè)節(jié)點(diǎn)。
element自身包含了一些方法:
element.setStatus(2);//設(shè)置節(jié)點(diǎn)的狀態(tài),當(dāng)status>0,則該區(qū)域不可通過。
element.getX();//獲取節(jié)點(diǎn)在二維數(shù)組的橫座標(biāo)。
element.getY();//獲取節(jié)點(diǎn)在二維數(shù)組的縱座標(biāo)。
element.atLeft(target);//判斷element是否在target的左邊。
其他方法見: element.js
下面我們初始化一個(gè)靜態(tài)路網(wǎng)(二維數(shù)組)。
var row = col =20;
var elements = createElements(row, col, {
afterCreate : function() {
if (Math.random() * 10 > 9) {
this.setStatus(3); //設(shè)置一些節(jié)點(diǎn)的狀態(tài)為3,即死節(jié)點(diǎn)
}
}
});
這樣elements就是我們的靜態(tài)路網(wǎng)。 createElements詳見:createElements.js
獲取兩個(gè)節(jié)點(diǎn)之間的最短距離,startEl->endEl.
var startEl = elements[1][1],endEl = elements[17][19];//假設(shè)這兩個(gè)都是空節(jié)點(diǎn)
var pathArray = getPath(startEl,endEl)[endEl];
pathArray則為startEl到endEl之間的有效節(jié)點(diǎn)數(shù)組。
評論
圖片
表情
