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); }
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(); } }