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); } } }
//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); }