Example #1
0
 public void MoveSimulantToDeadPopulation(Simulant simulant)
 {
     _ = simulant.Gender == Simulant.Genders.Female ?
         AliveFemale.Remove(simulant) :
         AliveMale.Remove(simulant);
     Dead.Add(simulant);
 }
Example #2
0
        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);
            }
        }
Example #3
0
 public void AddSimulantToAlivePopulation(Simulant simulant)
 {
     if (simulant.Gender == Simulant.Genders.Female)
     {
         AliveFemale.Add(simulant);
     }
     else
     {
         AliveMale.Add(simulant);
     }
 }
Example #4
0
        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);
            }
        }
Example #5
0
        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);
                }
            }
        }
Example #6
0
        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));
        }
Example #7
0
        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);
        }