Exemple #1
0
 private void MapBox_MouseClick(object sender, System.Windows.Forms.MouseEventArgs e)
 {
     try
     {
         Rectangle clicked = nodes.GetSelectedNode(e.X, e.Y);
         if (!isBorder(clicked))
         {
             if (isSelectStart)
             {
                 nodes.GetSelectedNode(clicked).isStart = true;
                 g.DrawRectangle(selPen, clicked);
                 g.FillRectangle(BRSHstart, clicked);
                 isSelectStart    = false;
                 startNode        = clicked;
                 BTNstart.Visible = false;
             }
             else if (isSelectEnd)
             {
                 nodes.GetSelectedNode(clicked).isEnd = true;
                 g.DrawRectangle(selPen, clicked);
                 g.FillRectangle(BRSHend, clicked);
                 isSelectEnd       = false;
                 endNode           = clicked;
                 BTNfinish.Visible = false;
             }
             else if (!nodes.isBlocking(clicked))
             {
                 nodes.GetSelectedNode(clicked).isBlocking = true;
                 g.DrawRectangle(selPen, clicked);
                 g.FillRectangle(BRSHbord, clicked);
             }
             else if (nodes.isBlocking(clicked))
             {
                 nodes.GetSelectedNode(clicked).isBlocking = false;
                 g.FillRectangle(BRSHstd, clicked);
                 g.DrawRectangle(stdPen, clicked);
             }
         }
     }
     catch
     {
         Console.WriteLine("Ignore if clicked out of bounds or preinitialized");
     }
     MapBox.Image = paintMap;
 }
Exemple #2
0
 public List <MapNodes.Node> FindBFSPath()
 {
     mapNodes.ResetNodes();
     queueNodes = new Queue <MapNodes.Node>();
     queueNodes.Enqueue(mapNodes.GetSelectedNode(start));
     while (queueNodes.Count > 0)
     {
         MapNodes.Node next = queueNodes.Peek();
         if (next.isEnd)
         {
             while (next != mapNodes.GetSelectedNode(start))
             {
                 nodeList.Add(next);
                 next = next.parent;
             }
             return(nodeList);
         }
         else
         {
             if (isEligibleNode(next.index + 1))
             {
                 QPush(next.index + 1, next);
             }
             if (isEligibleNode(next.index - 1))
             {
                 QPush(next.index - 1, next);
             }
             if (isEligibleNode(next.index - mapNodes.width))
             {
                 QPush(next.index - mapNodes.width, next);
             }
             if (isEligibleNode(next.index + mapNodes.width))
             {
                 QPush(next.index + mapNodes.width, next);
             }
         }
         queueNodes.Dequeue();
     }
     return(null);
 }