/// <summary> /// Muestra en consola lo que se debe mostrar entre turnos. /// </summary> public void MuestraStats() { Console.Clear(); Console.ForegroundColor = ConsoleColor.White; float BuenoPct = GetPctBuenos(); // Escribir máxima puntuación y mínima. //Console.ForegroundColor = Pool[0].Jug.clr; Console.WriteLine("Máxima: {0} - {1}\nSobrevivir: {2}", Individuos [0].Punt, Individuos [0].Indiv, MinSobrevivir); if (Individuos [0].Indiv.Genética.Esbueno()) { Console.Write(" Bueno"); } if (MostrarVengativo && Individuos [0].Indiv.Genética.EsVengativo(IteracionesPorEncuentro)) { Console.Write(" Vengativo"); } Console.WriteLine(); Console.WriteLine("% buenos: " + BuenoPct); Console.WriteLine("% sexuales: " + (float)Individuos.FindAll(x => x.Indiv.Genética.ReplicaSexual).Count / Individuos.Count); Console.WriteLine(); // Escribir el pool foreach (var x in Individuos) { //Console.ForegroundColor = x.Jug.clr; if (x.Indiv.Genética.Esbueno()) { Console.ForegroundColor = ConsoleColor.Blue; } else { Console.ForegroundColor = ConsoleColor.White; } Console.Write(string.Format("{0} ", x.Indiv.ToString())); } Console.WriteLine(); Console.WriteLine("La Genepool:"); ContadorGen Pool = CuentaGen(); int MaxGen = 5; foreach (var x in Pool.OrderByDescending(x => x.Value)) { MaxGen--; if (MaxGen >= 0) { Console.ForegroundColor = x.Key.Esbueno() ? ConsoleColor.Blue : ConsoleColor.White; Console.WriteLine(string.Format("{0}\t {1}", x.Key, x.Value)); } } }
/// <summary> /// Devuelve la genpool con peso. /// </summary> /// <returns>The gen.</returns> public ContadorGen CuentaGen() { ContadorGen ret = new ContadorGen(); foreach (var x in Individuos) { foreach (var y in x.Indiv.CuentaGen()) { ret [y.Key] += y.Value; } } return(ret); }
/// <summary> /// Crea un diccionario con la información cualitativa de sus subgenes. /// </summary> /// <returns>Un ContadorGen (listapeso) con la información de apariencias de cada subgen.</returns> /// <param name="Hereditario">Si es true, la búsqueda se hace recusrivamente. /// Si el false, lo hace sólo un paso.</param> public override ContadorGen CuentaGen(bool Hereditario = true) { ContadorGen ret = new ContadorGen(); ret [this] += 1; foreach (var x in _Genes) { if (Hereditario) { foreach (var y in x.CuentaGen(true)) { ret [y.Key] += y.Value; } } else { ret [x] += 1; } } return(ret); }