正在写一个A*路径搜索用于工兵扫雷
把可以放棋子的位置看成是AstarNode
public class AstarNode implements Comparable{
  public float getCost(AStarNode node){
   }
  public float getEstimatedCost(AStarNode node){
  }
  public  List getNeighbors(){//得到节点的邻节点
  }
}怎么加入它们的邻节点呢?怎么实现getNeighbors()希望有这方面经验的高手给予指点

解决方案 »

  1.   

    写一个addNeighbors(AStarNode node)的方法public class AstarNode implements Comparable{
      private ArrayList<AstarNode> neighborList = new ArrayList<AstarNode>();
      public float getCost(AStarNode node){
       }
      public float getEstimatedCost(AStarNode node){
      }
      public  ArrayList<AstarNode> getNeighbors(){//得到节点的邻节点
         return this.neighborList;
      }
      addNeighbors(AstarNode node) {
        this.neighborList.add(node);
      }
    }
      

  2.   

    忘记加上 public voidpublic void addNeighbors(AstarNode node) {
        this.neighborList.add(node);
    }
      

  3.   

    先谢谢了,不过我是说具体用在四国(军旗)上,比如说:工兵在某个位置上,那么我要在这个位置上调用getNeighbors(),得到该位置所有邻接点!getNeighbors()这个算法具体怎么实现呢?总要判定那个节点是否是邻接点.就是这个判定很难写!我先说下我的想法吧:我先写了个public class SapperSearch,这个类负责主类传递过来的工兵的位置和下一步将要走到的位置.然后通过此类把这两点包装成startNode和endNode节点.在这个类中我还定义了29个AstarNode,这些节点都是铁路的交点!
    public List getNeighbors(){
               while(!SapperSearch.list.contains(new AstarNode(this.point.i))){
             this.point.i++;
             ······
          }
    我打算通过向上、向下、向左、向右查看所生成节点是否是属于我定义过节点,是的话就加入到列表中,根据这种方式来加入邻节点!但是,为来查看是否包含,我必须重写equals()和hashCode()这两个方法!这有点复杂化了!
    有没有更好地、有效地方法?
    是否可以用BSP Tree来完成getNeighbors()呢?盼望高手给予指点!!!!
      

  4.   

    没人回答我!还是我自己搞定!
    这个分送不出去,
    再问大家一个问题吧,让我把分送出去呀!
    大家用的是什么数据库系统?
    我的操作系统是Windows XP,英特尔酷睿处理器(1.86GHz),512MB内存,大家给点建议:装哪个数据库系统比较好!