Esempio n. 1
0
        public void AddDaisy(Color col)
        {
            int   index = emptySlots.Pop();
            Daisy daisy = Daisies[index];

            daisy.Color   = col;
            daisy.IsAlive = true;
            IncrementCounter(col);
        }
Esempio n. 2
0
        public void KillDaisy(int index)
        {
            Daisy daisy = Daisies[index];

            daisy.IsAlive = false;

            emptySlots.Push(index);
            DecrementCounter(daisy.Color);
        }
Esempio n. 3
0
        public World(IConstants constants)
        {
            Constants = constants;

            Temperature = Constants.DEFAULT_TEMPERATURE;

            Daisies = new Daisy[Constants.DAISY_COUNT];
            for (int i = 0; i < Constants.DAISY_COUNT; i++)
            {
                Color col = Randomizer.GetRandomBool() ? Color.Black : Color.White;
                IncrementCounter(col);
                Daisies[i] = new Daisy()
                {
                    Index = i, Color = col, IsAlive = true, Constants = constants
                };
            }

            emptySlots = new Stack <int>(Constants.DAISY_COUNT);
        }
Esempio n. 4
0
        private void Expose()
        {
            for (int i = 0; i < Constants.DAISY_COUNT; i++)
            {
                Daisy daisy = world.Daisies[i];

                if (!daisy.IsAlive)
                {
                    continue;
                }

                double expositionTemp = world.Temperature + Randomizer.GetNormalOffset() + daisy.TemperatureOffset;

                if (!IsSurvivable(expositionTemp))
                {
                    logger.AddKill(daisy.Color);
                    world.KillDaisy(i);
                    continue;
                }
            }
        }