private Matriz encontrarMatriz(String nombre) { Matriz m = matriz; if (nombre.ToLower().Contains("submarino")) { m = m.Anterior; } else if (nombre.ToLower().Contains("caza") || nombre.ToLower().Contains("bombardero") || nombre.ToLower().Contains("helicoptero")) { m = m.Siguiente; } else if (m.Siguiente != null && nombre.ToLower().Contains("neosatelite")) { m = m.Siguiente.Siguiente; } return(m); }
private Matriz generarNuevaMatriz(String nick) { Matriz m = new Matriz(1); if (matriz.Anterior != null) { Encabezado fila = matriz.Anterior.Filas.Cabeza; while (fila != null) { NodoMatriz n = fila.Acceso; while (n != null) { if (n.Nave.Nickname.Equals(nick)) { m.Insertar(n.Fila, n.Columna, n.Nave.Nombre, nick); } n = n.Derecha; } fila = fila.Siguiente; } } return(m); }
public void reiniciarMatriz() { matriz = new Matriz(1); partidaActiva = false; }
public String atacarUnidad(String nombre, int columna, int fila, String nickname, int nivel) { String resultado = ""; String receptor; if (nickname.Equals(jugador1)) { receptor = jugador2; } else { receptor = jugador1; } Matriz m = encontrarMatriz(nombre); NodoMatriz atacante = null; if (m != null) { atacante = m.getNodo(nombre); } m = matriz; if (nivel == 0) { m = m.Anterior; } else if (nivel == 2) { m = m.Siguiente; } else if (nivel == 3 && m.Siguiente != null) { m = m.Siguiente.Siguiente; } NodoMatriz victima = null; if (m != null) { victima = m.getNodo(fila, columna); } if (atacante != null && victima != null && String.Compare(atacante.Nave.Nickname, victima.Nave.Nickname) != 0 && String.Compare(atacante.Nave.Nickname, nickname) == 0 && atacante.Nave.Atacar == 0) { int rango = Math.Abs(atacante.Fila - fila) + Math.Abs(atacante.Columna - columna); if (rango <= atacante.Nave.Alcance) { if (nombre.ToLower().Contains("fragata")) { if (rango >= 2 && rango <= 6) { atacante.Nave.Atacar = 1; victima.Nave.Vida = victima.Nave.Vida - atacante.Nave.Daño; if (victima.Nave.Vida <= 0) { m.Eliminar(victima.Nave.Nombre); resultado = victima.Nave.Nombre; historial.Insertar(columna, fila, nombre, 0, victima.Nave.Nombre, nickname, receptor, DateTime.Today.ToString(), tiempo2, 0); consola = consola + nickname + ": ataco a la unidad " + victima.Nave.Nombre + ". \n"; } else { resultado = "1," + victima.Nave.Nombre; consola = consola + nickname + ": derrivo a la unidad " + victima.Nave.Nombre + ". \n"; historial.Insertar(columna, fila, nombre, 1, victima.Nave.Nombre, nickname, receptor, DateTime.Today.ToString(), tiempo2, 0); } } else { resultado = "error"; } } else if (nombre.ToLower().Contains("bombardero") || nombre.ToLower().Contains("neosatelite")) { if (atacante.Abajo == victima) { atacante.Nave.Atacar = 1; victima.Nave.Vida = victima.Nave.Vida - atacante.Nave.Daño; if (victima.Nave.Vida <= 0) { m.Eliminar(victima.Nave.Nombre); resultado = victima.Nave.Nombre; historial.Insertar(columna, fila, nombre, 0, victima.Nave.Nombre, nickname, receptor, DateTime.Today.ToString(), tiempo2, 0); } else { resultado = "1," + victima.Nave.Nombre; historial.Insertar(columna, fila, nombre, 1, victima.Nave.Nombre, nickname, receptor, DateTime.Today.ToString(), tiempo2, 0); } } else { resultado = "error"; } } else { atacante.Nave.Atacar = 1; victima.Nave.Vida = victima.Nave.Vida - atacante.Nave.Daño; if (victima.Nave.Vida <= 0) { m.Eliminar(victima.Nave.Nombre); resultado = victima.Nave.Nombre; historial.Insertar(columna, fila, nombre, 0, victima.Nave.Nombre, nickname, receptor, DateTime.Today.ToString(), tiempo2, 0); } else { resultado = "1," + victima.Nave.Nombre; historial.Insertar(columna, fila, nombre, 1, victima.Nave.Nombre, nickname, receptor, DateTime.Today.ToString(), tiempo2, 0); } } } else { resultado = "error"; } } else { resultado = "error"; } return(resultado); }
public Byte[] MatrizGrafo(int nivel, String nick) { Matriz m = matriz; if (m.Nivel != nivel) { if (nivel == 0) { if (nick.Equals("")) { m = m.Anterior; } else { m = generarNuevaMatriz(nick).Anterior; } } else if (nivel >= 2) { m = m.Siguiente; while (m != null) { if (m.Nivel == nivel) { break; } m = m.Siguiente; } } } if (m != null) { dot = "digraph Matriz{\n rankdir=UD;\n node[shape=box];\n {\n rank=min;\n m[label=\"Matriz " + m.Nivel.ToString() + "\"];\n"; Encabezado column = m.Columnas.Cabeza; while (column != null) { dot = dot + "Y" + column.Id.ToString() + "[label=\"" + Convert.ToChar(column.Id).ToString() + "\",rankdir=LR];\n"; column = column.Siguiente; } dot = dot + "}\n"; Encabezado f = m.Filas.Cabeza; NodoMatriz n; while (f != null) { dot = dot + "{\n rank=same;\n X" + f.Id.ToString() + "[label=\"" + f.Id.ToString() + "\"]\n"; n = f.Acceso; while (n != null) { dot = dot + "F" + n.Fila.ToString() + "_C" + Convert.ToChar(n.Columna).ToString() + "[label=\"Nombre: " + n.Nave.Nombre + "--Vida: " + n.Nave.Vida.ToString() + "\"]\n"; n = n.Derecha; } dot = dot + "}\n"; f = f.Siguiente; } //ENLACES COLUMNAS column = m.Columnas.Cabeza; if (column != null) { dot = dot + "m->Y" + column.Id.ToString() + ";\n"; while (column.Siguiente != null) { dot = dot + "Y" + column.Id.ToString() + "->Y" + column.Siguiente.Id.ToString() + ";\n"; dot = dot + "Y" + column.Siguiente.Id.ToString() + "->Y" + column.Id.ToString() + ";\n"; column = column.Siguiente; } column = m.Columnas.Cabeza; while (column != null) { dot = dot + "Y" + column.Id.ToString() + "->F" + column.Acceso.Fila.ToString() + "_C" + Convert.ToChar(column.Id).ToString() + ";\n"; column = column.Siguiente; } } //ENLACES FILAS f = m.Filas.Cabeza; if (f != null) { dot = dot + "m->X" + f.Id.ToString() + "[rankdir=UD];\n"; while (f.Siguiente != null) { dot = dot + "X" + f.Id.ToString() + "->X" + f.Siguiente.Id.ToString() + "[rankdir=UD];\n"; dot = dot + "X" + f.Siguiente.Id.ToString() + "->X" + f.Id.ToString() + "[rankdir=UD];\n"; f = f.Siguiente; } f = m.Filas.Cabeza; while (f != null) { n = f.Acceso; dot = dot + "X" + f.Id.ToString() + "->F" + f.Id.ToString() + "_C" + Convert.ToChar(n.Columna).ToString() + "[constraint=false];\n"; while (n.Derecha != null) { dot = dot + "F" + n.Fila.ToString() + "_C" + Convert.ToChar(n.Columna).ToString() + "->F" + n.Derecha.Fila.ToString() + "_C" + Convert.ToChar(n.Derecha.Columna).ToString() + "[constraint=false];\n"; dot = dot + "F" + n.Derecha.Fila.ToString() + "_C" + Convert.ToChar(n.Derecha.Columna).ToString() + "->F" + n.Fila.ToString() + "_C" + Convert.ToChar(n.Columna).ToString() + "[constraint=false];\n"; n = n.Derecha; } f = f.Siguiente; } } dot = dot + "}\n"; TextWriter t = new StreamWriter(@"C:\GrafosEDD\grafoMatriz.dot"); t.WriteLine(dot); t.Close(); } Byte[] a = new Byte[0]; String comando = "\"C:/Program Files (x86)/Graphviz2.38/bin/dot.exe\" -Tpng C:\\GrafosEDD\\grafoMatriz.dot -o C:\\GrafosEDD\\grafoMatriz.png"; var procStartInfo = new System.Diagnostics.ProcessStartInfo("cmd.exe", "/c" + comando); var proc = new System.Diagnostics.Process { StartInfo = procStartInfo }; proc.Start(); proc.WaitForExit(); FileStream foto = new FileStream("C:\\GrafosEDD\\grafoMatriz.png", FileMode.OpenOrCreate, FileAccess.ReadWrite); a = new Byte[foto.Length]; BinaryReader reader = new BinaryReader(foto); a = reader.ReadBytes(Convert.ToInt32(foto.Length)); foto.Close(); return(a); }
public void reiniciarMatriz() { matriz = new Matriz(1); }