Beispiel #1
0
        /*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);
        }
Beispiel #2
0
        // 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);
            }
        }
Beispiel #3
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--;
                }
            }
        }