簡體   English   中英

2D陣列中的尋路

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM