예제 #1
0
        private void ResimularBatalla(object sender, EventArgs e)
        {
            int victorias         = 0;
            int empates           = 0;
            int derrotas          = 0;
            int restantesAtacante = 0;
            int restantesDefensor = 0;

            for (int contador = 0; contador < 100; contador++)
            {
                Batalla resultadoBatalla = Batalla.SimularBatalla((int)numericUpDownEx1.Value,
                                                                  (int)numericUpDownEx4.Value, (int)numericUpDownEx2.Value, (int)numericUpDownEx3.Value);

                if (resultadoBatalla.Resultado == Batalla.ResultadoBatalla.GanaAtacante)
                {
                    victorias++;
                }
                else if (resultadoBatalla.Resultado == Batalla.ResultadoBatalla.GanaDefensor)
                {
                    derrotas++;
                }
                else//Empate
                {
                    empates++;
                }

                restantesAtacante += resultadoBatalla.RestanteAtacante;
                restantesDefensor += resultadoBatalla.RestanteDefensor;
            }

            if (victorias > derrotas && victorias > empates)
            {
                label6.Text = "Gana el atacante\r\nNaves restantes: " + Math.Round(restantesAtacante / 100d);
            }
            else if (derrotas > victorias && derrotas > empates)
            {
                label6.Text = "Gana el defensor\r\nNaves restantes: " + Math.Round(restantesDefensor / 100d);
            }
            else//Empate
            {
                label6.Text = "Empate\r\nNaves restantes del atacante: " + Math.Round(restantesAtacante / 100d) +
                              "\r\nNaves restantes del defensor: " + Math.Round(restantesDefensor / 100d);
            }

            label6.Text += "\r\n\r\n" + victorias + "% de victorias." +
                           "\r\n" + derrotas + "% de derrotas." +
                           "\r\n" + empates + "% de empates.";
        }
예제 #2
0
        private void ResultadoBatalla(Cliente jugador, Flota flota)
        {
            Batalla res = Batalla.SimularBatalla(flota.Naves, flota.TecnologiaMilitar, flota.Destino.Naves,
                                                 flota.Destino.TecnologiaMilitar);

            DifundirMensaje(71,
                            string.Format(
                                "La batalla en el planeta '{0}' entre '{1}' y '{2}' ha terminado en '{3}'. Naves iniciales del atacante: '{4}'. Naves iniciales del defensor: '{5}'. Naves restantes del atacante: '{6}'. Naves restantes del defensor: '{7}'.",
                                flota.Destino.Name, jugador.Nombre,
                                flota.Destino.Dueño == null ? string.Empty : flota.Destino.Dueño.Nombre,
                                (int)res.Resultado, flota.Naves, flota.Destino.Naves, res.RestanteAtacante, res.RestanteDefensor));

            if (res.Resultado == Batalla.ResultadoBatalla.Empate)
            {
                flota.Destino.Naves = res.RestanteDefensor;

                //Enviar las naves restantes a casa
                if (res.RestanteAtacante > 0)
                {
                    Flota retorno = new Flota();
                    retorno.Origen            = flota.Destino;
                    retorno.Destino           = flota.Origen;
                    retorno.TecnologiaMilitar = flota.TecnologiaMilitar;
                    retorno.Naves             = res.RestanteAtacante;

                    retorno.Distancia    = Cliente.CalcularDistancia(retorno.Origen, retorno.Destino);
                    retorno.RondaSalida  = ronda;
                    retorno.RondaLlegada = (ronda + (int)Math.Round(retorno.Distancia));
                    jugador.Flotas.Add(retorno);
                }
            }
            else if (res.Resultado == Batalla.ResultadoBatalla.GanaDefensor) //Defendido
            {
                flota.Destino.Naves = res.RestanteDefensor;
            }
            else //Gana el atacante
            {
                flota.Destino.Naves = res.RestanteAtacante;
                flota.Destino.Dueño = jugador;
            }

            if (flota.Destino.Naves == 0)
            {
                flota.Destino.Naves = 1;
            }
        }