static void Main(string[] args) { Random rnd = new Random(); int filas; int columnas; int tiempo_simulacion; //datos que ingresa el usuario Console.WriteLine("Indique la configuracion inicial: "); Console.WriteLine("Indique el tamaño del mapa:"); Console.Write("Filas: "); string filasS = Console.ReadLine(); int.TryParse(filasS, out filas); while (filas.ToString() != filasS) { Console.Write("Numero de filas invalido \nFilas: "); filasS = Console.ReadLine(); int.TryParse(filasS, out filas); } Console.Write("Columnas: "); string columnasS = Console.ReadLine(); int.TryParse(columnasS, out columnas); while (columnas.ToString() != columnasS) { Console.Write("Numero de columnas invalido \nColumnas: "); columnasS = Console.ReadLine(); int.TryParse(columnasS, out columnas); } Controlador controlador = new Controlador(); Bitmons bitmons = new Bitmons(); Mapa mapa = new Mapa(); mapa.GenerarMapa(filas, columnas); bitmons.Spawn(mapa); Console.WriteLine("Configuracion inicial del mapa:"); controlador.generarMapas(mapa, bitmons); Console.ReadKey(); Console.Write("Periodo de tiempo en meses de la simulacion: "); string tiempo_simulacionS = Console.ReadLine(); int.TryParse(tiempo_simulacionS, out tiempo_simulacion); while (tiempo_simulacion.ToString() != tiempo_simulacionS) { Console.Write("Periodo de tiempo invalido \n Periodo de tiempo en meses de la simulacion: "); tiempo_simulacionS = Console.ReadLine(); int.TryParse(tiempo_simulacionS, out tiempo_simulacion); } //for de la simulacion //Ent no se pueden reproducir, cada 3 meses aparece uno //bitmon permanece un mes en un terreno con el cual tiene debilidad, entonces su tiempo de vida - 2 meses, en otro caso - 1 mes for (int meses = 1; meses <= tiempo_simulacion; meses++) { Console.WriteLine("-----------------------------"); Console.WriteLine($"Simulacion mes {meses}"); //Ent no se pueden reproducir, cada 3 meses aparece uno if (meses % 3 == 0) { Bitmon bitmon = new Bitmon("Ent"); bool a = true; while (a) { int fila = rnd.Next(0, columnas + 1); int colun = rnd.Next(0, filas + 1); if (bitmons.bitmons_simulacion[colun, fila].Count() < 2) { bitmons.bitmons_simulacion[colun, fila].Add(bitmon); bitmons.bitmons_s.Add(bitmon); a = false; } else { continue; } } } for (int i = 0; i < filas; i++) { for (int j = 0; j < columnas; j++) { if (bitmons.bitmons_simulacion[i, j].Count() == 2) { Bitmon b1 = bitmons.bitmons_simulacion[i, j][0]; Bitmon b2 = bitmons.bitmons_simulacion[i, j][1]; if (b1.rivalidad.Contains(b2.especie)) { bitmons.Peleas(b1, b2); } else { bitmons.Relaciones(b1, b2, filas, columnas); } } } } controlador.Entorno(mapa, bitmons); bitmons.Bithalla(); bitmons.movimientos(mapa); controlador.generarMapas(mapa, bitmons); Console.ReadKey(); } Console.WriteLine("-----------------------------"); //tiempo vida promedio de bitmon double suma_tvida = 0; double total = Convert.ToDouble(bitmons.bitmons_simulacion.Length); foreach (Bitmon bitmon in bitmons.bitmons_s) { suma_tvida += bitmon.TiempoVida; } double TiempoVidaPromedio_Bit = suma_tvida / total; Console.WriteLine("Tiempo de vida promedio de los Bitmons: " + Convert.ToString(TiempoVidaPromedio_Bit)); Console.WriteLine("-----------------------------"); //tiempo de vida promedio de cada especie de bitmon float suma_tvida_taplan = 0, suma_tvida_wetar = 0, suma_tvida_gofue = 0, suma_tvida_dorvalo = 0, suma_tvida_doti = 0, suma_tvida_ent = 0; float total_taplan = 0, total_wetar = 0, total_gofue = 0, total_dorvalo = 0, total_doti = 0, total_ent = 0; foreach (Bitmon bitmon in bitmons.bitmons_s) { if (bitmon.especie == "Taplan") { suma_tvida_taplan += bitmon.TiempoVida; total_taplan += 1; } if (bitmon.especie == "Wetar") { suma_tvida_wetar += bitmon.TiempoVida; total_wetar += 1; } if (bitmon.especie == "Gofue") { suma_tvida_gofue += bitmon.TiempoVida; total_gofue += 1; } if (bitmon.especie == "Dorvalo") { suma_tvida_dorvalo += bitmon.TiempoVida; total_dorvalo += 1; } if (bitmon.especie == "Doti") { suma_tvida_doti += bitmon.TiempoVida; total_doti += 1; } if (bitmon.especie == "Ent") { suma_tvida_ent += bitmon.TiempoVida; total_ent += 1; } else { continue; } } Console.WriteLine("Tiempo de vida promedio de los Taplan: " + Convert.ToString(suma_tvida_taplan / total_taplan)); Console.WriteLine("Tiempo de vida promedio de los Wetar: " + Convert.ToString(suma_tvida_wetar / total_wetar)); Console.WriteLine("Tiempo de vida promedio de los Gofue: " + Convert.ToString(suma_tvida_gofue / total_gofue)); Console.WriteLine("Tiempo de vida promedio de los Dorvalo: " + Convert.ToString(suma_tvida_dorvalo / total_dorvalo)); Console.WriteLine("Tiempo de vida promedio de los Doti: " + Convert.ToString(suma_tvida_doti / total_doti)); Console.WriteLine("Tiempo de vida promedio de los Ent: " + Convert.ToString(suma_tvida_ent / total_ent)); Console.WriteLine("-----------------------------"); //tasa natalidad cada especie double hijos_taplan = 0, hijos_wetar = 0, hijos_gofue = 0, hijos_dorvalo = 0, hijos_doti = 0, hijos_ent = 0; foreach (Bitmon bitmon in bitmons.bitmons_s) { if (bitmon.especie == "Taplan") { if (bitmon.Hijos != 0) { hijos_taplan += Convert.ToDouble(bitmon.Hijos); } } if (bitmon.especie == "Wetar") { if (bitmon.Hijos != 0) { hijos_wetar += Convert.ToDouble(bitmon.Hijos); } } if (bitmon.especie == "Gofue") { if (bitmon.Hijos != 0) { hijos_gofue += Convert.ToDouble(bitmon.Hijos); } } if (bitmon.especie == "Dorvalo") { if (bitmon.Hijos != 0) { hijos_dorvalo += Convert.ToDouble(bitmon.Hijos); } } if (bitmon.especie == "Doti") { if (bitmon.Hijos != 0) { hijos_doti += Convert.ToDouble(bitmon.Hijos); } } if (bitmon.especie == "Ent") { if (bitmon.Hijos != 0) { hijos_ent += Convert.ToDouble(bitmon.Hijos); } } else { continue; } } Console.WriteLine("Tasa natalidad de los Taplan: " + Convert.ToString((hijos_taplan / total) * 100)); Console.WriteLine("Tasa natalidad de los Wetar: " + Convert.ToString((hijos_wetar / total) * 100)); Console.WriteLine("Tasa natalidad de los Gofue: " + Convert.ToString((hijos_gofue / total) * 100)); Console.WriteLine("Tasa natalidad de los Dorvalo: " + Convert.ToString((hijos_dorvalo / total) * 100)); Console.WriteLine("Tasa natalidad de los Doti: " + Convert.ToString((hijos_doti / total) * 100)); Console.WriteLine("Tasa natalidad de los Ent: " + Convert.ToString((hijos_ent / total) * 100)); Console.WriteLine("-----------------------------"); //tasa mortalidad cada especie double muertos_taplan = 0, muertos_wetar = 0, muertos_gofue = 0, muertos_dorvalo = 0, muertos_doti = 0, muertos_ent = 0; double total_bithalla = Convert.ToDouble(bitmons.bithalla.Count()); foreach (Bitmon bitmon in bitmons.bithalla) { if (bitmon.especie == "Taplan") { muertos_taplan += 1; } if (bitmon.especie == "Wetar") { muertos_wetar += 1; } if (bitmon.especie == "Gofue") { muertos_gofue += 1; } if (bitmon.especie == "Dorvalo") { muertos_dorvalo += 1; } if (bitmon.especie == "Doti") { muertos_doti += 1; } if (bitmon.especie == "Ent") { muertos_ent += 1; } else { continue; } } Console.WriteLine("Tasa mortalidad de los Taplan: " + Convert.ToString((muertos_taplan / total) * 100)); Console.WriteLine("Tasa mortalidad de los Wetar: " + Convert.ToString((muertos_wetar / total) * 100)); Console.WriteLine("Tasa mortalidad de los Gofue: " + Convert.ToString((muertos_gofue / total) * 100)); Console.WriteLine("Tasa mortalidad de los Dorvalo: " + Convert.ToString((muertos_dorvalo / total) * 100)); Console.WriteLine("Tasa mortalidad de los Doti: " + Convert.ToString((muertos_doti / total) * 100)); Console.WriteLine("Tasa mortalidad de los Ent: " + Convert.ToString((muertos_ent / total) * 100)); Console.WriteLine("-----------------------------"); //cantidad hijos en promedio por especie Console.WriteLine("Cantidad hijos en promedio de los Taplan: " + Convert.ToString((hijos_taplan / total_taplan) / 100)); Console.WriteLine("Cantidad hijos en promedio de los Wetar: " + Convert.ToString((hijos_wetar / total_wetar) / 100)); Console.WriteLine("Cantidad hijos en promedio Gofue: " + Convert.ToString((hijos_gofue / total_gofue) / 100)); Console.WriteLine("Cantidad hijos en promedio de los Dorvalo: " + Convert.ToString((hijos_dorvalo / total_dorvalo) / 100)); Console.WriteLine("Cantidad hijos en promedio de los Doti: " + Convert.ToString((hijos_doti / total_doti) / 100)); Console.WriteLine("Cantidad hijos en promedio de los Ent: " + Convert.ToString((hijos_ent / total_ent) / 100)); Console.WriteLine("-----------------------------"); //listado especies extintas List <string> extintas = new List <string>(); if (total_taplan == 0) { extintas.Add("Taplan"); } if (total_wetar == 0) { extintas.Add("Wetar"); } if (total_gofue == 0) { extintas.Add("Gofue"); } if (total_dorvalo == 0) { extintas.Add("Dorvalo"); } if (total_doti == 0) { extintas.Add("Doti"); } if (total_ent == 0) { extintas.Add("Ent"); } Console.WriteLine("Las especies extintas: "); foreach (string especie in extintas) { Console.WriteLine(especie); } Console.WriteLine("-----------------------------"); //descripcion poblacion de Bitmons en bithalla (cantidad de cada especie, %) Console.WriteLine("Descripcion Taplan en bithalla: " + "cantidad: " + Convert.ToString(muertos_taplan) + Convert.ToString((muertos_taplan / total_bithalla) * 100)); Console.WriteLine("Descripcion Wetar en bithalla: " + "cantidad: " + Convert.ToString(muertos_wetar) + Convert.ToString((muertos_wetar / total_bithalla) * 100)); Console.WriteLine("Descripcion Gofue en bithalla: " + "cantidad: " + Convert.ToString(muertos_gofue) + Convert.ToString((muertos_gofue / total_bithalla) * 100)); Console.WriteLine("Descripcion Dorvalo en bithalla: " + "cantidad: " + Convert.ToString(muertos_dorvalo) + Convert.ToString((muertos_dorvalo / total_bithalla) * 100)); Console.WriteLine("Descripcion Doti en bithalla: " + "cantidad: " + Convert.ToString(muertos_doti) + Convert.ToString((muertos_doti / total_bithalla) * 100)); Console.WriteLine("Descripcion Ent en bithalla: " + "cantidad: " + Convert.ToString(muertos_ent) + Convert.ToString((muertos_ent / total_bithalla) * 100)); Console.WriteLine("-----------------------------"); Console.ReadKey(); }
//retorna el multiplicador del bitmon public double Atacar(Bitmon bitmon1, Bitmon bitmon2) { double multiplicador = 1; //multiplicador varia por especie if (bitmon1.especie == "Taplan") { if (bitmon2.especie == "Wetar") { multiplicador = 1.5; } if (bitmon2.especie == "Gofue") { multiplicador = 1.15; } } if (bitmon1.especie == "Wetar") { if (bitmon2.especie == "Taplan") { multiplicador = 1.1; } if (bitmon2.especie == "Gofue") { multiplicador = 2; } if (bitmon2.especie == "Dorvalo") { multiplicador = 0.2; } } if (bitmon1.especie == "Gofue") { if (bitmon2.especie == "Taplan") { multiplicador = 2; } if (bitmon2.especie == "Wetar") { multiplicador = 0.8; } } if (bitmon1.especie == "Dorvalo") { if (bitmon2.especie == "Wetar") { multiplicador = 3; } if (bitmon2.especie == "Ent") { multiplicador = 1; } } if (bitmon1.especie == "Doti") { if (bitmon2.especie == "Ent") { multiplicador = 2.2; } } if (bitmon1.especie == "Ent") { if (bitmon1.especie == "Doti") { multiplicador = 1; } if (bitmon2.especie == "Dorvalo") { multiplicador = 1.3; } } else { multiplicador = 1; } return(multiplicador); }