public static Bunny CreateBunny(Color color)
        {
            Bunny bunny;

            //Create the bunny with the random color
            bunny = new Bunny(color);

            //[Male/Female] [Black/Brown/Spotted/White] Bunny [Name] Was born!
            //Console.WriteLine(bunny.BunnySex + " " + bunny.BunnyColor + " Bunny " + bunny.BunnyName + " Was born!");
            return(bunny);
        }
        public static Bunny CreateBunny()
        {
            Bunny bunny;
            Color randomColor;

            //Create the bunny with the random color
            randomColor = GenerateRandomBunnyColor();
            bunny       = new Bunny(randomColor);

            return(bunny);
        }
        public static Bunny CreateBunny(Sex bunnySex)
        {
            Bunny bunny;
            Color randomColor;

            //Create the bunny with the random color
            randomColor = GenerateRandomBunnyColor();
            bunny       = new Bunny(bunnySex, randomColor);

            //[Male/Female] [Black/Brown/Spotted/White] Bunny [Name] Was born!
            //Console.WriteLine(bunny.BunnySex + " " + bunny.BunnyColor + " Bunny " + bunny.BunnyName + " Was born!");
            return(bunny);
        }
        /// <summary>
        /// Simulate one year on the hill
        /// </summary>
        public void RunAYear()
        {
            HashSet <Bunny> deadBunniesList = new HashSet <Bunny>();

            for (int i = 0; i < _bunniesList.Count; i++)
            {
                Bunny curBunny = _bunniesList.ElementAt(i);
                //Make each bunny a year older
                curBunny.GrowAYear();

                //Check if a bunny is too old
                if (curBunny.Age > LIFESPAN)
                {
                    //If the bunny's life is over, the bunny is added to the dead bunnies list :(
                    deadBunniesList.Add(curBunny);
                }
            }
            //Remove all the dead bunnies
            foreach (Bunny bunny in deadBunniesList)
            {
                this._bunniesList.Remove(bunny);
            }

            /*Mate the bunnies to create new bunnies*/
            IEnumerable <Bunny> maleAdultBunnies   = this.GetMaleAdultBunnies();
            IEnumerable <Bunny> femaleAdultBunnies = this.GetFemaleAdultBunnies();
            ICollection <Bunny> newBunniesList     = new HashSet <Bunny>();

            foreach (Bunny fatherBunny in maleAdultBunnies)
            {
                foreach (Bunny motherBunny in femaleAdultBunnies)
                {
                    Color motherColor = motherBunny.BunnyColor;
                    Bunny babyBunny   = BunnyCreator.CreateBunny(motherColor);
                    this._bunniesList.Add(babyBunny);
                    newBunniesList.Add(babyBunny);
                }
            }

            //Print the current state
            this.UpdateBunniesCount();
            Console.WriteLine("There are " + this._maleBunniesCount + " male bunnies, " + this._femaleBunniesCount + " female bunnies (total of " + this._bunniesList.Count + " bunnies).");
            foreach (Bunny bunny in deadBunniesList)
            {
                Console.WriteLine("Bunny " + bunny.BunnyName + " died :(");
            }
            foreach (Bunny bunny in newBunniesList)
            {
                Console.WriteLine("Bunny " + bunny.BunnyName + " was born!");
            }
        }
        /// <summary>
        /// Create the the initial state of the hill.
        /// </summary>
        public Hill()
        {
            this._maleBunniesCount   = 0;
            this._femaleBunniesCount = 0;

            this._bunniesList = new HashSet <Bunny>();

            //Create the initial male bunnies
            for (int i = 0; i < MALE_INITIAL_POPULATION; i++)
            {
                Bunny maleBunny = BunnyCreator.CreateBunny(Sex.Male);
                _bunniesList.Add(maleBunny);
            }

            //Create the initial female bunnies
            for (int i = 0; i < FEMALE_INITIAL_POPULATION; i++)
            {
                Bunny femaleBunny = BunnyCreator.CreateBunny(Sex.Female);
                _bunniesList.Add(femaleBunny);
            }
        }