Esempio n. 1
0
 public MazeAStar(VisionMapping vision, Func <Map2d> getMap, Func <bool> canJump, Action reset_state,
                  GetCameFrom get_came_from, Action <Coord, Coord, int> set_came_from,
                  Func <Coord, float> get_f_score, Action <Coord, float> set_f_score,
                  Func <Coord, float> get_g_score, Action <Coord, float> set_g_score)
 {
     SetAstarSourceData(vision, getMap, canJump, reset_state, get_came_from, set_came_from, get_f_score, set_f_score, get_g_score, set_g_score);
 }
Esempio n. 2
0
 public GenericAStar(Func <NODE_TYPE, List <EDGE_TYPE> > getEdges, Func <NODE_TYPE, EDGE_TYPE, NODE_TYPE> getEdgeToNode,
                     Func <NODE_TYPE, EDGE_TYPE, float> edgeCost, Func <NODE_TYPE, NODE_TYPE, float> distanceHeuristic, Action reset_state,
                     GetCameFrom get_came_from, Action <NODE_TYPE, NODE_TYPE, EDGE_TYPE> set_came_from,
                     Func <NODE_TYPE, float> get_f_score, Action <NODE_TYPE, float> set_f_score,
                     Func <NODE_TYPE, float> get_g_score, Action <NODE_TYPE, float> set_g_score)
 {
     SetNodeAndEdgeMethods(getEdges, getEdgeToNode, edgeCost, distanceHeuristic, reset_state, get_came_from, set_came_from, get_f_score, set_f_score, get_g_score, set_g_score);
 }
Esempio n. 3
0
 public void SetAstarSourceData(VisionMapping vision, Func <Map2d> getMap, Func <bool> canJump, Action reset_state,
                                GetCameFrom get_came_from, Action <Coord, Coord, int> set_came_from,
                                Func <Coord, float> get_f_score, Action <Coord, float> set_f_score,
                                Func <Coord, float> get_g_score, Action <Coord, float> set_g_score)
 {
     this.getMap  = getMap;
     this.canJump = canJump;
     this.vision  = vision;
     SetNodeAndEdgeMethods(GetEdges, NextNode, EdgeCost, Dist, reset_state, get_came_from, set_came_from, get_f_score, set_f_score, get_g_score, set_g_score);
 }
Esempio n. 4
0
 public void SetNodeAndEdgeMethods(Func <NODE_TYPE, List <EDGE_TYPE> > getEdges, Func <NODE_TYPE, EDGE_TYPE, NODE_TYPE> getEdgeToNode, Func <NODE_TYPE, EDGE_TYPE, float> edgeCost, Func <NODE_TYPE, NODE_TYPE, float> distanceHeuristic, Action reset_state,
                                   GetCameFrom get_came_from, Action <NODE_TYPE, NODE_TYPE, EDGE_TYPE> set_came_from,
                                   Func <NODE_TYPE, float> get_f_score, Action <NODE_TYPE, float> set_f_score,
                                   Func <NODE_TYPE, float> get_g_score, Action <NODE_TYPE, float> set_g_score)
 {
     this.getEdges          = getEdges;
     this.getEdgeToNode     = getEdgeToNode;
     this.edgeCost          = edgeCost;
     this.distanceHeuristic = distanceHeuristic;
     this.reset_state       = reset_state;
     this.get_came_from     = get_came_from;
     this.set_came_from     = set_came_from;
     this.get_f_score       = get_f_score;
     this.set_f_score       = set_f_score;
     this.get_g_score       = get_g_score;
     this.set_g_score       = set_g_score;
 }
Esempio n. 5
0
    static List <EDGE_TYPE> reconstruct_path(GetCameFrom previous, NODE_TYPE goal)
    {
        List <EDGE_TYPE> list = new List <EDGE_TYPE>();
        NODE_TYPE        prev = goal, cursor;
        int loopGuard = 0;

        do
        {
            //list.Add(prev);
            EDGE_TYPE edge;
            edge = previous(prev, out cursor);
            if (prev.Equals(cursor))
            {
                break;
            }
            list.Add(edge);
            prev = cursor;
        } while (++loopGuard < 1 << 20);        // hasPreviousNode);
        return(list);
    }