2013-08-25 98 views
1

我知道这是一个被问及很多问题。我也坚持这一点,并寻求一些帮助。在2D阵列中寻路

我确实有一个小应用程序,怪物应该在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])xpos/ypos是数组内的pos。

如果您需要更多关于它的信息,请让我知道。

回答

4

我建议使用A *,它使用简单的启发式方法为您提供从a到b的路径。作为一个网格,你可以使用x,y坐标,这很容易实现A *。所以,我的建议做的是阅读这些2,

http://wiki.gamegardens.com/Path_Finding_Tutorial

http://www.cokeandcode.com/main/tutorials/path-finding/

这应该向你解释A * works.The第一篇文章是如何结构良好,你一定要全读,并尝试了解在尝试实现该算法之前。它也会给你提供解决障碍的建议,比如你的案例中的树木

第二个很棒,因为A *算法实现的很好,并且有解释所有的注释。这有点过于复杂,可以用2-3班而不是显示的数量完成,但它肯定会让你知道一切如何运作

+0

+1,对于这些信息,在某种程度上它帮助了我,尽管我的投票将在几个小时内完成。我的限制已经过去了一天:( –

+0

谢谢,如果你需要更多的帮助,让我知道 – Luka

+0

谢谢。我确实实施了一个Astar,它的工作preaty好。让我们希望它不花费太多的计算时间。 – BennX