public void MoveSimulantToDeadPopulation(Simulant simulant) { _ = simulant.Gender == Simulant.Genders.Female ? AliveFemale.Remove(simulant) : AliveMale.Remove(simulant); Dead.Add(simulant); }
public Simulant(Simulant parentFemale, Simulant parentMale, Population population) { MyPopulation = population; ParentFemale = parentFemale; ParentMale = parentMale; Children = new List <Simulant>(0); TimeOfConception = Simulator.Time; TimeOfBirth = Generators.GenerateBirthTime(TimeOfConception); TimeOfDeath = Generators.GenerateDeathTime(TimeOfConception); Gender = Generators.GenerateGender(); Name = Generators.GenerateName(this); AlertnessLevel = 33; AwakenessLevel = 33; EngagementLevel = 33; IQLevel = Generators.GenerateIQLevel(); if (parentFemale != null) { parentFemale.Children.Add(this); } if (parentMale != null) { parentMale.Children.Add(this); } }
public void AddSimulantToAlivePopulation(Simulant simulant) { if (simulant.Gender == Simulant.Genders.Female) { AliveFemale.Add(simulant); } else { AliveMale.Add(simulant); } }
public void MoveAllEligibleSimulantsToDeadPopulation() { List <Simulant> newlyDeadSimulants = AliveFemale.Where(sim => sim.HealthStage == Simulant.HealthStages.Dead).Union( AliveMale.Where(sim => sim.HealthStage == Simulant.HealthStages.Dead)).ToList(); foreach (Simulant simulant in newlyDeadSimulants) { MoveSimulantToDeadPopulation(simulant); Simulant.AfterKill(simulant); } }
public Population(int initialPopulationSize) { if (initialPopulationSize < 100) { initialPopulationSize = 100; } if (initialPopulationSize > 10000) { initialPopulationSize = 10000; } God = new Simulant(null, null, this); Jesus = new Simulant(God, God, this); Adam = new Simulant(Jesus, Jesus, this); Eve = new Simulant(Jesus, Jesus, this); AliveFemale = new List <Simulant>(initialPopulationSize * 100); AliveMale = new List <Simulant>(initialPopulationSize * 100); Dead = new List <Simulant>(initialPopulationSize * 1000); while (Adam.Gender == Simulant.Genders.Female) { Adam = new Simulant(Jesus, Jesus, this); } while (Eve.Gender == Simulant.Genders.Male) { Eve = new Simulant(Jesus, Jesus, this); } for (int i = 0; i < initialPopulationSize; i++) { Simulant initialSimulant = new Simulant(Eve, Adam, this); if (initialSimulant.Gender == Simulant.Genders.Female) { AliveFemale.Add(initialSimulant); } else { AliveMale.Add(initialSimulant); } } }
public static Name GenerateName(Simulant simulant) { string first = simulant.Gender == Simulant.Genders.Female ? FirstNamesFemale[Random.Next(FirstNamesFemale.Length)] : FirstNamesMale [Random.Next(FirstNamesMale.Length)]; if (simulant.ParentFemale == null || simulant.ParentMale == null) { return(new Name(first, GetNewLastNameFromPool())); } string last = Random.NextDouble() < 13 / 18 ? simulant.ParentMale.Name.LastName : simulant.ParentFemale.Name.LastName; last = Random.NextDouble() < 1 / 300 ? GetNewLastNameFromPool() : last; return(new Name(first, last)); }
static void Main() { Population population = new Population(500); WriteTime(); while (Simulator.Time < 2020 * TimeCard.TicksInYear) { Simulator.StartEvent(Simulator.YearlyEvents.AdvanceTime); Simulant randomFemale = population.AliveFemale.ElementAt(Generators.Random.Next(population.AliveFemale.Count)); Simulant randomMale = population.AliveMale.ElementAt(Generators.Random.Next(population.AliveMale.Count)); Simulant resultingSimulant = Simulant.Conceive(randomFemale, randomMale, population); if (resultingSimulant != null) { population.AddSimulantToAlivePopulation(resultingSimulant); } if (Simulator.Time % TimeCard.TicksInYear == 0) { population.MoveAllEligibleSimulantsToDeadPopulation(); } } List <Simulant> DeadFemales = population.Dead.Where(sim => sim.Gender == Simulant.Genders.Female).ToList(); List <Simulant> DeadMales = population.Dead.Where(sim => sim.Gender == Simulant.Genders.Male).ToList(); List <Simulant> Omnipotent = population.Dead.Where(sim => sim.IQ == Simulant.IQs.Omnipotent).ToList(); List <Simulant> Savant = population.Dead.Where(sim => sim.IQ == Simulant.IQs.Savant).ToList(); List <Simulant> Genious = population.Dead.Where(sim => sim.IQ == Simulant.IQs.Genious).ToList(); List <Simulant> VeryHigh = population.Dead.Where(sim => sim.IQ == Simulant.IQs.VeryHigh).ToList(); List <Simulant> High = population.Dead.Where(sim => sim.IQ == Simulant.IQs.High).ToList(); List <Simulant> Normal = population.Dead.Where(sim => sim.IQ == Simulant.IQs.Normal).ToList(); List <Simulant> SlightlyRetarded = population.Dead.Where(sim => sim.IQ == Simulant.IQs.SlightlyRetarded).ToList(); List <Simulant> Retarded = population.Dead.Where(sim => sim.IQ == Simulant.IQs.Retarded).ToList(); List <Simulant> SeverelyRetarded = population.Dead.Where(sim => sim.IQ == Simulant.IQs.SeverelyRetarded).ToList(); WriteTime(); Environment.Exit(420); }