Ejemplo n.º 1
0
        private void graficarColumna(string titulo, int nivel)
        {
            NodoEncabezadoMatriz columnaGraficar = columna.ini;

            while (columnaGraficar != null)
            {
                NodoMatrizDispersa nodoActual = columnaGraficar.accesoMatriz;
                while (nodoActual != null)
                {
                    NodoMatrizDispersa nodoAux = buscarNivel(nodoActual, nivel);
                    if (nodoAux != null)
                    {
                        nodo         = "\tnd" + nodoAux.coor_y.ToString() + nodoAux.coor_x.ToString() + nodoAux.coor_z.ToString();
                        graphMatriz += nodo + ";\n\t" + nodo + "[label=\"" + "Unidad: " + nodoAux.unidad + "\nVida: " + nodoAux.vida.ToString() + "\nAlcance: " + nodoAux.alcance.ToString() + "\nDaño: " + nodoAux.hurt.ToString() + "\nNivel: " + nodoAux.coor_z.ToString() + "\", color=gray75];\n\t";

                        if (buscarNivel(nodoActual.abajo, nivel) != null)
                        {
                            graphMatriz += nodo + " -> ";
                        }
                    }
                    nodoActual = nodoActual.abajo;
                }
                columnaGraficar = columnaGraficar.siguiente;
            }
        }
Ejemplo n.º 2
0
        private void graficarFila(string titulo, int nivel)
        {
            NodoEncabezadoMatriz filaGraficar = fila.ini;

            while (filaGraficar != null)
            {
                NodoMatrizDispersa nodoActual = filaGraficar.accesoMatriz;
                while (nodoActual != null)
                {
                    NodoMatrizDispersa nodoAux = buscarNivel(nodoActual, nivel);
                    if (nodoAux != null)
                    {
                        nodo         = "nd" + nodoAux.coor_y.ToString() + nodoAux.coor_x.ToString() + nodoAux.coor_z.ToString();
                        graphMatriz += nodo + ";\n\t";

                        if (buscarNivel(nodoActual.derecha, nivel) != null)
                        {
                            graphMatriz += nodo + " ->";
                        }
                    }
                    nodoActual = nodoActual.derecha;
                }
                filaGraficar = filaGraficar.siguiente;
            }
        }
Ejemplo n.º 3
0
        private void graficarEnlaceColumna(string titulo, int nivel)
        {
            NodoEncabezadoMatriz columnaGrafica = columna.ini;

            graphMatriz += "MATRIZ";

            while (columnaGrafica != null)
            {
                NodoMatrizDispersa nodoActual = columnaGrafica.accesoMatriz;
                col = "C" + columnaGrafica.indice.ToString();
                while (nodoActual != null)
                {
                    NodoMatrizDispersa nodoAux = buscarNivel(nodoActual, nivel);
                    if (nodoAux != null)
                    {
                        graphMatriz += " -> " + col;
                        //graphMatriz += "";
                        break;
                    }
                    nodoActual = nodoActual.abajo;
                }
                columnaGrafica = columnaGrafica.siguiente;
            }
            graphMatriz += ";\n\t";
        }
Ejemplo n.º 4
0
        private void graficarEnlaceColumnaNodo(string titulo, int nivel)
        {
            NodoEncabezadoMatriz columnaGrafica = columna.ini;

            while (columnaGrafica != null)
            {
                NodoMatrizDispersa nodoActualGrafica = columnaGrafica.accesoMatriz;
                col = "C" + columnaGrafica.indice.ToString();

                while (nodoActualGrafica != null)
                {
                    NodoMatrizDispersa nodoAux = buscarNivel(nodoActualGrafica, nivel);
                    //col = "C" + columnaGrafica.indice.ToString();//Identificador para columna
                    if (nodoAux != null)
                    {
                        nodo         = "nd" + nodoAux.coor_y.ToString() + nodoAux.coor_x.ToString() + nodoAux.coor_z.ToString();//Identificador para nodo
                        graphMatriz += col + " -> " + nodo + ";\n\t";
                        graphMatriz += nodo + " -> " + col + ";\n\t";
                        break;
                    }
                    nodoActualGrafica = nodoActualGrafica.abajo;
                }
                columnaGrafica = columnaGrafica.siguiente;
            }
        }
Ejemplo n.º 5
0
 //Constructor
 public NodoEncabezadoMatriz(int indice)
 {
     this.indice  = indice;
     accesoMatriz = null;
     siguiente    = null;
     anterior     = null;
 }
Ejemplo n.º 6
0
        private void enviarRank(string titulo, int nivel)
        {
            //Columnas

            NodoEncabezadoMatriz nodoEncabezadoAux = columna.ini;

            graphMatriz += "{ rank=min; MATRIZ; ";
            while (nodoEncabezadoAux != null)
            {
                NodoMatrizDispersa nodoActual = nodoEncabezadoAux.accesoMatriz;
                col = "C" + nodoEncabezadoAux.indice.ToString();

                while (nodoActual != null)
                {
                    NodoMatrizDispersa nodoAux = buscarNivel(nodoActual, nivel);
                    if (nodoAux != null)
                    {
                        graphMatriz += col + "; ";
                        break;
                    }
                    nodoActual = nodoActual.abajo;
                }
                nodoEncabezadoAux = nodoEncabezadoAux.siguiente;
            }
            graphMatriz += "};\n\t";

            //Filas
            nodoEncabezadoAux = fila.ini;
            while (nodoEncabezadoAux != null)
            {
                NodoMatrizDispersa nodoActual = nodoEncabezadoAux.accesoMatriz;
                bool esFila = false;
                fi           = "F" + nodoEncabezadoAux.indice.ToString();
                graphMatriz += "{ rank=same; " + fi + "; ";
                fi           = "";

                while (nodoActual != null)
                {
                    NodoMatrizDispersa nodoAux = buscarNivel(nodoActual, nivel);
                    if (nodoAux != null)
                    {
                        esFila       = true;
                        nodo         = "nd" + nodoAux.coor_y.ToString() + nodoAux.coor_x.ToString() + nodoAux.coor_z.ToString();
                        graphMatriz += nodo + "; ";
                    }
                    nodoActual = nodoActual.derecha;
                }
                if (esFila)
                {
                    graphMatriz += "};\n\t";
                    esFila       = false;
                }
                nodoEncabezadoAux = nodoEncabezadoAux.siguiente;
            }
        }
Ejemplo n.º 7
0
        /*
         * Metodos publicos para insertar, mover, graficar la matriz
         * 1. Insertar
         * 2. Mover
         * 3. Graficar
         * 4. Eliminar
         */

        //Insertar a la matriz
        public void insertarMatriz(string unidad, int vida, int x, int y, int nivel, int alcance, int hurt)
        {
            NodoEncabezadoMatriz col = columna.insertarEncabezado(x);
            NodoEncabezadoMatriz fil = fila.insertarEncabezado(y);

            //Se tiene que llamar al constructor del nodo Matriz para inicializar el nodo
            NodoMatrizDispersa nuevoNodo = new NodoMatrizDispersa(unidad, vida, x, y, nivel, alcance, hurt);

            //Insertamos en la fila y columna
            fil.insertarFila(nuevoNodo);
            col.insertarFila(nuevoNodo);
        }
Ejemplo n.º 8
0
        //Eliminacion por fila
        public void eliminarFila(NodoMatrizDispersa nodoEliminar)
        {
            NodoEncabezadoMatriz filaEliminar = ini;

            while (filaEliminar != null)
            {
                if (filaEliminar.indice < nodoEliminar.coor_y)
                {
                    filaEliminar = filaEliminar.siguiente;
                }
                else
                {
                    break;
                }
            }

            filaEliminar.eliminarFila(nodoEliminar);
        }
Ejemplo n.º 9
0
        //eliminacion por columna
        public void eliminarColumna(NodoMatrizDispersa nodoEliminar)
        {
            NodoEncabezadoMatriz columnaEliminar = ini;

            while (columnaEliminar != null)
            {
                if (columnaEliminar.indice < nodoEliminar.coor_x)
                {
                    columnaEliminar = columnaEliminar.siguiente;
                }
                else
                {
                    break;
                }
            }

            columnaEliminar.eliminarColumna(nodoEliminar);
        }
Ejemplo n.º 10
0
        //Buscar Nodo en la matriz por unidad
        public NodoMatrizDispersa buscarNodo(string unidad, int nivel)
        {
            NodoEncabezadoMatriz filaAux = ini;
            NodoMatrizDispersa   nodoAux = null;

            while (filaAux != null)
            {
                nodoAux = filaAux.buscarNodo(filaAux.accesoMatriz, unidad, nivel);
                if (nodoAux == null)
                {
                    filaAux = filaAux.siguiente;
                }
                else
                {
                    break;
                }
            }
            return(nodoAux);
        }
Ejemplo n.º 11
0
        //Buscar Nodo en la matriz por columna y nivel
        public NodoMatrizDispersa buscarNodo(int fila, int columna, int nivel)
        {
            NodoEncabezadoMatriz filaAux = ini;
            NodoMatrizDispersa   nodoAux = null;

            while (filaAux != null)
            {
                if (filaAux.indice < fila)
                {
                    filaAux = filaAux.siguiente;
                }
                else
                {
                    break;
                }
            }
            if (filaAux != null && filaAux.indice == fila)
            {
                nodoAux = filaAux.buscarNodo(filaAux.accesoMatriz, columna, nivel);
            }

            return(nodoAux);
        }
Ejemplo n.º 12
0
        private void graficarEnlaceFila(string titulo, int nivel)
        {
            NodoEncabezadoMatriz filaGrafica = fila.ini;

            graphMatriz += "MATRIZ";

            while (filaGrafica != null)
            {
                NodoMatrizDispersa nodoActual = filaGrafica.accesoMatriz;
                fi = "F" + filaGrafica.indice.ToString();
                while (nodoActual != null)
                {
                    NodoMatrizDispersa nodoAux = buscarNivel(nodoActual, nivel);
                    if (nodoAux != null)
                    {
                        graphMatriz += " -> " + fi;
                        break;
                    }
                    nodoActual = nodoActual.derecha;
                }
                filaGrafica = filaGrafica.siguiente;
            }
            graphMatriz += ";\n\t";
        }
Ejemplo n.º 13
0
        private void graficarEnlaceFilaNodo(string titulo, int nivel)
        {
            NodoEncabezadoMatriz filaGrafica = fila.ini;

            while (filaGrafica != null)
            {
                NodoMatrizDispersa nodoActualGrafica = filaGrafica.accesoMatriz;
                fi = "F" + filaGrafica.indice.ToString();

                while (nodoActualGrafica != null)
                {
                    NodoMatrizDispersa nodoAux = buscarNivel(nodoActualGrafica, nivel);
                    if (nodoAux != null)
                    {
                        nodo         = "nd" + nodoAux.coor_y.ToString() + nodoAux.coor_x.ToString() + nodoAux.coor_z.ToString();//Identificador para nodo
                        graphMatriz += fi + " -> " + nodo + ";\n\t";
                        graphMatriz += nodo + " -> " + fi + ";\n\t";
                        break;
                    }
                    nodoActualGrafica = nodoActualGrafica.derecha;
                }
                filaGrafica = filaGrafica.siguiente;
            }
        }
Ejemplo n.º 14
0
        public NodoEncabezadoMatriz insertarEncabezado(int indice)
        {
            if (ini != null)
            {
                /*
                 * si es mayor se inserta a la cabeza el nuevo indice
                 */
                if (ini.indice > indice)
                {
                    NodoEncabezadoMatriz nodoTem = ini;
                    ini              = new NodoEncabezadoMatriz(indice);
                    ini.siguiente    = nodoTem;
                    nodoTem.anterior = ini;

                    return(ini);
                }
                else if (fin.indice < indice)
                {
                    fin.siguiente = new NodoEncabezadoMatriz(indice);
                    fin           = fin.siguiente;

                    return(fin);
                }
                else
                {
                    NodoEncabezadoMatriz nodoActual = ini;
                    while (nodoActual != fin)
                    {
                        if (nodoActual.indice < indice)
                        {
                            nodoActual = nodoActual.siguiente;
                        }
                        else
                        {
                            break;
                        }
                    }

                    if (nodoActual.indice > indice)
                    {
                        NodoEncabezadoMatriz nuevoNodo = new NodoEncabezadoMatriz(indice);
                        nuevoNodo.anterior            = nodoActual.anterior;
                        nuevoNodo.siguiente           = nodoActual;
                        nodoActual.anterior.siguiente = nuevoNodo;
                        nodoActual.anterior           = nuevoNodo;

                        return(nuevoNodo);
                    }
                    else
                    {
                        return(nodoActual);
                    }
                }
            }
            else
            {
                ini = new NodoEncabezadoMatriz(indice);
                fin = ini;
                return(ini);
            }
        }
Ejemplo n.º 15
0
 //constructor
 public EncabezadoMatriz()
 {
     ini = null;
     fin = null;
 }