martes, 17 de septiembre de 2013

¿Cómo descontar los puntos de vida en un ataque acertado?

Otro problema se nos presentó cuando al momento que el servidor o el cliente atacaba y me acertaba en la localización del barco el descuento de puntos para saber cuando ganó y cuando perdió. A la vez igual si por una u otra razón el cliente presionaba donde ya acertó los puntos no deberían ser disminuidos solo en el primer acierto se debieron bajar los puntos.

Esto se logró mediante una función booleana la cual nos permitirá chequear si el barco atacado fue o no fue herido, así como también si ya acerté en el barco y presiono en la misma posición los barcos no pierdan más puntos de vida.

Esta función del tipo booleana se la llamó Disparo.

  //Esta funcion permite comprobar si el disparo golpeo un barco
        public bool Disparo(int x, int y)
        {
            //creamos un tipo punto
            Point p = new Point(picPosicion.Location.X + (x * 30), picPosicion.Location.Y + (y * 30));
            //hacemos un foreach para buscar entre los barcos
            foreach (Barco barco in barcos)
            {
                //Cargamos la propiedad Puntos, para hacer la comprobacion
                Point[] valor = barco.Puntos;
                //hacemos un foreach dentro del arreglo anteriormente obtenido
                foreach (Point p2 in valor)
                {
                    //Comprobamos si los puntos son iguales
                    if (p2 == p)
                    {
                        //Esto comprobamos que no sea en el mismo punto el golpe
                        int i = 0;
                        foreach (Point punto in barco.PuntosGolpe)
                        {
                            if (punto == p)
                            {
                                i++;
                            }
                        }
                        //Si no se ha dado anteriormente un golpe se disminuye los puntos de vida
                        if (i == 0)
                        {
                            MessageBox.Show("Te Golpearon", "Peligro", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                            barco.PuntosVida--;
                            barco.PuntosGolpe.Add(p);
                        }
                        return true;
                    }
                }
            }
            return false;
        }


No hay comentarios:

Publicar un comentario