コード例 #1
0
 /**
  * @param $person1 Person
  * @param $person2 Person
  * @return Person
  */
 public static function crossover($person1, $person2)
 {
     $child = new Person();
     if (Algorithm::hasMutation()) {
         $child->setEyesColor(new EyesColor(EyesColor::MARK_BLUE));
         $child->setHairColor(new HairColor(HairColor::MARK_BLONDE));
         $child->setSkinColor(new SkinColor(0));
         $child->setIsMutant(true);
     } else {
         $child->setEyesColor(Algorithm::getDominant($person1->getEyesColor(), $person2->getEyesColor()));
         $child->setHairColor(Algorithm::getDominant($person1->getHairColor(), $person2->getHairColor()));
         $child->setSkinColor(new SkinColor(floatval(($person1->getSkinColor()->getValue() + $person2->getSkinColor()->getValue()) / 2.0)));
     }
     $child->setParents([$person1->getId(), $person2->getId()]);
     return $child;
 }