Ejemplo n.º 1
0
 //Constructor
 public NodoEncabezadoMatriz(int indice)
 {
     this.indice  = indice;
     accesoMatriz = null;
     siguiente    = null;
     anterior     = null;
 }
Ejemplo n.º 2
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.º 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
        //Buscar Nodo en la matriz por unidad
        public NodoMatrizDispersa buscarNodo(NodoMatrizDispersa nodoBusqueda, string unidad, int nivel)
        {
            NodoMatrizDispersa nodoAux = nodoBusqueda;
            NodoMatrizDispersa nodoTemporal;

            return(nodoAux);
        }
Ejemplo n.º 5
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.º 6
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.º 7
0
        //Eliminar Fila
        public void eliminarFila(NodoMatrizDispersa nodoEliminar)
        {
            bool top    = false;
            bool bottom = false;

            if (nodoEliminar.adelante != null)
            {
                nodoEliminar.adelante.atras = nodoEliminar.atras;
            }
            else
            {
                top = true;
            }

            if (nodoEliminar.atras != null)
            {
                nodoEliminar.atras.adelante = nodoEliminar.adelante;
            }
            else
            {
                top = true;
            }

            if (nodoEliminar.derecha != null)
            {
                if (!bottom)
                {
                    nodoEliminar.derecha.izquierda = nodoEliminar.atras;
                    nodoEliminar.atras.derecha     = nodoEliminar.derecha;
                }
                else
                {
                    nodoEliminar.derecha.izquierda = nodoEliminar.izquierda;
                }
            }
            if (nodoEliminar.izquierda != null)
            {
                if (!bottom)
                {
                    nodoEliminar.izquierda.derecha = nodoEliminar.atras;
                    nodoEliminar.atras.izquierda   = nodoEliminar.izquierda;
                }
                else
                {
                    nodoEliminar.izquierda.derecha = nodoEliminar.derecha;
                }
            }
            else
            {
                if (top && !bottom)
                {
                    accesoMatriz = nodoEliminar.atras;
                }
                else if (top)
                {
                    accesoMatriz = nodoEliminar.derecha;
                }
            }
        }
Ejemplo n.º 8
0
        //Insertar en fila
        public void insertarFila(NodoMatrizDispersa nuevoNodo)
        {
            if (accesoMatriz != null)
            {
                if (accesoMatriz.coor_x > nuevoNodo.coor_x)//si esto es verdadero se inserta a la cabeza
                {
                    nuevoNodo.derecha      = accesoMatriz;
                    accesoMatriz.izquierda = nuevoNodo;
                    accesoMatriz           = nuevoNodo;
                }
                else
                {
                    NodoMatrizDispersa nodoAux = accesoMatriz;

                    while (nodoAux.derecha != null)
                    {
                        if (nodoAux.coor_x < nuevoNodo.coor_x)
                        {
                            nodoAux = nodoAux.derecha;
                        }
                        else
                        {
                            break;
                        }
                    }

                    if (nodoAux.coor_x > nuevoNodo.coor_x)
                    {
                        nuevoNodo.izquierda       = nodoAux.izquierda;
                        nuevoNodo.derecha         = nodoAux;
                        nodoAux.izquierda.derecha = nuevoNodo;
                        nodoAux.izquierda         = nuevoNodo;
                    }
                    else if (nodoAux.coor_x < nuevoNodo.coor_x)//ahora el nodo nuevo es mayor por lo tanto se ingresa despues
                    {
                        nuevoNodo.derecha   = nodoAux.derecha;
                        nuevoNodo.izquierda = nodoAux;
                        if (nodoAux.derecha != null)
                        {
                            nodoAux.derecha.izquierda = nuevoNodo;
                        }
                        nodoAux.derecha = nuevoNodo;
                    }
                    else//en cual otro caso ordenamos los nodos y el valor de retorno es igual al valor auxiliar
                    {
                        nodoAux = ordenarNodos(nodoAux, nuevoNodo);
                        if (nodoAux.izquierda == null)
                        {
                            accesoMatriz = nodoAux;
                        }
                    }
                }
            }
            else
            {
                accesoMatriz = nuevoNodo;
            }
        }
Ejemplo n.º 9
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.º 10
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.º 11
0
        //Eliminar Columna
        public void eliminarColumna(NodoMatrizDispersa nodoEliminar)
        {
            bool top    = false;
            bool bottom = false;

            if (nodoEliminar.adelante == null)
            {
                top = true;
            }
            if (nodoEliminar.atras == null)
            {
                bottom = true;
            }

            if (nodoEliminar.abajo != null)
            {
                if (!bottom)
                {
                    nodoEliminar.abajo.arriba = nodoEliminar.atras;
                    nodoEliminar.atras.abajo  = nodoEliminar.abajo;
                }
                else
                {
                    nodoEliminar.abajo.arriba = nodoEliminar.arriba;
                }
            }
            if (nodoEliminar.arriba != null)
            {
                if (!bottom)
                {
                    nodoEliminar.arriba.abajo = nodoEliminar.atras;
                    nodoEliminar.atras.arriba = nodoEliminar.arriba;
                }
                else
                {
                    nodoEliminar.arriba.abajo = nodoEliminar.abajo;
                }
            }
            else
            {
                if (top && !bottom)
                {
                    accesoMatriz = nodoEliminar.atras;
                }
                else
                {
                    accesoMatriz = nodoEliminar.abajo;
                }
            }
        }
Ejemplo n.º 12
0
        //Insertar en Columna
        public void insertarColumna(NodoMatrizDispersa nuevoNodo)
        {
            if (accesoMatriz != null)
            {
                if (accesoMatriz.coor_y > nuevoNodo.coor_y)//Insertando en la cabeza
                {
                    nuevoNodo.abajo     = accesoMatriz;
                    accesoMatriz.arriba = nuevoNodo;
                    accesoMatriz        = nuevoNodo;
                }
                else
                {
                    NodoMatrizDispersa nodoAux = accesoMatriz;
                    while (nodoAux.abajo != null)
                    {
                        if (nodoAux.coor_y < nuevoNodo.coor_y)
                        {
                            nodoAux = nodoAux.abajo;
                        }
                        else
                        {
                            break;
                        }
                    }

                    if (nodoAux.coor_y > nuevoNodo.coor_y)//Insertando antes
                    {
                        nuevoNodo.arriba     = nodoAux.arriba;
                        nuevoNodo.abajo      = nodoAux;
                        nodoAux.arriba.abajo = nuevoNodo;
                        nodoAux.arriba       = nuevoNodo;
                    }
                    else//Insertando despues
                    {
                        nuevoNodo.abajo  = nodoAux.abajo;
                        nuevoNodo.arriba = nodoAux;
                        if (nodoAux.abajo != null)
                        {
                            nodoAux.abajo.arriba = nuevoNodo;
                        }
                        nodoAux.abajo = nuevoNodo;
                    }
                }
            }
            else
            {
                accesoMatriz = nuevoNodo;
            }
        }
        public int hurt; //daño

        //Constructor
        public NodoMatrizDispersa(string unidad, int vida, int x, int y, int z, int alcance, int hurt)
        {
            this.unidad  = unidad;
            this.vida    = vida;
            this.coor_x  = x;
            this.coor_y  = y;
            this.coor_z  = z;
            this.alcance = alcance;
            this.hurt    = hurt;

            arriba    = null;
            abajo     = null;
            adelante  = null;
            izquierda = null;
            atras     = null;
            derecha   = null;
        }
Ejemplo n.º 14
0
        //Buscar nivel
        private NodoMatrizDispersa buscarNivel(NodoMatrizDispersa nodoBuscar, int nivel)
        {
            NodoMatrizDispersa nodoAux = nodoBuscar;

            while (nodoAux != null)
            {
                if (nodoAux.coor_z == nivel)
                {
                    break;
                }
                else
                {
                    nodoAux = nodoAux.atras;
                }
            }
            return(nodoAux);
        }
Ejemplo n.º 15
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.º 16
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.º 17
0
        //Ordnacion de nodos
        private NodoMatrizDispersa ordenarNodos(NodoMatrizDispersa nodoActual, NodoMatrizDispersa nuevoNodo)
        {
            if (nodoActual.coor_z > nuevoNodo.coor_z)
            {
                nodoActual.adelante = nuevoNodo;
                nuevoNodo.atras     = nodoActual;

                nuevoNodo.arriba    = nodoActual.arriba;
                nuevoNodo.abajo     = nodoActual.abajo;
                nuevoNodo.derecha   = nodoActual.derecha;
                nuevoNodo.izquierda = nodoActual.izquierda;

                if (nodoActual.arriba != null)
                {
                    nodoActual.arriba.abajo = nuevoNodo;
                }
                if (nodoActual.abajo != null)
                {
                    nodoActual.abajo.arriba = nuevoNodo;
                }
                if (nodoActual.izquierda != null)
                {
                    nodoActual.izquierda.derecha = nuevoNodo;
                }
                if (nodoActual.derecha != null)
                {
                    nodoActual.derecha.izquierda = nuevoNodo;
                }

                return(nuevoNodo);
            }
            else
            {
                nuevoNodo.atras    = nodoActual.atras;
                nuevoNodo.adelante = nodoActual;
                if (nodoActual.atras != null)
                {
                    nodoActual.atras.adelante = nuevoNodo;
                }

                return(nodoActual);
            }
        }
Ejemplo n.º 18
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.º 19
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.º 20
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.º 21
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.º 22
0
        //Buscar Nodo en la matriz por columna y nivel
        public NodoMatrizDispersa buscarNodo(NodoMatrizDispersa nodoBusqueda, int columna, int nivel)
        {
            NodoMatrizDispersa nodoAux = nodoBusqueda;

            return(nodoAux);
        }
Ejemplo n.º 23
0
 //Validar para que no vaya a ver una colicion
 NodoMatrizDispersa validarMovimiento(NodoMatrizDispersa nodoDestinio, string unidad, int x, int y, int z)
 {
     return(nodoDestinio);
 }