Exemple #1
0
        public static Batalla SimularBatalla(int NavesFlota, int TecnoFlota, int NavesDestino, int TecnoDestino)
        {
            Batalla res = new Batalla();

            int PuntosAtacante = NavesFlota * (TecnoFlota + generadorAleatorios.Next(-8, 8));
            int PuntosDefensor = NavesDestino * (TecnoDestino + generadorAleatorios.Next(-8, 8));

            double porcentageSimilitud = Math.Round(100d / Math.Max(PuntosAtacante, PuntosDefensor) * Math.Min(PuntosAtacante, PuntosDefensor));

            if (porcentageSimilitud >= 75)//Empate
            {
                res.Resultado = ResultadoBatalla.Empate;
                int diferenciaPuntos = Math.Abs(PuntosAtacante - PuntosDefensor);
                res.RestanteAtacante = (PuntosAtacante - diferenciaPuntos) / TecnoFlota;
                res.RestanteDefensor = (PuntosDefensor - diferenciaPuntos) / TecnoDestino;
            }
            else if (PuntosDefensor >= PuntosAtacante)
            {
                res.Resultado        = ResultadoBatalla.GanaDefensor;
                res.RestanteDefensor = (PuntosDefensor - PuntosAtacante) / TecnoDestino;
            }
            else
            {
                res.Resultado        = ResultadoBatalla.GanaAtacante;
                res.RestanteAtacante = (PuntosAtacante - PuntosDefensor) / TecnoFlota;
            }

            return(res);
        }
Exemple #2
0
        public void Inicializar(int semilla, List <Cliente> jugadores, int colonias)
        {
            RondaActual = 0;

            this.Jugadores = jugadores;
            Semilla        = semilla;
            Neutrales      = colonias;

            this.Planetas = new List <Planeta>();
            this.Controls.Clear();

            int           jugadoresPuestos = 0;
            int           coloniasPuestos  = 0;
            Aleatorios    rand             = new Aleatorios(semilla);
            List <string> Coordenadas      = new List <string>();

            for (int contador = 0; contador < jugadores.Count + colonias; contador++)
            {
                int     tecno   = rand.Next(35, 95);
                int     prod    = 100 - tecno + rand.Next(0, 10);
                Planeta planeta = null;
                if (jugadoresPuestos < jugadores.Count)
                {
                    planeta = new Planeta(nombresBasicos[contador % nombresBasicos.Length],
                                          jugadores[jugadoresPuestos], tecno, prod, rand.Next());
                    jugadoresPuestos++;
                }
                else if (coloniasPuestos < colonias)
                {
                    planeta = new Planeta(nombresBasicos[contador % nombresBasicos.Length], null, tecno, prod, rand.Next());
                    coloniasPuestos++;
                }
                if (planeta != null)
                {
                    planeta.MouseHover += new EventHandler(planeta_MouseHover);
                    planeta.MouseLeave += new EventHandler(planeta_MouseLeave);
                    planeta.Click      += new EventHandler(planeta_Click);

DeNuevo:
                    int columna = rand.Next(0, 15);
                    int    fila        = rand.Next(0, 15);
                    string coordenadas = columna + ":" + fila;
                    if (Coordenadas.IndexOf(coordenadas) != -1)
                    {
                        goto DeNuevo;
                    }
                    planeta.Localizacion = columna + ":" + fila;
                    Planetas.Add(planeta);
                    Coordenadas.Add(coordenadas);
                }
            }

            if (ModoGrafico)
            {
                Redimensionar();

                foreach (Planeta pl in Planetas)
                {
                    this.Controls.Add(pl);
                }

                Redimensionar();
            }
        }