/*Funcion que se encara de crear la matriz que se ocupara dentro del juego. * Recibe como parametro: * Terreno: Es donde se guardara la matri del juego. * Vt: Es la vista donde se encuentra el panel donde se ubicara la matriz de juego.*/ public Terreno createBoard(Terreno terreno, VistaTerreno vt) { this.vt = vt; Random r = new Random(); this.terreno = terreno; int x = 25; int y = 25; for (int i = 0; i < terreno.InfoTablero[0]; i++) { for (int j = 0; j < terreno.InfoTablero[1]; j++) { Casilla casilla = new Casilla(i, j, false, null); casilla.Location = new Point(x, y); casilla.Click += new EventHandler(vt.acciones); terreno.Casilla[i, j] = casilla; vt.panelTablero.Controls.Add(casilla); x += 35; } x = 25; y += 35; } return(terreno); }
// Metodos: /* Metodo que se encarga de realizar el ataque: * Recibe como parametro: * CasillaMia: Corresponde a la casilla seleccionada de donde se encuentre el barco con el cual quiere * realizar el ataque. * CasillaEnem: Corresponde a la casilla a la que se le efectuara el ataque * Terreno: Es donde se realizaran las modificaciones al momento de generar el disparo.*/ public int ataque(Casilla casillaMia, Casilla casillaEnem, Terreno terreno) { this.casillaMia = casillaMia; // Se instacia el servicio, con le fin de podr utilzaro para ir actulizando el puntaje del usuario. Service1Client servicio = new Service1Client(); if (bandera2) {//ver las armas. if (casillaEnem.Estado) { terreno.Casilla[casillaEnem.Fila, casillaEnem.Columna].Barco.Vida--; if (terreno.Casilla[casillaEnem.Fila, casillaEnem.Columna].Barco.Vida == 0) { comp.CantidadBarcos--; terreno.Casilla[casillaEnem.Fila, casillaEnem.Columna].Estado = false; MessageBox.Show("Equipo " + terreno.Casilla[casillaEnem.Fila, casillaEnem.Columna].Barco.Nombre + "derrotado"); terreno.Casilla[casillaEnem.Fila, casillaEnem.Columna].Image = Image.FromFile("..\\..\\Imagenes\\gol.png"); terreno.Casilla[casillaEnem.Fila, casillaEnem.Columna].ImageAlign = ContentAlignment.TopCenter; bandera1 = false; vt.comprobarGanador(comp, jugador); if (terreno.Casilla[casillaMia.Fila, casillaMia.Columna].Barco.Arma == "Normal") { puntajeUsu = puntajeUsu + 1000; jugador.Puntaje = puntajeUsu; vt.labelPuntajeUsuario.Text = puntajeUsu.ToString(); /* Este linea que sigue acontinuacio se encarga de ir actualizando el puntaje que se encuentra * en la tabala de usuario del jugador, tener encuentra que lo hace de manera asincronina, ademas * de hacerla cada ves que se realiza una jugada con algun exito, ya sea que derroto al barco o * derribo cierta parte de el*/ servicio.actualizarPuntajeAsync(puntajeUsu, jugador.Nombre); } else if (terreno.Casilla[casillaMia.Fila, casillaMia.Columna].Barco.Arma == "TiroRapido") { puntajeUsu = puntajeUsu + 1250; MessageBox.Show("El equipo" + terreno.Casilla[casillaMia.Fila, casillaMia.Columna].Barco.Nombre + "ataco con la arma *TiroRapido* otorga un bonus de 250 de puntaje!!"); jugador.Puntaje = puntajeUsu; vt.labelPuntajeUsuario.Text = puntajeUsu.ToString(); /* Este linea que sigue acontinuacio se encarga de ir actualizando el puntaje que se encuentra * en la tabala de usuario del jugador, tener encuentra que lo hace de manera asincronina, ademas * de hacerla cada ves que se realiza una jugada con algun exito, ya sea que derroto al barco o * derribo cierta parte de el*/ servicio.actualizarPuntajeAsync(puntajeUsu, jugador.Nombre); } else if (terreno.Casilla[casillaMia.Fila, casillaMia.Columna].Barco.Arma == "Chilena") { puntajeUsu = puntajeUsu + 1500; MessageBox.Show("El equipo" + terreno.Casilla[casillaMia.Fila, casillaMia.Columna].Barco.Nombre + "la arma *Chilena* otorga un bonus de 500 de puntaje!!"); jugador.Puntaje = puntajeUsu; vt.labelPuntajeUsuario.Text = puntajeUsu.ToString(); /* Este linea que sigue acontinuacio se encarga de ir actualizando el puntaje que se encuentra * en la tabala de usuario del jugador, tener encuentra que lo hace de manera asincronina, ademas * de hacerla cada ves que se realiza una jugada con algun exito, ya sea que derroto al barco o * derribo cierta parte de el*/ servicio.actualizarPuntajeAsync(puntajeUsu, jugador.Nombre); } playCp(terreno, casillaEnem); terreno.Casilla[casillaEnem.Fila, casillaEnem.Columna].Barco = null; return(2); } else { casillaMia.Barco.Municion--; bandera1 = false; terreno.Casilla[casillaEnem.Fila, casillaEnem.Columna].Estado = false; terreno.Casilla[casillaEnem.Fila, casillaEnem.Columna].Image = Image.FromFile("..\\..\\Imagenes\\gol.png"); terreno.Casilla[casillaEnem.Fila, casillaEnem.Columna].ImageAlign = ContentAlignment.TopCenter; MessageBox.Show("Barco enemigo atacado"); if (terreno.Casilla[casillaMia.Fila, casillaMia.Columna].Barco.Arma == "Normal") { puntajeUsu = puntajeUsu + 1000; jugador.Puntaje = puntajeUsu; vt.labelPuntajeUsuario.Text = puntajeUsu.ToString(); /* Este linea que sigue acontinuacio se encarga de ir actualizando el puntaje que se encuentra * en la tabala de usuario del jugador, tener encuentra que lo hace de manera asincronina, ademas * de hacerla cada ves que se realiza una jugada con algun exito, ya sea que derroto al barco o * derribo cierta parte de el*/ servicio.actualizarPuntajeAsync(puntajeUsu, jugador.Nombre); } else if (terreno.Casilla[casillaMia.Fila, casillaMia.Columna].Barco.Arma == "TiroRapido") { puntajeUsu = puntajeUsu + 1250; MessageBox.Show("El equipo" + terreno.Casilla[casillaMia.Fila, casillaMia.Columna].Barco.Nombre + "la arma *TiroRapido* otorga un bonus de 250 de puntaje!!"); jugador.Puntaje = puntajeUsu; vt.labelPuntajeUsuario.Text = puntajeUsu.ToString(); /* Este linea que sigue acontinuacio se encarga de ir actualizando el puntaje que se encuentra * en la tabala de usuario del jugador, tener encuentra que lo hace de manera asincronina, ademas * de hacerla cada ves que se realiza una jugada con algun exito, ya sea que derroto al barco o * derribo cierta parte de el*/ servicio.actualizarPuntajeAsync(puntajeUsu, jugador.Nombre); } else if (terreno.Casilla[casillaMia.Fila, casillaMia.Columna].Barco.Arma == "Chilena") { puntajeUsu = puntajeUsu + 1500; MessageBox.Show("El equipo" + terreno.Casilla[casillaMia.Fila, casillaMia.Columna].Barco.Nombre + "la arma *Chilena* otorga un bonus de 500 de puntaje!!"); jugador.Puntaje = puntajeUsu; vt.labelPuntajeUsuario.Text = puntajeUsu.ToString(); /* Este linea que sigue acontinuacio se encarga de ir actualizando el puntaje que se encuentra * en la tabala de usuario del jugador, tener encuentra que lo hace de manera asincronina, ademas * de hacerla cada ves que se realiza una jugada con algun exito, ya sea que derroto al barco o * derribo cierta parte de el*/ servicio.actualizarPuntajeAsync(puntajeUsu, jugador.Nombre); } playCp(terreno, casillaEnem); terreno.Casilla[casillaEnem.Fila, casillaEnem.Columna].Barco = null; terreno.Casilla[casillaEnem.Fila, casillaEnem.Columna].Atacado = true; return(1); } } else { MessageBox.Show("La casilla esta vacia"); casillaMia.Barco.Municion--; terreno.Casilla[casillaEnem.Fila, casillaEnem.Columna].Image = Image.FromFile("..\\..\\Imagenes\\nada.png"); terreno.Casilla[casillaEnem.Fila, casillaEnem.Columna].ImageAlign = ContentAlignment.TopCenter; playCp(terreno, casillaEnem); bandera1 = false; terreno.Casilla[casillaEnem.Fila, casillaEnem.Columna].Atacado = true; return(0); } } else { return(0); } }
/*Funcion que realiza el ataque enemigo dentro de la matriz. * Recibe como parametro: * Terreno: Variable en la cual contiene la matriz de juego y es donde se realizaran las modificaciones al * momento de efectuar el ataque. * CasillaEnem: Casilla enemiga que selecciono el usario para realizar el ataque */ public void playCp(Terreno terreno, Casilla casillaEnem) { int barcoAtaque; int ataqueFila; int ataqueColumna; Random e = new Random(); for (int i = 0; i < 1; i++) { /*/ Se obtiene a traves de un random el barco con el cual se va a realizar el ataque ademas * de las coordenadas de donde se va a realizar el atque de la computadora*/ barcoAtaque = e.Next(comp.CantidadBarcos); ataqueFila = e.Next(((terreno.InfoTablero[0] / 2) + 1), terreno.InfoTablero[0]); ataqueColumna = e.Next(terreno.InfoTablero[1]); Console.WriteLine("fila : {0} ---- columna : {1}", ataqueFila, ataqueColumna); if (terreno.Casilla[ataqueFila, ataqueColumna].Atacado != true) { if (terreno.Casilla[ataqueFila, ataqueColumna].Estado) { terreno.Casilla[ataqueFila, ataqueColumna].Barco.Vida--; if ((terreno.Casilla[ataqueFila, ataqueColumna].Barco.Vida) == 0) { MessageBox.Show("Computador derroto a " + terreno.Casilla[ataqueFila, ataqueColumna].Barco.Nombre); comp.barcos[barcoAtaque].Municion--; jugador.BarcosActuales--; terreno.Casilla[ataqueFila, ataqueColumna].Image = Image.FromFile("..\\..\\Imagenes\\gol.png"); terreno.Casilla[ataqueFila, ataqueColumna].ImageAlign = ContentAlignment.TopCenter; terreno.Casilla[ataqueFila, ataqueColumna].Estado = false; vt.comprobarGanador(comp, jugador); bandera2 = false; if ((comp.Barcos[barcoAtaque].Arma == "Normal")) { puntajeCom = puntajeCom + 1000; comp.Puntaje = puntajeCom; vt.labelPuntajeCompu.Text = puntajeCom.ToString(); } else if ((comp.Barcos[barcoAtaque].Arma == "TiroRapido")) { puntajeCom = puntajeCom + 1250; MessageBox.Show("El equipo" + comp.Barcos[barcoAtaque].Nombre + "ataco con la arma *TiroRapido* otorga un bonus de 250 de puntaje!!"); comp.Puntaje = puntajeCom; vt.labelPuntajeCompu.Text = puntajeCom.ToString(); } else if ((comp.Barcos[barcoAtaque].Arma == "Chilena")) { puntajeCom = puntajeCom + 1500; MessageBox.Show("El equipo" + comp.Barcos[barcoAtaque].Nombre + "ataco con la arma *Chilena* otorga un bonus de 500 de puntaje!!"); comp.Puntaje = puntajeCom; vt.labelPuntajeCompu.Text = puntajeCom.ToString(); } terreno.Casilla[ataqueFila, ataqueColumna].Barco = null; terreno.Casilla[ataqueFila, ataqueColumna].Atacado = true; Console.WriteLine(terreno.Casilla[ataqueFila, ataqueColumna].Atacado); } else { MessageBox.Show("Disparo a " + terreno.Casilla[ataqueFila, ataqueColumna].Barco.Nombre); comp.barcos[barcoAtaque].Municion--; terreno.Casilla[ataqueFila, ataqueColumna].Image = Image.FromFile("..\\..\\Imagenes\\gol.png"); terreno.Casilla[ataqueFila, ataqueColumna].ImageAlign = ContentAlignment.TopCenter; terreno.Casilla[ataqueFila, ataqueColumna].Barco = null; terreno.Casilla[ataqueFila, ataqueColumna].Estado = false; bandera2 = false; if ((comp.Barcos[barcoAtaque].Arma == "Normal")) { puntajeCom = puntajeCom + 1000; comp.Puntaje = puntajeCom; vt.labelPuntajeCompu.Text = puntajeCom.ToString(); } else if ((comp.Barcos[barcoAtaque].Arma == "TiroRapido")) { puntajeCom = puntajeCom + 1250; MessageBox.Show("El equipo" + comp.Barcos[barcoAtaque].Nombre + "ataco con la arma *TiroRapido* otorga un bonus de 250 de puntaje!!"); comp.Puntaje = puntajeCom; vt.labelPuntajeCompu.Text = puntajeCom.ToString(); } else if ((comp.Barcos[barcoAtaque].Arma == "Chilena")) { puntajeCom = puntajeCom + 1500; MessageBox.Show("El equipo" + comp.Barcos[barcoAtaque].Nombre + "ataco con la arma *Chilena* otorga un bonus de 500 de puntaje!!"); comp.Puntaje = puntajeCom; vt.labelPuntajeCompu.Text = puntajeCom.ToString(); } terreno.Casilla[ataqueFila, ataqueColumna].Atacado = true; Console.WriteLine(terreno.Casilla[ataqueFila, ataqueColumna].Atacado); } } else { comp.barcos[barcoAtaque].Municion--; terreno.Casilla[ataqueFila, ataqueColumna].Image = Image.FromFile("..\\..\\Imagenes\\nada.png"); terreno.Casilla[ataqueFila, ataqueColumna].ImageAlign = ContentAlignment.TopCenter; bandera2 = false; terreno.Casilla[ataqueFila, ataqueColumna].Atacado = true; Console.WriteLine(terreno.Casilla[ataqueFila, ataqueColumna].Atacado); MessageBox.Show("Disparo fallido del enemigo"); } } else { i--; } } }