/*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);
        }
Exemple #2
0
        /*Funcion que se encarga de verificar si una posicion se encuentra en estado disponible o no.
         * Recibe como parametro:
         * Fila y columna: Son las coordenadas de la casilla que se quiere verificar su estado.
         * Terreno: Es donde se quiere verificar el estado de la casilla.*/
        public bool comprobarPos(int fila, int columna, Terreno terreno)
        {
            this.terreno = terreno;

            if (terreno.Casilla[fila, columna].Estado)
            {
                return(false);
            }
            else
            {
                return(true);
            }
        }
 /*Funcion que realiza el llamado para posicionar los barcos del enemigo dentro de la matriz de juego
  * Recibe como parametro:
  * Terreno: Es donde se almacena la matriz de jueg y donde se colocaran los barcos del enemigo.
  * Computador: Es donde esta el enemigo con los barcos que fueron seleccionados al azar para esta partida
  * ademas de contener cada una de las posiciones de sus barcos.*/
 public void posicionarBarcos(Pnj computador, Terreno terreno)
 {
     this.terreno = terreno;
     this.comp    = computador;
     for (int i = 0; i < comp.barcos.Length; i++)
     {
         if (barco.colocarPos(comp.barcos[i], comp, this.terreno))
         {
         }
         else
         {
             i--;
         }
     }
     comp.Terreno = this.terreno;
 }
        /*Funcion que se encarga de actulizar el tablero y ocultar los barcos del enemigo, es la ultima actualizacion
         * del tablero antes de comenzar la partida
         * Recibe como parametro:
         * Terreno: Es donde se encuentra almacenada la matriz que se utilizara para el juego.*/
        public void actualizarTablero(Terreno terreno)
        {
            int mitadTablero = (terreno.InfoTablero[0] / 2);

            for (int i = 0; i < terreno.InfoTablero[0]; i++)
            {
                for (int j = 0; j < terreno.InfoTablero[1]; j++)
                {
                    if (mitadTablero > i)
                    {
                        terreno.Casilla[i, j].Image      = Image.FromFile("..\\..\\Imagenes\\casilla.png");
                        terreno.Casilla[i, j].ImageAlign = ContentAlignment.TopCenter;
                    }
                }
            }
        }
        /*Fucion que verfiica si el tablero creado es valido para ser utilizado en una partida
         * Recibe como parametro:
         * Terreno: Variable donde se encuentra la matriz que se genero.*/
        public bool checkBoard(Terreno terreno)
        {
            int largoTerreno;

            largoTerreno = (terreno.InfoTablero[0] / 2) * terreno.InfoTablero[1];

            if (terreno.InfoTablero[0] % 2 == 0)
            {
                if (comp.largoBarcosTotal < largoTerreno)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                return(false);
            }
        }
        /*Funcion que se encarga de colocar las imagenes de los barcos que se encuentran dentro de la matriz
         * ademas de colocar pasto si la casilla esta desocupada y tambien hacer la verificacion en la mitad del
         * terreno, para que se puede diferenciar el terreno de cada uno de los jugadores.
         * Recibe como parametro:
         * Terreno: Es el terreno al cual se el colocaran las imagenes.
         * Computador: Es el usuario enemigo que esta dentro de la partida.*/
        public Terreno verImagen(Terreno terreno, Pnj Computador)
        {
            this.terreno = terreno;
            this.comp    = Computador;

            for (int i = 0; i < terreno.InfoTablero[0]; i++)
            {
                for (int j = 0; j < terreno.InfoTablero[1]; j++)
                {
                    if (comp.Terreno.Casilla[i, j].Estado)
                    {
                        if ((terreno.InfoTablero[0] / 2 <= i))
                        {
                            terreno.Casilla[i, j].Image      = Image.FromFile(comp.Terreno.Casilla[i, j].Barco.Imagen);
                            terreno.Casilla[i, j].ImageAlign = ContentAlignment.TopCenter;
                        }
                        else
                        {
                            terreno.Casilla[i, j].Image      = Image.FromFile("..\\..\\Imagenes\\casilla.png");
                            terreno.Casilla[i, j].ImageAlign = ContentAlignment.TopCenter;
                        }
                    }

                    else if (i == (terreno.InfoTablero[0] / 2))
                    {
                        terreno.Casilla[i, j].Image = Image.FromFile("..\\..\\Imagenes\\banda.png");
                    }

                    else
                    {
                        terreno.Casilla[i, j].Image      = Image.FromFile("..\\..\\Imagenes\\casilla.png");
                        terreno.Casilla[i, j].ImageAlign = ContentAlignment.TopCenter;
                    }
                }
            }
            comp.Terreno = terreno;
            // MessageBox.Show("Ha escogido le nivel " + terreno.Nivel + "que se conforma de" + terreno.InfoTablero[2].ToString() + "barcos enemigos");
            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--;
                }
            }
        }
        /*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;
                }
            }
        }
Exemple #10
0
        /* 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);
            }
        }