[英]pathfinding in an 2D Array
我知道這是一個被問到很多的問題。 我也堅持下去並尋求一些幫助。
我確實有一個小應用程序,怪物應該在Charakter工作。 它的Gridbased所以它可以向左上行走。 我有一個數組,其中地圖的所有阻塞區域。 我需要得到的只是到達角色的下一步(左上方)。 例如,如果他們在樹周圍走動會很棒。 (數組內部的簡單-1)
有沒有任何簡單的解決方案或我需要實現A *(我試過但我完全堅持這個)
我只是盯着這個:
@Override
public Status getNextMove(int posX, int posY) {
if (checkIfAggroRange(posX, posY)) {
if (checkIfBeside(posX, posY))
//turn to the character
return getIdleStatus(posX, posY);
else
//here id like to add the algo and get the value
} else {
return moveRnd();
}
}
private boolean checkIfAggroRange(int posX, int posY) {
return Math.abs(this.screen.character.mapPos.x - posX) <= range
&& Math.abs(this.screen.character.mapPos.y - posY) <= range;
}
private boolean checkIfBeside(int posX, int posY) {
return (Math.abs(this.screen.character.mapPos.x - posX) <= 1 && Math
.abs(this.screen.character.mapPos.y - posY) <= 1);
}
當它們在怪物的范圍內時它已經開始了仇恨,並且還將怪物變成了角色,因此它可以擊中角色。
我通過screen.map.maparray
(int[xsize][ysize])
screen.map.maparray
(int[xsize][ysize])
來screen.map.maparray
地圖。 xpos/ypos
是數組中的pos。
如果您需要更多信息,請告訴我。
我建議使用A *,它使用簡單的啟發式方法為您提供從a到b的路徑。 作為一個網格你可以使用x,y坐標,然后很容易實現A *。 所以我建議做的就是閱讀這些2,
http://wiki.gamegardens.com/Path_Finding_Tutorial
http://www.cokeandcode.com/main/tutorials/path-finding/
這應該向你解釋A *是如何工作的。第一篇文章結構合理,在嘗試實現算法之前,你應該完全閱讀並嘗試理解。 它還將為您提供解決諸如樹木等障礙的想法
第二個很好,因為實現的A *算法做得很好並且有解釋所有這些的評論。 這有點過於復雜,只需要2-3個課程而不是顯示的數量,但它肯定會讓你知道一切是如何工作的
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.