Example #1
0
        private void BuildNodes(List<GraphNode> node_list)
        {
            NodeA = new GraphNode() { Name = "A", X = -19, Y = 11, Connections = new Connection[2] };
            NodeB = new GraphNode() { Name = "B", X = -13, Y = 13, Connections = new Connection[2] };
            NodeC = new GraphNode() { Name = "C", X = 4, Y = 14, Connections = new Connection[3] };
            NodeD = new GraphNode() { Name = "D", X = -4, Y = 12, Connections = new Connection[3] };
            NodeE = new GraphNode() { Name = "E", X = -8, Y = 3, Connections = new Connection[7] };
            NodeF = new GraphNode() { Name = "F", X = -18, Y = 1, Connections = new Connection[2] };
            NodeG = new GraphNode() { Name = "G", X = -12, Y = -8, Connections = new Connection[3] };
            NodeH = new GraphNode() { Name = "H", X = 12, Y = -9, Connections = new Connection[3] };
            NodeI = new GraphNode() { Name = "I", X = -18, Y = -11, Connections = new Connection[2] };
            NodeJ = new GraphNode() { Name = "J", X = -4, Y = -11, Connections = new Connection[5] };
            NodeK = new GraphNode() { Name = "K", X = -12, Y = -14, Connections = new Connection[3] };
            NodeL = new GraphNode() { Name = "L", X = 2, Y = -18, Connections = new Connection[3] };
            NodeM = new GraphNode() { Name = "M", X = 18, Y = -13, Connections = new Connection[3] };
            NodeN = new GraphNode() { Name = "N", X = 4, Y = -9, Connections = new Connection[3] };
            NodeO = new GraphNode() { Name = "O", X = 22, Y = 11, Connections = new Connection[2] };
            NodeP = new GraphNode() { Name = "P", X = 18, Y = 3, Connections = new Connection[4] };

            node_list.Add(NodeA);
            node_list.Add(NodeB);
            node_list.Add(NodeC);
            node_list.Add(NodeD);
            node_list.Add(NodeE);
            node_list.Add(NodeF);
            node_list.Add(NodeG);
            node_list.Add(NodeH);
            node_list.Add(NodeI);
            node_list.Add(NodeJ);
            node_list.Add(NodeK);
            node_list.Add(NodeL);
            node_list.Add(NodeM);
            node_list.Add(NodeN);
            node_list.Add(NodeO);
            node_list.Add(NodeP);
        }
Example #2
0
 private double CalculateDistance(GraphNode start, GraphNode target)
 {
     return Math.Sqrt(Math.Pow(target.X - start.X, 2) + Math.Pow(target.Y - start.Y, 2));
 }
Example #3
0
 private void AddToCloseList(GraphNode node)
 {
     CloseList.Add(node);
 }
Example #4
0
 private void RemoveFromOpenList(GraphNode node)
 {
     OpenList.Remove(node);
 }
Example #5
0
        private void ProcessNode(GraphNode current_node, GraphNode from_node)
        {
            current_node.CostSoFar += CalculateDistance(Start, current_node);
            current_node.Heuristic = CalculateDistance(current_node, Goal);

            current_node.CameFrom = from_node;
            OpenList.Add(current_node);
        }
Example #6
0
 private void ProcessConnections(GraphNode current_node)
 {
     foreach (Connection connection in current_node.Connections)
     {
         if (InList(connection.Target, OpenList) || InList(connection.Target, CloseList))
         {
             double temp_csf = connection.Target.CostSoFar + CalculateDistance(current_node, connection.Target);
             if (temp_csf < connection.Target.CostSoFar)
             {
                 ProcessNode(connection.Target, current_node);
             }
         }
         else
             ProcessNode(connection.Target, current_node);
     }
 }
Example #7
0
 private bool InList(GraphNode looking_for, List<GraphNode> list)
 {
     foreach (GraphNode node in list)
         if (node == looking_for)
             return true;
     return false;
 }