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; }
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); }