コード例 #1
0
        public bool ExisteNodo(int nivel, char columna, int fila)
        {
            NodoMatriz aux = null;

            if (nivel == 0)
            {
                aux = TableroInicial.ExisteNodo(TableroInicial.enfnivel0, TableroInicial.encnivel0, fila, columna);
            }
            else if (nivel == 1)
            {
                aux = TableroInicial.ExisteNodo(TableroInicial.enfnivel1, TableroInicial.encnivel1, fila, columna);
            }
            else if (nivel == 2)
            {
                aux = TableroInicial.ExisteNodo(TableroInicial.enfnivel2, TableroInicial.encnivel2, fila, columna);
            }
            else if (nivel == 3)
            {
                aux = TableroInicial.ExisteNodo(TableroInicial.enfnivel3, TableroInicial.encnivel3, fila, columna);
            }
            if (aux == null)
            {
                return(false);
            }
            else
            {
                return(true);
            }
        }
コード例 #2
0
ファイル: Matriz.cs プロジェクト: Orbp1403/EDD_201220165
        public void Cambiarestadomov(string usuario, int nivel)
        {
            NodoEncabezado aux = null;

            if (nivel == 0)
            {
                aux = this.enfnivel0.GetPrimero();
            }
            else if (nivel == 1)
            {
                aux = this.enfnivel1.GetPrimero();
            }
            else if (nivel == 2)
            {
                aux = this.enfnivel2.GetPrimero();
            }
            else
            {
                aux = this.enfnivel3.GetPrimero();
            }
            while (aux != null)
            {
                NodoMatriz auxiliarcontenido = aux.cont;
                while (auxiliarcontenido != null)
                {
                    if (auxiliarcontenido.idjugador == usuario)
                    {
                        auxiliarcontenido.mover  = false;
                        auxiliarcontenido.atacar = false;
                    }
                    auxiliarcontenido = auxiliarcontenido.siguiente;
                }
                aux = aux.siguiente;
            }
        }
コード例 #3
0
ファイル: Matriz.cs プロジェクト: Orbp1403/EDD_201220165
 public NodoMatriz ExisteNodo(EncabezadoFila enf, EncabezadosColumna enc, int fila, char columna)
 {
     if (enf.ExisteFila(fila) != null && enc.ExisteEncabezadoColuma(columna) != null)
     {
         NodoMatriz aux = enf.ExisteFila(fila).cont;
         while (aux != null && aux.columna != columna)
         {
             aux = aux.siguiente;
         }
         return(aux);
     }
     return(null);
 }
コード例 #4
0
        public NodoMatriz bajar;     //nivel anterior

        public NodoMatriz(int movimiento, int alcance, int ataque, int vida, string idunidad, string idjugador, int fila, char columna)
        {
            this.movimiento = movimiento;
            this.alcance    = alcance;
            this.ataque     = ataque;
            this.vidad      = vida;
            this.idunidad   = idunidad;
            this.idjugador  = idjugador;
            this.fila       = fila;
            this.columna    = columna;
            this.siguiente  = null;
            this.anterior   = null;
            this.arriba     = null;
            this.abajo      = null;
            this.subir      = null;
            this.bajar      = null;
        }
コード例 #5
0
ファイル: Matriz.cs プロジェクト: Orbp1403/EDD_201220165
        public bool verificarbaseenemiga(string usuario)
        {
            NodoEncabezado auxiliar = this.enfnivel1.GetPrimero();

            while (auxiliar != null)
            {
                NodoMatriz auxiliarcontenido = auxiliar.cont;
                while (auxiliarcontenido != null)
                {
                    if (auxiliarcontenido.idjugador == usuario && auxiliarcontenido.idunidad.Contains("Base") && auxiliarcontenido.vidad != 0)
                    {
                        return(true);
                    }
                    auxiliarcontenido = auxiliarcontenido.siguiente;
                }
                auxiliar = auxiliar.siguiente;
            }
            return(false);
        }
コード例 #6
0
        void GraficarEncabezadosFila(EncabezadoFila enfila, int nivel)
        {
            if (enfila.GetPrimero() != null)
            {
                int            cont     = 0;
                NodoEncabezado auxiliar = enfila.GetPrimero();
                while (auxiliar != null)
                {
                    sw.Write("{rank = same\n");
                    sw.Write("ef" + auxiliar.Get_Id() + nivel + "[label = \"Numero de fila: " + auxiliar.Get_Id() + "\"];\n");

                    NodoMatriz auxiliarcontenido = auxiliar.cont;
                    while (auxiliarcontenido != null)
                    {
                        sw.Write("c" + auxiliarcontenido.fila + auxiliarcontenido.columna + nivel + "[label = \"Fila: " + auxiliarcontenido.fila + "\\nColumna: " + auxiliarcontenido.columna + "\\nUnidad: " + auxiliarcontenido.idunidad + "\\nJugador: " + auxiliarcontenido.idjugador);
                        if (auxiliarcontenido.subir != null)
                        {
                            sw.Write("\\nArriba: " + auxiliarcontenido.subir.fila + "," + auxiliarcontenido.subir.columna + "-" + auxiliarcontenido.subir.idunidad);
                        }
                        if (auxiliarcontenido.bajar != null)
                        {
                            sw.Write("\\nAbajo: " + auxiliarcontenido.bajar.fila + "," + auxiliarcontenido.bajar.columna + "-" + auxiliarcontenido.bajar.idunidad);
                        }
                        sw.Write("\"];\n");
                        auxiliarcontenido = auxiliarcontenido.siguiente;
                    }

                    sw.Write("}");
                    auxiliar = auxiliar.siguiente;
                    cont++;
                }

                auxiliar = enfila.GetPrimero();
                while (auxiliar.siguiente != null)
                {
                    sw.Write("ef" + auxiliar.Get_Id() + nivel + "->ef" + auxiliar.siguiente.Get_Id() + nivel + "\n");
                    sw.Write("ef" + auxiliar.Get_Id() + nivel + "->c" + auxiliar.cont.fila + auxiliar.cont.columna + nivel + "\n");
                    auxiliar = auxiliar.siguiente;
                }
                sw.Write("ef" + auxiliar.Get_Id() + nivel + "->c" + auxiliar.cont.fila + auxiliar.cont.columna + nivel + "\n");
            }
        }
コード例 #7
0
ファイル: Matriz.cs プロジェクト: Orbp1403/EDD_201220165
        public int Numerodeunidadesvivas(string usuario)
        {
            int aux = 0;

            for (int i = 0; i < 4; i++)
            {
                NodoEncabezado auxfila = null;
                if (i == 0)
                {
                    auxfila = this.enfnivel0.GetPrimero();
                }
                else if (i == 1)
                {
                    auxfila = this.enfnivel1.GetPrimero();
                }
                else if (i == 2)
                {
                    auxfila = this.enfnivel2.GetPrimero();
                }
                else
                {
                    auxfila = this.enfnivel3.GetPrimero();
                }
                while (auxfila != null)
                {
                    NodoMatriz auxiliarcontenido = auxfila.cont;
                    while (auxiliarcontenido != null)
                    {
                        if (auxiliarcontenido.idjugador == usuario && auxiliarcontenido.vidad > 0)
                        {
                            aux += 1;
                        }
                        auxiliarcontenido = auxiliarcontenido.siguiente;
                    }
                    auxfila = auxfila.siguiente;
                }
            }
            return(aux);
        }
コード例 #8
0
        public void InsertarEncabezadoColumna(char id, NodoMatriz cont)
        {
            NodoEncabezado nuevo = new NodoEncabezado(id, cont);

            if (this.primero == null)
            {
                this.primero = nuevo;
            }
            else
            {
                if (this.primero.Get_Id() > id)
                {
                    nuevo.siguiente = this.primero;
                    this.primero    = nuevo;
                }
                else
                {
                    NodoEncabezado auxiliar = this.primero;
                    while (auxiliar.siguiente != null)
                    {
                        if (auxiliar.Get_Id() < id && auxiliar.siguiente.Get_Id() > id)
                        {
                            break;
                        }
                        auxiliar = auxiliar.siguiente;
                    }
                    if (auxiliar.siguiente == null)
                    {
                        auxiliar.siguiente = nuevo;
                    }
                    else
                    {
                        nuevo.siguiente    = auxiliar.siguiente;
                        auxiliar.siguiente = nuevo;
                    }
                }
            }
        }
コード例 #9
0
        void GraficarContenido(EncabezadoFila enfila, EncabezadosColumna encol, int nivel)
        {
            NodoEncabezado auxiliar = enfila.GetPrimero();

            while (auxiliar != null)
            {
                NodoMatriz auxiliarcontenido = auxiliar.cont;
                while (auxiliarcontenido.siguiente != null)
                {
                    sw.Write("c" + auxiliarcontenido.fila + auxiliarcontenido.columna + nivel + "->c" + auxiliarcontenido.fila + auxiliarcontenido.siguiente.columna + nivel + "\n");
                    auxiliarcontenido = auxiliarcontenido.siguiente;
                }
                while (auxiliarcontenido.anterior != null)
                {
                    sw.Write("c" + auxiliarcontenido.fila + auxiliarcontenido.columna + nivel + "->c" + auxiliarcontenido.fila + auxiliarcontenido.anterior.columna + nivel + "\n");
                    auxiliarcontenido = auxiliarcontenido.anterior;
                }
                auxiliar = auxiliar.siguiente;
            }
            //relaciones verticales
            auxiliar = encol.GetPrimero();
            while (auxiliar != null)
            {
                NodoMatriz auxiliarcontenido = auxiliar.cont;
                while (auxiliarcontenido.abajo != null)
                {
                    sw.Write("c" + auxiliarcontenido.fila + auxiliarcontenido.columna + nivel + "->c" + auxiliarcontenido.abajo.fila + auxiliarcontenido.columna + nivel + "\n");
                    auxiliarcontenido = auxiliarcontenido.abajo;
                }

                while (auxiliarcontenido.arriba != null)
                {
                    sw.Write("c" + auxiliarcontenido.fila + auxiliarcontenido.columna + nivel + "->c" + auxiliarcontenido.arriba.fila + auxiliarcontenido.columna + nivel + "\n");
                    auxiliarcontenido = auxiliarcontenido.arriba;
                }
                auxiliar = auxiliar.siguiente;
            }
        }
コード例 #10
0
ファイル: Matriz.cs プロジェクト: Orbp1403/EDD_201220165
 public bool ExistePieza(EncabezadoFila enf, EncabezadosColumna enc, int fila, char columna, string pieza, string jugador)
 {
     if (enf.ExisteFila(fila) != null && enc.ExisteEncabezadoColuma(columna) != null)
     {
         NodoMatriz aux = enf.ExisteFila(fila).cont;
         while (aux != null && aux.columna != columna)
         {
             aux = aux.siguiente;
         }
         if (aux.idunidad == pieza && aux.idjugador == jugador)
         {
             return(true);
         }
         else
         {
             return(false);
         }
     }
     else
     {
         return(false);
     }
 }
コード例 #11
0
ファイル: Matriz.cs プロジェクト: Orbp1403/EDD_201220165
        public void Insertar(EncabezadoFila enf, EncabezadosColumna enc, int fila, char columna, int movimiento, int alcance, int ataque, int vida, string idunidad, string idjugador)
        {
            NodoMatriz     nuevo       = new NodoMatriz(movimiento, alcance, ataque, vida, idunidad, idjugador, fila, columna);
            NodoEncabezado auxiliarenc = enc.ExisteEncabezadoColuma(columna);

            if (auxiliarenc == null)//Si la columna en la que se tiene que insertar no existe
            {
                enc.InsertarEncabezadoColumna(columna, nuevo);
            }
            else
            {
                if (auxiliarenc.cont.fila > fila)
                {
                    nuevo.abajo             = auxiliarenc.cont;
                    auxiliarenc.cont.arriba = nuevo;
                    auxiliarenc.cont        = nuevo;
                }
                else
                {
                    NodoMatriz aux = auxiliarenc.cont; //nodo auxiliar que recorre el contenido de la columna
                    while (aux.abajo != null)          //recorrido hasta la ultima posicion del contenido de la columna
                    {
                        if (aux.fila < fila && aux.abajo.fila > fila)
                        {
                            break;
                        }
                        aux = aux.abajo;
                    }
                    if (aux.abajo == null)//si llega a la ultima posicion inserta al final
                    {
                        aux.abajo    = nuevo;
                        nuevo.arriba = aux;
                    }
                    else
                    {
                        nuevo.abajo      = aux.abajo;
                        nuevo.arriba     = aux;
                        aux.abajo.arriba = nuevo;
                        aux.abajo        = nuevo;
                    }
                }
            }

            auxiliarenc = enf.ExisteFila(fila);
            if (auxiliarenc == null)//Si la fila en la que se tiene que insertar no existe
            {
                enf.InsertarEncabezadoFila(fila, nuevo);
            }
            else
            {
                if (auxiliarenc.cont.columna > columna)
                {
                    nuevo.siguiente           = auxiliarenc.cont;
                    auxiliarenc.cont.anterior = nuevo;
                    auxiliarenc.cont          = nuevo;
                }
                else
                {
                    NodoMatriz aux = auxiliarenc.cont;
                    while (aux.siguiente != null)
                    {
                        if (aux.columna < columna && aux.siguiente.columna > columna)
                        {
                            break;
                        }
                        aux = aux.siguiente;
                    }
                    if (aux.siguiente == null)
                    {
                        aux.siguiente  = nuevo;
                        nuevo.anterior = aux;
                    }
                    else
                    {
                        nuevo.siguiente        = aux.siguiente;
                        nuevo.anterior         = aux;
                        aux.siguiente.anterior = nuevo;
                        aux.siguiente          = nuevo;
                    }
                }
            }

            if (nivel == 0)
            {
                NodoEncabezado auxiliarcol = encnivel1.ExisteEncabezadoColuma(columna);
                NodoEncabezado auxiliarfil = enfnivel1.ExisteFila(fila);
                if (auxiliarcol != null)//si existe el encabezado de la columna en el nivel 1
                {
                    NodoEncabezado actual = encnivel0.ExisteEncabezadoColuma(columna);
                    actual.arriba     = auxiliarcol;
                    auxiliarcol.abajo = actual;
                }
                else//si no se ira a buscar al nivel 2
                {
                    auxiliarcol = encnivel2.ExisteEncabezadoColuma(columna);
                    if (auxiliarcol != null)//si existe el encabezado de la columna en el nivel 2
                    {
                        NodoEncabezado actual = encnivel0.ExisteEncabezadoColuma(columna);
                        actual.arriba     = auxiliarcol;
                        auxiliarcol.abajo = actual;
                    }
                    else//si no se ira a buscar al nivel 3
                    {
                        auxiliarcol = encnivel3.ExisteEncabezadoColuma(columna);
                        if (auxiliarcol != null)
                        {
                            NodoEncabezado actual = encnivel0.ExisteEncabezadoColuma(columna);
                            actual.arriba     = auxiliarcol;
                            auxiliarcol.abajo = actual;
                        }
                    }
                }

                if (auxiliarfil != null)//si existe el encabezado de la fila en el nivel 1
                {
                    NodoEncabezado actual = enfnivel0.ExisteFila(fila);
                    actual.arriba     = auxiliarfil;
                    auxiliarfil.abajo = actual;
                }
                else//si no se ira a buscar al nivel 2
                {
                    auxiliarfil = enfnivel2.ExisteFila(fila);
                    if (auxiliarfil != null)
                    {
                        NodoEncabezado actual = enfnivel0.ExisteFila(fila);
                        actual.arriba     = auxiliarfil;
                        auxiliarfil.abajo = actual;
                    }
                    else//si no existe en el nivel 2 se ira al 3
                    {
                        auxiliarfil = enfnivel3.ExisteFila(fila);
                        if (auxiliarfil != null)
                        {
                            NodoEncabezado actual = enfnivel0.ExisteFila(fila);
                            actual.arriba     = auxiliarfil;
                            auxiliarfil.abajo = actual;
                        }
                    }
                }
                //relacionar nodos contenido
                NodoMatriz auxiliarcontenido = ExisteNodo(enfnivel1, encnivel1, fila, columna); //busca el nodo en el nivel 1
                if (auxiliarcontenido != null)                                                  //si el nodo existe
                {
                    nuevo.subir             = auxiliarcontenido;
                    auxiliarcontenido.bajar = nuevo;
                }
                else//si no se va a buscar al siguiente nivel
                {
                    auxiliarcontenido = ExisteNodo(enfnivel2, encnivel2, fila, columna);
                    if (auxiliarcontenido != null)
                    {
                        nuevo.subir             = auxiliarcontenido;
                        auxiliarcontenido.bajar = nuevo;
                    }
                    else
                    {
                        auxiliarcontenido = ExisteNodo(enfnivel3, encnivel3, fila, columna);
                        if (auxiliarcontenido != null)
                        {
                            nuevo.subir             = auxiliarcontenido;
                            auxiliarcontenido.bajar = nuevo;
                        }
                    }
                }
            }
            else if (nivel == 1)
            {
                NodoEncabezado auxiliarabajo  = encnivel0.ExisteEncabezadoColuma(columna); // relacion a nivel inferior
                NodoEncabezado auxiliararriba = encnivel2.ExisteEncabezadoColuma(columna); //relacion a nivel superior
                NodoEncabezado actual         = encnivel1.ExisteEncabezadoColuma(columna);
                //columnas
                if (auxiliarabajo != null)
                {
                    actual.abajo         = auxiliarabajo;
                    auxiliarabajo.arriba = actual;
                }

                if (auxiliararriba != null)
                {
                    actual.arriba        = auxiliararriba;
                    auxiliararriba.abajo = actual;
                }
                else
                {
                    auxiliararriba = encnivel3.ExisteEncabezadoColuma(columna);
                    if (auxiliararriba != null)
                    {
                        actual.arriba        = auxiliararriba;
                        auxiliararriba.abajo = actual;
                    }
                }
                //filas
                auxiliarabajo  = enfnivel0.ExisteFila(fila);
                auxiliararriba = enfnivel2.ExisteFila(fila);
                actual         = enfnivel1.ExisteFila(fila);
                if (auxiliarabajo != null)
                {
                    actual.abajo         = auxiliarabajo;
                    auxiliarabajo.arriba = actual;
                }

                if (auxiliararriba != null)
                {
                    actual.arriba        = auxiliararriba;
                    auxiliararriba.abajo = actual;
                }
                else
                {
                    auxiliararriba = enfnivel3.ExisteFila(fila);
                    if (auxiliararriba != null)
                    {
                        actual.arriba        = auxiliararriba;
                        auxiliararriba.abajo = actual;
                    }
                }

                //contenido
                NodoMatriz auxiliarcontenido = ExisteNodo(enfnivel0, encnivel0, fila, columna);
                if (auxiliarcontenido != null)//para ver si se puede conectar con un nodo en el nivel inferior
                {
                    nuevo.bajar             = auxiliarcontenido;
                    auxiliarcontenido.subir = nuevo;
                }

                auxiliarcontenido = ExisteNodo(enfnivel2, encnivel2, fila, columna);
                if (auxiliarcontenido != null)//para verificar si se puede conectar con un nodo en el nivel superior
                {
                    nuevo.subir             = auxiliarcontenido;
                    auxiliarcontenido.bajar = nuevo;
                }
                else
                {
                    auxiliarcontenido = ExisteNodo(enfnivel3, encnivel3, fila, columna);
                    if (auxiliarcontenido != null)
                    {
                        nuevo.subir             = auxiliarcontenido;
                        auxiliarcontenido.bajar = nuevo;
                    }
                }
            }
            else if (nivel == 2)
            {
                NodoEncabezado auxiliarabajo  = encnivel1.ExisteEncabezadoColuma(columna); // relacion a nivel inferior
                NodoEncabezado auxiliararriba = encnivel3.ExisteEncabezadoColuma(columna); //relacion a nivel superior
                NodoEncabezado actual         = encnivel2.ExisteEncabezadoColuma(columna);
                //columnas
                if (auxiliarabajo != null)
                {
                    actual.abajo         = auxiliarabajo;
                    auxiliarabajo.arriba = actual;
                }
                else
                {
                    auxiliarabajo = encnivel0.ExisteEncabezadoColuma(columna);
                    if (auxiliarabajo != null)
                    {
                        actual.abajo         = auxiliarabajo;
                        auxiliarabajo.arriba = actual;
                    }
                }

                if (auxiliararriba != null)
                {
                    actual.arriba        = auxiliararriba;
                    auxiliararriba.abajo = actual;
                }

                //filas
                auxiliarabajo  = enfnivel1.ExisteFila(fila);
                auxiliararriba = enfnivel3.ExisteFila(fila);
                actual         = enfnivel2.ExisteFila(fila);
                if (auxiliarabajo != null)
                {
                    actual.abajo         = auxiliarabajo;
                    auxiliarabajo.arriba = actual;
                }
                else
                {
                    auxiliarabajo = enfnivel0.ExisteFila(fila);
                    if (auxiliarabajo != null)
                    {
                        auxiliarabajo.arriba = actual;
                        actual.abajo         = auxiliarabajo;
                    }
                }

                if (auxiliararriba != null)
                {
                    actual.arriba        = auxiliararriba;
                    auxiliararriba.abajo = actual;
                }


                //contenido
                NodoMatriz auxiliarcontenido = ExisteNodo(enfnivel1, encnivel1, fila, columna);
                if (auxiliarcontenido != null)//para ver si se puede conectar con un nodo en el nivel inferior
                {
                    nuevo.bajar             = auxiliarcontenido;
                    auxiliarcontenido.subir = nuevo;
                }
                else
                {
                    auxiliarcontenido = ExisteNodo(enfnivel0, encnivel0, fila, columna);
                    if (auxiliarcontenido != null)
                    {
                        nuevo.bajar             = auxiliarcontenido;
                        auxiliarcontenido.subir = nuevo;
                    }
                }

                auxiliarcontenido = ExisteNodo(enfnivel3, encnivel3, fila, columna);
                if (auxiliarcontenido != null)//para verificar si se puede conectar con un nodo en el nivel superior
                {
                    nuevo.subir             = auxiliarcontenido;
                    auxiliarcontenido.bajar = nuevo;
                }
            }
            else
            {
                NodoEncabezado auxiliarabajo = encnivel2.ExisteEncabezadoColuma(columna);
                NodoEncabezado actual        = encnivel3.ExisteEncabezadoColuma(columna);
                //columnas
                if (auxiliarabajo != null)
                {
                    actual.abajo         = auxiliarabajo;
                    auxiliarabajo.arriba = actual;
                }
                else
                {
                    auxiliarabajo = encnivel1.ExisteEncabezadoColuma(columna);
                    if (auxiliarabajo != null)
                    {
                        actual.abajo         = auxiliarabajo;
                        auxiliarabajo.arriba = actual;
                    }
                    else
                    {
                        auxiliarabajo = encnivel0.ExisteEncabezadoColuma(columna);
                        if (auxiliarabajo != null)
                        {
                            actual.abajo         = auxiliarabajo;
                            auxiliarabajo.arriba = actual;
                        }
                    }
                }
                //filas
                auxiliarabajo = enfnivel2.ExisteFila(fila);
                actual        = enfnivel3.ExisteFila(fila);
                if (auxiliarabajo != null)
                {
                    actual.abajo         = auxiliarabajo;
                    auxiliarabajo.arriba = actual;
                }
                else
                {
                    auxiliarabajo = enfnivel1.ExisteFila(fila);
                    if (auxiliarabajo != null)
                    {
                        actual.abajo         = auxiliarabajo;
                        auxiliarabajo.arriba = actual;
                    }
                    else
                    {
                        auxiliarabajo = enfnivel0.ExisteFila(fila);
                        if (auxiliarabajo != null)
                        {
                            actual.abajo         = auxiliarabajo;
                            auxiliarabajo.arriba = actual;
                        }
                    }
                }
                //contenido4
                NodoMatriz auxiliarcontenido = ExisteNodo(enfnivel2, encnivel2, fila, columna);
                if (auxiliarcontenido != null)
                {
                    nuevo.bajar             = auxiliarcontenido;
                    auxiliarcontenido.subir = nuevo;
                }
                else
                {
                    auxiliarcontenido = ExisteNodo(enfnivel1, encnivel1, fila, columna);
                    if (auxiliarcontenido != null)
                    {
                        nuevo.bajar             = auxiliarcontenido;
                        auxiliarcontenido.subir = nuevo;
                    }
                    else
                    {
                        auxiliarcontenido = ExisteNodo(enfnivel0, encnivel0, fila, columna);
                        if (auxiliarcontenido != null)
                        {
                            nuevo.bajar             = auxiliarcontenido;
                            auxiliarcontenido.subir = nuevo;
                        }
                    }
                }
            }
        }
コード例 #12
0
ファイル: Matriz.cs プロジェクト: Orbp1403/EDD_201220165
        public NodoMatriz Eliminar(EncabezadoFila enf, EncabezadosColumna enc, int fila, char columna)
        {
            NodoMatriz aux = null;

            if (enf.ExisteFila(fila) != null && enc.ExisteEncabezadoColuma(columna) != null)
            {
                aux = enf.ExisteFila(fila).cont;
                while (aux != null && aux.columna != columna)
                {
                    aux = aux.siguiente;
                }
                NodoMatriz anterior = aux.anterior;  //puntero al nodo que esta en la columna anterior
                NodoMatriz sig      = aux.siguiente; //puntero al nodo que esta en la columna siguiente
                NodoMatriz arriba   = aux.arriba;    //puntero al nodo que esta en la fila anterior
                NodoMatriz abajo    = aux.abajo;     //puntero al nodo que esta en la fila siguiente
                if (anterior == null && sig == null)
                {
                    enf.EliminarEncabezadoFila(fila);
                }
                else if (anterior == null)
                {
                    enf.ExisteFila(fila).cont = sig;
                    aux.siguiente             = null;
                    sig.anterior = null;
                }
                else if (sig == null)
                {
                    anterior.siguiente = null;
                    aux.anterior       = null;
                }
                else
                {
                    anterior.siguiente = sig;
                    sig.anterior       = anterior;
                    aux.siguiente      = null;
                    aux.anterior       = null;
                }
                if (arriba == null && abajo == null)
                {
                    enc.EliminarEncabezadoColumna(columna);
                }
                else if (arriba == null)
                {
                    enc.ExisteEncabezadoColuma(columna).cont = abajo;
                    aux.abajo    = null;
                    abajo.arriba = null;
                }
                else if (abajo == null)
                {
                    arriba.abajo = null;
                    aux.arriba   = null;
                }
                else
                {
                    arriba.abajo = abajo;
                    abajo.arriba = arriba;
                    aux.arriba   = null;
                    aux.abajo    = null;
                }
            }
            return(aux);
        }
コード例 #13
0
 public NodoEncabezado(int pid, NodoMatriz pcont)
 {
     this.id        = pid;
     this.cont      = pcont;
     this.siguiente = null;
 }
コード例 #14
0
        void GraficarEncabezadosFilaVivos(EncabezadoFila enfila, int nivel)
        {
            if (enfila.GetPrimero() != null)
            {
                int            cont     = 0;
                NodoEncabezado auxiliar = enfila.GetPrimero();
                string         anterior;
                while (auxiliar != null)
                {
                    sw.Write("{rank = same\n");

                    anterior = "";
                    NodoMatriz auxiliarcontenido = auxiliar.cont;
                    while (auxiliarcontenido != null)
                    {
                        if (auxiliarcontenido.vidad != 0)
                        {
                            if (anterior == "")
                            {
                                sw.Write("ef" + auxiliar.Get_Id() + nivel + "[label = \"Numero de fila: " + auxiliar.Get_Id() + "\"];\n");
                                sw.Write("c" + auxiliarcontenido.fila + auxiliarcontenido.columna + nivel + "[label = \"Fila: " + auxiliarcontenido.fila + "\\nColumna: " + auxiliarcontenido.columna + "\\nUnidad: " + auxiliarcontenido.idunidad + "\\nJugador: " + auxiliarcontenido.idjugador);
                                if (auxiliarcontenido.subir != null)
                                {
                                    sw.Write("\\nArriba: " + auxiliarcontenido.subir.fila + "," + auxiliarcontenido.subir.columna + "-" + auxiliarcontenido.subir.idunidad);
                                }
                                if (auxiliarcontenido.bajar != null)
                                {
                                    sw.Write("\\nAbajo: " + auxiliarcontenido.bajar.fila + "," + auxiliarcontenido.bajar.columna + "-" + auxiliarcontenido.bajar.idunidad);
                                }
                                sw.Write("\"];\n");
                                sw.WriteLine("ef" + auxiliar.Get_Id() + nivel + "->c" + auxiliarcontenido.fila + auxiliarcontenido.columna + nivel);
                                anterior = "c" + auxiliarcontenido.fila + auxiliarcontenido.columna + nivel;
                            }
                            else
                            {
                                sw.Write("c" + auxiliarcontenido.fila + auxiliarcontenido.columna + nivel + "[label = \"Fila: " + auxiliarcontenido.fila + "\\nColumna: " + auxiliarcontenido.columna + "\\nUnidad: " + auxiliarcontenido.idunidad + "\\nJugador: " + auxiliarcontenido.idjugador);
                                if (auxiliarcontenido.subir != null)
                                {
                                    sw.Write("\\nArriba: " + auxiliarcontenido.subir.fila + "," + auxiliarcontenido.subir.columna + "-" + auxiliarcontenido.subir.idunidad);
                                }
                                if (auxiliarcontenido.bajar != null)
                                {
                                    sw.Write("\\nAbajo: " + auxiliarcontenido.bajar.fila + "," + auxiliarcontenido.bajar.columna + "-" + auxiliarcontenido.bajar.idunidad);
                                }
                                sw.Write("\"];\n");
                                sw.WriteLine(anterior + "->c" + auxiliarcontenido.fila + auxiliarcontenido.columna + nivel);
                                sw.WriteLine("c" + auxiliarcontenido.fila + auxiliarcontenido.columna + nivel + "->" + anterior);
                                anterior = "c" + auxiliarcontenido.fila + auxiliarcontenido.columna + nivel;
                            }
                        }

                        auxiliarcontenido = auxiliarcontenido.siguiente;
                    }

                    sw.Write("}");
                    auxiliar = auxiliar.siguiente;
                    cont++;
                }

                auxiliar = enfila.GetPrimero();
                anterior = "";
                while (auxiliar != null)
                {
                    NodoMatriz auxiliarcontenido = auxiliar.cont;
                    while (auxiliarcontenido != null)
                    {
                        if (auxiliarcontenido.vidad != 0)
                        {
                            if (anterior == "")
                            {
                                anterior = "ef" + auxiliar.Get_Id() + nivel;
                            }
                            else
                            {
                                sw.WriteLine(anterior + "->ef" + auxiliar.Get_Id() + nivel);
                                anterior = "ef" + auxiliar.Get_Id() + nivel;
                            }
                            break;
                        }
                        auxiliarcontenido = auxiliarcontenido.siguiente;
                    }
                    auxiliar = auxiliar.siguiente;
                }
            }
        }
コード例 #15
0
        void GraficarEncabezadosColumnaVivos(EncabezadosColumna encolum, int nivel)
        {
            if (encolum.GetPrimero() != null)
            {
                int            cont     = 0;
                NodoEncabezado auxiliar = encolum.GetPrimero();
                sw.Write("{rank = same\n");
                while (auxiliar != null)
                {
                    NodoMatriz auxiliarcontenido = auxiliar.cont;
                    while (auxiliarcontenido != null)
                    {
                        if (auxiliarcontenido.vidad != 0)
                        {
                            sw.WriteLine("ec" + auxiliar.Get_Id() + nivel + "[label = \"Numero de columna: " + (char)auxiliar.Get_Id() + "\"];\n");
                            break;
                        }
                        auxiliarcontenido = auxiliarcontenido.abajo;
                    }

                    auxiliar = auxiliar.siguiente;
                    cont++;
                }
                sw.Write("}\n");

                auxiliar = encolum.GetPrimero();
                string anterior = "";
                while (auxiliar != null)
                {
                    NodoMatriz auxiliarcontenido = auxiliar.cont;
                    while (auxiliarcontenido != null)
                    {
                        if (auxiliarcontenido.vidad != 0)
                        {
                            if (anterior == "")
                            {
                                anterior = "ec" + auxiliar.Get_Id() + nivel;
                            }
                            else
                            {
                                sw.WriteLine(anterior + "->ec" + auxiliar.Get_Id() + nivel);
                                anterior = "ec" + auxiliar.Get_Id() + nivel;
                            }
                            break;
                        }
                        auxiliarcontenido = auxiliarcontenido.abajo;
                    }
                    auxiliar = auxiliar.siguiente;
                }

                auxiliar = encolum.GetPrimero();
                anterior = "";
                while (auxiliar != null)
                {
                    NodoMatriz auxiliarcontenido = auxiliar.cont;
                    anterior = "";
                    while (auxiliarcontenido != null)
                    {
                        if (auxiliarcontenido.vidad != 0)
                        {
                            if (anterior == "")
                            {
                                sw.WriteLine("ec" + auxiliar.Get_Id() + nivel + "->c" + auxiliarcontenido.fila + auxiliarcontenido.columna + nivel);
                                anterior = "c" + auxiliarcontenido.fila + auxiliarcontenido.columna + nivel;
                            }
                            else
                            {
                                sw.WriteLine(anterior + "->c" + auxiliarcontenido.fila + auxiliarcontenido.columna + nivel);
                                sw.WriteLine("c" + auxiliarcontenido.fila + auxiliarcontenido.columna + nivel + "->" + anterior);
                                anterior = "c" + auxiliarcontenido.fila + auxiliarcontenido.columna + nivel;
                            }
                        }
                        auxiliarcontenido = auxiliarcontenido.abajo;
                    }

                    auxiliar = auxiliar.siguiente;
                }
            }
        }