예제 #1
0
        private void GiveBirth(IPoultry femalePoultry)
        {
            RabbitProvider rabbitValidator = new RabbitProvider(femalePoultry, Date);
            int            childLength     = rabbitValidator.GetNumberOffSpring();

            for (int i = 0; i < childLength; i++)
            {
                double randomValue = _random.NextDouble();

                Poultry child = new Poultry();
                if (randomValue > RabbitConstant.FemaleBirthRate)
                {
                    child.isMale = false;
                }
                else
                {
                    child.isMale = true;
                }

                child.isPregnant  = false;
                child.BirthDate   = Date;
                child.PoultryEnum = (int)PoultryEnum.Rabbit;
                _poultryList.Add(child);
            }
        }
예제 #2
0
        private void ImpregnateTheRabbit(IPoultry femalePoultry)
        {
            RabbitProvider rabbitValidator = new RabbitProvider(femalePoultry, Date);

            if (rabbitValidator.isPregnant() == true)
            {
                femalePoultry.isPregnant    = true;
                femalePoultry.PregnancyDate = Date;
            }
        }
예제 #3
0
 public Burrito(IngredientFactory ingredientFactory)
 {
     _poultry     = ingredientFactory.GetPoultry();
     _meat        = ingredientFactory.GetMeat();
     _vegetation  = ingredientFactory.GetVegetation();
     _cheese      = ingredientFactory.GetCheese();
     _guacomole   = ingredientFactory.GetGuacomole();
     _rice        = ingredientFactory.GetRice();
     _beans       = ingredientFactory.GetBeans();
     _creamCheese = ingredientFactory.GetCreamCheese();
     _tomato      = ingredientFactory.GetTomato();
     _chili       = ingredientFactory.GetChili();
 }
예제 #4
0
        private void Mating(List <IPoultry> femalePoultryList, List <IPoultry> malePoultryList)
        {
            foreach (IPoultry femalePoultry in femalePoultryList)
            {
                //Önce dişi tavşanın çiftleşme kurallarına uyup uymadığına bakıyorum
                RabbitProvider rabbitValidator = new RabbitProvider(femalePoultry, Date);
                if (rabbitValidator.isCanMate())
                {
                    //Burada eş olan erkek tavşanı buluyorum.
                    IPoultry male = GetWillingToMateMaleRabbit(malePoultryList);


                    ImpregnateTheRabbit(femalePoultry);
                }
            }
        }
예제 #5
0
        //Sıradaki dişi tavşana karşı en istekli erkek tavşanı alıyorum.
        private IPoultry GetWillingToMateMaleRabbit(List <IPoultry> malePoultryList)
        {
            IPoultry most       = null;
            double   mostDesire = CommonConstant._zero;

            foreach (IPoultry malePoultry in malePoultryList)
            {
                double desire = _random.NextDouble();

                if (desire >= mostDesire)
                {
                    RabbitProvider rabbitValidatorForMaleRabbit = new RabbitProvider(malePoultry, Date);
                    //Erkek tavşanın çiftleşme kurallarına uyuyormu
                    if (rabbitValidatorForMaleRabbit.isCanMate())
                    {
                        most = malePoultry;
                    }
                }
            }

            return(most);
        }
예제 #6
0
 public RabbitProvider(IPoultry poultry, DateTime time)
 {
     _poultry = poultry;
     _time    = time;
 }