Example #1
0
 /**
  * Renvoie le combat de l'intercepteur, ou null
  * @return Combat
  */
 public function createCombat()
 {
     $cible = $this->ciblePrioritaire();
     if (!is_null($cible)) {
         $combat = new Combat($cible->getPosition());
         $combat->getAttaquants()->ajout($this->getQg());
         $combat->getDefenseurs()->ajout($cible);
         $this->auMoinsUnDeplacementFait = true;
         foreach ($cible->getSoutiens() as $soutien) {
             $combat->getDefenseurs()->ajout($soutien);
         }
         return $combat;
     } else {
         return null;
     }
 }
Example #2
0
 public function beforeDeplacements()
 {
     parent::beforeDeplacements();
     $combat = new Combat($this->getCible()->getPosition());
     $combat->getAttaquants()->ajout($this->getQg());
     $combat->getDefenseurs()->ajout($this->getCible());
     $combat->getAttaquants()->setCacheisAttaquant(true);
     $combat->getDefenseurs()->setCacheisAttaquant(false);
     $combat->run();
 }
Example #3
0
 /**
  * Renvoie le combat éventuel entre les Qgs (ou null) de la collection en considérant qu'ils sont sur la même case
  * @return Combat
  */
 public function createCombat()
 {
     $compteursParJoueur = array();
     foreach ($this as $qg) {
         /** @var Qg $qg */
         if (!isset($compteursParJoueur[$qg->getIdJoueur()])) {
             $compteursParJoueur[$qg->getIdJoueur()] = 0;
         }
         $compteursParJoueur[$qg->getIdJoueur()] += $qg->getUnites()->getPrixPop();
     }
     /*
      * Détermination des joueurs qui se battent
      */
     if (count($compteursParJoueur) <= 1) {
         return null;
     }
     if (count($compteursParJoueur) == 2) {
         $joueurs = array_keys($compteursParJoueur);
     } else {
         $new = array();
         $keys = array_keys($compteursParJoueur);
         shuffle($keys);
         foreach ($keys as $key) {
             $new[$key] = $compteursParJoueur[$key];
         }
         $compteursParJoueur = $new;
         asort($compteursParJoueur);
         $joueurs = array();
         $spectateurs = array();
         $cpt = 0;
         foreach ($compteursParJoueur as $idJoueur => $valUnites) {
             if ($cpt < 2) {
                 $joueurs[] = $idJoueur;
             } else {
                 $spectateurs[] = $idJoueur;
             }
             $cpt++;
         }
     }
     /*
      * Objet combat
      */
     $first = $this->getFirstElement();
     /** @var Qg $first */
     $ret = new Combat($first->getPosition());
     /*
      * Création des Qgs Virtuels
      */
     $qgvs = array();
     /** @var QgVirtuel[] $qgvs */
     $qgvs[$joueurs[0]] = new QgVirtuel();
     $qgvs[$joueurs[1]] = new QgVirtuel();
     foreach ($this as $qg) {
         /** @var Qg $qg */
         if (isset($qgvs[$qg->getIdJoueur()])) {
             $qgvs[$qg->getIdJoueur()]->ajout($qg);
         } else {
             $ret->getSpectateurs()->ajout($qg);
         }
     }
     $qgvs[$joueurs[0]]->setEnnemiEnCours($qgvs[$joueurs[1]]);
     $qgvs[$joueurs[1]]->setEnnemiEnCours($qgvs[$joueurs[0]]);
     $qgvs[$joueurs[0]]->setCombat($ret);
     $qgvs[$joueurs[1]]->setCombat($ret);
     /*
      * Détermination de qui est l'attaquant et qui est le défenseur 
      */
     if ($qgvs[$joueurs[0]]->isAttaquant($qgvs[$joueurs[1]])) {
         $ret->setAttaquants($qgvs[$joueurs[0]]);
         $ret->setDefenseurs($qgvs[$joueurs[1]]);
     } else {
         $ret->setAttaquants($qgvs[$joueurs[1]]);
         $ret->setDefenseurs($qgvs[$joueurs[0]]);
     }
     return $ret;
 }