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; } }
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; } }
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"; }
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; } }
//Constructor public NodoEncabezadoMatriz(int indice) { this.indice = indice; accesoMatriz = null; siguiente = null; anterior = null; }
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; } }
/* * 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); }
//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); }
//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); }
//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); }
//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); }
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"; }
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; } }
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); } }
//constructor public EncabezadoMatriz() { ini = null; fin = null; }