Пример #1
0
 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);
         }
     }
 }
Пример #2
0
        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;
            }
        }
Пример #3
0
 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;
                     }
                 }
             }
         }
     }
 }