/*Este metodo se encarga de generar un objeto barco de nive 1. * Recibe como parametro: * r : Representa el numero del barco con el cual se va a crear.*/ public Barco barcoDebil(int r) { Barco barco = new Barco(); if (r == 0) { barco.nombre = "UniversidadDeConcepcion"; barco.arma = "Normal"; barco.vida = 1; barco.municion = 100; barco.nivel = 1; barco.imagen = "..\\..\\Imagenes\\conce.png"; } else if (r == 1) { barco.nombre = "SantiagoWanders"; barco.arma = "Normal"; barco.vida = 1; barco.municion = 100; barco.nivel = 1; barco.imagen = "..\\..\\Imagenes\\santiago.png"; } else if (r == 2) { barco.nombre = "Everton"; barco.arma = "Normal"; barco.vida = 1; barco.municion = 100; barco.nivel = 1; barco.imagen = "..\\..\\Imagenes\\everton.png"; } return(barco); }
/* Se declara un contructor que contiene todo los datos que ingresa el usuario, al momento de pasar la vista * que solicta la totalidad de los datos.*/ public Terreno(Jugador jugador, int fila, int columna, int numBarcoUsuario, int numBarcoEnemigo, String nivel, string equipoPreferido, Pnj computador, int tiempoo, VistaTerreno vt) { this.vt = vt; this.jugador = jugador; this.comp = computador; this.time = tiempoo; this.infoTablero = new int[4]; this.infoTablero[0] = fila; this.infoTablero[1] = columna; this.infoTablero[2] = numBarcoUsuario; this.infoTablero[3] = numBarcoEnemigo; this.cantBarcosTerreno = numBarcoUsuario; this.nivel = nivel; this.equipoPreferido = equipoPreferido; casilla = new Casilla[fila, columna]; listaGeneral = new List <Barco>(); jefeUsuario = barco.jefeBarco(0, this.EquipoPreferido); jugador.Barcos[0] = jefeUsuario; listaGeneral.Add(jugador.Barcos[0]); for (int i = 0; i < 3; i++) { Barco aux = barco.barcoDebil(i); Barco aux1 = barco.barcoNormales(i); listaGeneral.Add(aux); listaGeneral.Add(aux1); } }
//contructor de la clase, ademas se encarga de guardar los barcos con los cuales jugara. public Pnj(int cantBarcos, string nivel, string equipoPreferido) { this.cantBarcos = cantBarcos; barcos = new Barco[cantBarcos]; Barco jefe = new Barco(); // composicion jefe = jefe.jefeBarcoN(equipoPreferido); barcos[0] = jefe; for (int i = 1; i < cantBarcos; i++) { Random r = new Random(DateTime.Now.Millisecond); Barco barco; // agregacion Barco barcoN; // agregacion int nivelBarco = r.Next(0, 2); int numeroBarco = r.Next(0, 3); if (nivelBarco == 0) { barco = new Barco(); // composicion barco = barco.barcoDebil(numeroBarco); largoBarcosTotal = largoBarcosTotal + 1; barcos[i] = barco; } if (nivelBarco == 1) { barcoN = new Barco(); // composicion barcoN = barcoN.barcoNormales(numeroBarco); largoBarcosTotal = largoBarcosTotal + 2; barcos[i] = barcoN; } } }
/*Este metodo se encarga de generar un objeto barco jefe de nivel 3 * Recibe como parametro: * r : Representa el numero del barco con el cual se va a crear.*/ public Barco jefeBarcoN(string nombreB) { Barco barco = new Barco(); if (nombreB != "UniversidadDeChile") { barco.nombre = "UniversidadDeChile"; barco.vida = 3; barco.arma = "Chilena"; barco.municion = 50; barco.nivel = 3; barco.imagen = "..\\..\\Imagenes\\universidaddechile.png"; } if (nombreB != "UnionEspañola") { barco.nombre = "UnionEspañola"; barco.vida = 3; barco.arma = "Chilena"; barco.municion = 50; barco.nivel = 3; barco.imagen = "..\\..\\Imagenes\\union.png"; } return(barco); }
// metodos de la clase: /* Este metodo se encarga de generar un objeto barco de nive 2. * Recibe como parametro: * r : Representa el numero del barco con el cual se va a crear.*/ public Barco barcoNormales(int r) { Barco barco = new Barco(); if (r == 0) { barco.nombre = "Colocolo"; barco.vida = 2; barco.arma = "TiroRapido"; barco.municion = 75; barco.nivel = 2; barco.imagen = "..\\..\\Imagenes\\colocolo.png"; } if (r == 1) { barco.nombre = "UniversidadCatolica"; barco.vida = 2; barco.arma = "TiroRapido"; barco.municion = 75; barco.nivel = 2; barco.imagen = "..\\..\\Imagenes\\catolica.png"; } if (r == 2) { barco.nombre = "Iquique"; barco.vida = 2; barco.arma = "TiroRapido"; barco.municion = 75; barco.nivel = 2; barco.imagen = "..\\..\\Imagenes\\iquique.png"; } return(barco); }
/*Consutrctor de la clase. * Se puede observar que son asignado cada uno de los datos a la variable de la casilla, para asi despues * tener un mejor manejo de datos dentro del juego.*/ public Casilla(int fila, int columna, bool estado, Barco barco) { this.fila = fila; this.columna = columna; this.estado = estado; this.barco = barco; this.Size = new Size(35, 35); this.atacado = false; }
Terreno board; // agregacion //Contrsuctor de la clase: /* Se encarga de generar un arreglo de barcos con la cantidad de barcos que se ingreso, ademas de otorgar * el barco jefe de inmediato, ya que el barco jefe siempre sera su equipo preferido.*/ public Jugador(int cantBarcos, string equipoPreferido, string nombre) { this.Nombre = nombre; this.cantBarcos = cantBarcos; barcos = new Barco[(cantBarcos + 1)]; this.barcosActuales = 0; jefe = jefe.jefeBarco(0, equipoPreferido); barcos[0] = jefe; }
/*Funcion que se encarga de posicionar un barco en donde seleccione el usuario. * Recibe como parametro: * Fil y columna: Coordenadas de donde quiere posicionar el barco. * Estado: Condicion en la cual se encuentra la casilla que selecciono el usuario para colocar su barco * Terreno: Variable que contiene la matriz de juego y es donde se realizaran las modificaciones al momento * que se coloque un barco dentro de la matriz * Barco: Barco que el usuario escoge para colocarlo dentro de su matriz.*/ public void putShip(int fila, int columna, bool estado, Terreno terreno, Barco barco) { this.fila = fila; this.columna = columna; this.estado = estado; this.terreno = terreno; filaCp = ((terreno.InfoTablero[0] / 2)); columnaCp = (terreno.InfoTablero[1] - 1); if (terreno.Casilla[fila, columna].Estado) { } else if (fila > filaCp) { if (barco.Nivel == 1) { terreno.Casilla[fila, columna].Barco = barco; terreno.Casilla[fila, columna].estado = true; terreno.Casilla[fila, columna].Image = Image.FromFile(comp.Terreno.Casilla[fila, columna].Barco.Imagen); bandera = false; jugador.Barcos[jugador.BarcosActuales] = barco; jugador.BarcosActuales = jugador.BarcosActuales + 1; } else if (barco.Vida == 2) { if ((fila + 1) > filaCp && (fila + 1) < terreno.InfoTablero[0]) { if (terreno.Casilla[fila + 1, columna].Estado != true) { terreno.Casilla[fila, columna].Barco = barco; terreno.Casilla[fila, columna].estado = true; terreno.Casilla[fila, columna].Image = Image.FromFile(comp.Terreno.Casilla[fila, columna].Barco.Imagen); terreno.Casilla[fila + 1, columna].Barco = barco; terreno.Casilla[fila + 1, columna].estado = true; terreno.Casilla[fila + 1, columna].Image = Image.FromFile(comp.Terreno.Casilla[fila, columna].Barco.Imagen); bandera = false; jugador.Barcos[jugador.BarcosActuales] = barco; jugador.BarcosActuales = jugador.BarcosActuales + 1; } else { bandera = true; } } else if ((fila - 1) > filaCp && (fila - 1) < terreno.InfoTablero[0]) { if (terreno.Casilla[fila - 1, columna].Estado != true) { terreno.Casilla[fila, columna].Barco = barco; terreno.Casilla[fila, columna].estado = true; terreno.Casilla[fila, columna].Image = Image.FromFile(comp.Terreno.Casilla[fila, columna].Barco.Imagen); terreno.Casilla[fila - 1, columna].Barco = barco; terreno.Casilla[fila - 1, columna].estado = true; terreno.Casilla[fila - 1, columna].Image = Image.FromFile(comp.Terreno.Casilla[fila, columna].Barco.Imagen); bandera = false; jugador.Barcos[jugador.BarcosActuales] = barco; jugador.BarcosActuales = jugador.BarcosActuales + 1; } else { bandera = true; } } else if ((columna + 1) <= columnaCp && (columna + 1) < terreno.InfoTablero[1]) { if (terreno.Casilla[fila, columna + 1].Estado != true) { terreno.Casilla[fila, columna].Barco = barco; terreno.Casilla[fila, columna].estado = true; terreno.Casilla[fila, columna].Image = Image.FromFile(comp.Terreno.Casilla[fila, columna].Barco.Imagen); terreno.Casilla[fila, columna + 1].Barco = barco; terreno.Casilla[fila, columna + 1].estado = true; terreno.Casilla[fila, columna + 1].Image = Image.FromFile(comp.Terreno.Casilla[fila, columna].Barco.Imagen); bandera = false; jugador.Barcos[jugador.BarcosActuales] = barco; jugador.BarcosActuales = jugador.BarcosActuales + 1; } else { bandera = true; } } else if ((columna - 1) <= columnaCp && (columna - 1) < terreno.InfoTablero[1]) { if (terreno.Casilla[fila, columna - 1].Estado != true) { terreno.Casilla[fila, columna].Barco = barco; terreno.Casilla[fila, columna].estado = true; terreno.Casilla[fila, columna].Image = Image.FromFile(comp.Terreno.Casilla[fila, columna].Barco.Imagen); terreno.Casilla[fila, columna - 1].Barco = barco; terreno.Casilla[fila, columna - 1].estado = true; terreno.Casilla[fila, columna - 1].Image = Image.FromFile(comp.Terreno.Casilla[fila, columna].Barco.Imagen); bandera = false; jugador.Barcos[jugador.BarcosActuales] = barco; jugador.BarcosActuales = jugador.BarcosActuales + 1; } else { bandera = true; } } } else if (barco.Vida == 3) { if ((fila + 2) > filaCp && (fila + 2) < terreno.InfoTablero[0]) { if (terreno.Casilla[fila + 1, columna].Estado != true && terreno.Casilla[fila + 2, columna].Estado != true) { terreno.Casilla[fila, columna].Barco = barco; terreno.Casilla[fila, columna].estado = true; terreno.Casilla[fila, columna].Image = Image.FromFile(comp.Terreno.Casilla[fila, columna].Barco.Imagen); terreno.Casilla[fila + 1, columna].Barco = barco; terreno.Casilla[fila + 1, columna].estado = true; terreno.Casilla[fila + 1, columna].Image = Image.FromFile(comp.Terreno.Casilla[fila, columna].Barco.Imagen); terreno.Casilla[fila + 2, columna].Barco = barco; terreno.Casilla[fila + 2, columna].estado = true; terreno.Casilla[fila + 2, columna].Image = Image.FromFile(comp.Terreno.Casilla[fila, columna].Barco.Imagen); bandera = false; jugador.Barcos[jugador.BarcosActuales] = barco; jugador.BarcosActuales = jugador.BarcosActuales + 1; } else { bandera = true; } } else if ((fila - 2) > filaCp && (fila - 2) < terreno.InfoTablero[0]) { if (terreno.Casilla[fila - 1, columna].Estado != true && terreno.Casilla[fila - 2, columna].Estado != true) { terreno.Casilla[fila, columna].Barco = barco; terreno.Casilla[fila, columna].estado = true; terreno.Casilla[fila, columna].Image = Image.FromFile(comp.Terreno.Casilla[fila, columna].Barco.Imagen); terreno.Casilla[fila - 1, columna].Barco = barco; terreno.Casilla[fila - 1, columna].estado = true; terreno.Casilla[fila - 1, columna].Image = Image.FromFile(comp.Terreno.Casilla[fila, columna].Barco.Imagen); terreno.Casilla[fila - 2, columna].Barco = barco; terreno.Casilla[fila - 2, columna].estado = true; terreno.Casilla[fila - 2, columna].Image = Image.FromFile(comp.Terreno.Casilla[fila, columna].Barco.Imagen); bandera = false; jugador.Barcos[jugador.BarcosActuales] = barco; jugador.BarcosActuales = jugador.BarcosActuales + 1; } else { bandera = true; } } else if ((columna + 2) <= columnaCp && (columna + 2) < terreno.InfoTablero[1]) { if (terreno.Casilla[fila, columna + 1].Estado != true && terreno.Casilla[fila, columna + 2].Estado != true) { terreno.Casilla[fila, columna].Barco = barco; terreno.Casilla[fila, columna].estado = true; terreno.Casilla[fila, columna].Image = Image.FromFile(comp.Terreno.Casilla[fila, columna].Barco.Imagen); terreno.Casilla[fila, columna + 1].Barco = barco; terreno.Casilla[fila, columna + 1].estado = true; terreno.Casilla[fila, columna + 1].Image = Image.FromFile(comp.Terreno.Casilla[fila, columna].Barco.Imagen); terreno.Casilla[fila, columna + 2].Barco = barco; terreno.Casilla[fila, columna + 2].estado = true; terreno.Casilla[fila, columna + 2].Image = Image.FromFile(comp.Terreno.Casilla[fila, columna].Barco.Imagen); bandera = false; jugador.Barcos[jugador.BarcosActuales] = barco; jugador.BarcosActuales = jugador.BarcosActuales + 1; } else { bandera = true; } } else if ((columna - 2) <= columnaCp && (columna - 2) < terreno.InfoTablero[1] && (columna - 2) > 0) { if (terreno.Casilla[fila, columna - 1].Estado != true && terreno.Casilla[fila, columna - 2].Estado != true) { terreno.Casilla[fila, columna].Barco = barco; terreno.Casilla[fila, columna].estado = true; terreno.Casilla[fila, columna].Image = Image.FromFile(comp.Terreno.Casilla[fila, columna].Barco.Imagen); terreno.Casilla[fila, columna - 1].Barco = barco; terreno.Casilla[fila, columna - 1].estado = true; terreno.Casilla[fila, columna - 1].Image = Image.FromFile(comp.Terreno.Casilla[fila, columna].Barco.Imagen); terreno.Casilla[fila, columna - 2].Barco = barco; terreno.Casilla[fila, columna - 2].estado = true; terreno.Casilla[fila, columna - 2].Image = Image.FromFile(comp.Terreno.Casilla[fila, columna].Barco.Imagen); bandera = false; jugador.Barcos[jugador.BarcosActuales] = barco; jugador.BarcosActuales = jugador.BarcosActuales + 1; } else { bandera = true; } } } else { bandera = true; } } }
/* Este metodo se encarga de generar las posiciones a cada uno de los barcos, es decir, este metodo * otorga posiciones a todo los barcos que son generados para el enemigo. * Tener en cuenta que genera posiciones para cada barco segun sea el nivel de este. * Recibe como parametro: * Barco: El barco al cual se le quiere otorgar las posiciones que va a utilizar dentro de la matriz * Computador: Usuario oponente que esta dentro de la aplicacion * Terreno: Variabe donde se almacena la matriz del juego , ademas es la cual se le agregaran los barcos * enemigos, tambien otorgara la posibilidad de ver si la casilla esta vacio o ocupada.*/ public bool colocarPos(Barco barco, Pnj computador, Terreno terreno) { this.terreno = terreno; this.comp = computador; Random r = new Random(DateTime.Now.Millisecond); int orientacion = r.Next(0, 2); int filaCp, columnaCp; int filaBoard = ((terreno.InfoTablero[0] / 2) - 1); int columnaBoard = (terreno.InfoTablero[1] - 1); filaCp = r.Next(0, filaBoard); columnaCp = r.Next(0, columnaBoard); if (barco.Nivel == 3) { if (orientacion == 0 && ((filaCp + 2) < filaBoard) && (columnaCp <= columnaBoard) && terreno.Casilla[filaCp, columnaCp].Estado != true) { if (terreno.Casilla[(filaCp + 1), columnaCp].Estado != true && terreno.Casilla[(filaCp + 2), columnaCp].Estado != true) { terreno.Casilla[filaCp, columnaCp].Estado = true; terreno.Casilla[filaCp, columnaCp].Barco = barco; terreno.Casilla[(filaCp + 1), columnaCp].Estado = true; terreno.Casilla[(filaCp + 1), columnaCp].Barco = barco; terreno.Casilla[(filaCp + 2), columnaCp].Estado = true; terreno.Casilla[(filaCp + 2), columnaCp].Barco = barco; return(true); } else { return(false); } } else if (orientacion == 1 && (filaCp < filaBoard) && ((columnaCp + 2) <= columnaBoard) && terreno.Casilla[filaCp, columnaCp].Estado != true) { if (terreno.Casilla[filaCp, (columnaCp + 1)].Estado != true && terreno.Casilla[filaCp, (columnaCp + 2)].Estado != true) { terreno.Casilla[filaCp, columnaCp].Estado = true; terreno.Casilla[filaCp, columnaCp].Barco = barco; terreno.Casilla[filaCp, (columnaCp + 1)].Estado = true; terreno.Casilla[filaCp, (columnaCp + 1)].Barco = barco; terreno.Casilla[filaCp, (columnaCp + 2)].Estado = true; terreno.Casilla[filaCp, (columnaCp + 2)].Barco = barco; return(true); } else { return(false); } } else { return(false); } } else if (barco.Nivel == 2) { if (orientacion == 0 && ((filaCp + 1) < filaBoard) && (columnaCp <= columnaBoard)) { if (terreno.Casilla[filaCp, columnaCp].Estado != true && terreno.Casilla[(filaCp + 1), columnaCp].Estado != true) { terreno.Casilla[filaCp, columnaCp].Estado = true; terreno.Casilla[filaCp, columnaCp].Barco = barco; terreno.Casilla[(filaCp + 1), columnaCp].Estado = true; terreno.Casilla[(filaCp + 1), columnaCp].Barco = barco; return(true); } else { return(false); } } else if (orientacion == 1 && (filaCp < filaBoard) && ((columnaCp + 1) <= columnaBoard)) { if (terreno.Casilla[filaCp, columnaCp].Estado != true && terreno.Casilla[filaCp, (columnaCp + 1)].Estado != true) { terreno.Casilla[filaCp, columnaCp].Estado = true; terreno.Casilla[filaCp, columnaCp].Barco = barco; terreno.Casilla[filaCp, (columnaCp + 1)].Estado = true; terreno.Casilla[filaCp, (columnaCp + 1)].Barco = barco; return(true); } else { return(false); } } else { return(false); } } else if (barco.Nivel == 1) { if (filaCp < filaBoard) { if (terreno.Casilla[filaCp, columnaCp].Estado != true) { terreno.Casilla[filaCp, columnaCp].Estado = true; terreno.Casilla[filaCp, columnaCp].Barco = barco; return(true); } else { return(false); } } else { return(false); } } else { return(false); } }