private void recorridoNodoProfundidad(vertice vertice, Graphics g) { vertice.Visitado = true; vertice.colorear(g); Thread.Sleep(1000); vertice.DibujarVertice(g); foreach (arco adya in vertice.ListaAdyacencia) { if (!adya.nDestino.Visitado) { recorridoNodoProfundidad(adya.nDestino, g); } } }
private void mapa_MouseMove(object sender, MouseEventArgs e) { switch (var_control) { case 2: //Creando nuevo nodo if (nuevoNodo != null) { int posX = e.Location.X; int posY = e.Location.Y; if (posX < nuevoNodo.Dimensiones.Width / 2) { posX = nuevoNodo.Dimensiones.Width / 2; } else if (posX > mapa.Size.Width - nuevoNodo.Dimensiones.Width / 2) { posX = mapa.Size.Width - nuevoNodo.Dimensiones.Width / 2; } if (posY < nuevoNodo.Dimensiones.Height / 2) { posY = nuevoNodo.Dimensiones.Height / 2; } else if (posY > mapa.Size.Height - nuevoNodo.Dimensiones.Width / 2) { posY = mapa.Size.Height - nuevoNodo.Dimensiones.Width / 2; } nuevoNodo.Posicion = new Point(posX, posY); mapa.Refresh(); nuevoNodo.DibujarVertice(mapa.CreateGraphics()); } break; case 1: // Dibujar arco AdjustableArrowCap bigArrow = new AdjustableArrowCap(4, 4, true); bigArrow.BaseCap = System.Drawing.Drawing2D.LineCap.Triangle; mapa.Refresh(); mapa.CreateGraphics().DrawLine(new Pen(Brushes.Black, 2) { CustomEndCap = bigArrow }, NodoOrigen.Posicion, e.Location); break; } }
private void recorridoNodoAnchura(vertice vertice, Graphics g, string destino) { vertice.Visitado = true; cola.Enqueue(vertice); vertice.colorear(g); Thread.Sleep(1000); vertice.DibujarVertice(g); if (vertice.Valor == destino) { nodoEncontrado = true; return; } while (cola.Count > 0) { vertice aux = (vertice)cola.Dequeue(); foreach (arco adya in aux.ListaAdyacencia) { if (!adya.nDestino.Visitado) { if (!nodoEncontrado) { adya.nDestino.Visitado = true; adya.nDestino.colorear(g); Thread.Sleep(1000); adya.nDestino.DibujarVertice(g); if (destino != "") { distancia += adya.peso; } cola.Enqueue(adya.nDestino); if (adya.nDestino.Valor == destino) { nodoEncontrado = true; return; } } } } } }