public bool moverUnidad(String nombre, int x, int y, String nickname) { Matriz m = encontrarMatriz(nombre); NodoMatriz n = null; if (m != null) { n = m.getNodo(nombre); } if (n != null) { int mx = x - n.Columna; int my = y - n.Fila; int r = Math.Abs(mx) + Math.Abs(my); if (n.Nave.Movimiento >= r && m.getNodo(y, x) == null && n.Nave.Mover == 0 && n.Nave.Nickname.Equals(nickname)) { m.Eliminar(nombre); matriz.Insertar(y, x, nombre, n.Nave.Nickname); n.Nave.Mover = 1; consola = consola + nickname + ": movio a la unidad " + nombre + ". \n "; return(true); } else { return(false); } } else { return(false); } }
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 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); }