plateau = $p; } public function estJouablePiece($x, $y) { $piece = $this->plateau->getPiece($x, $y); if ($piece->getCouleur() === PieceSquadro::VIDE || $piece->getCouleur() === PieceSquadro::NEUTRE) { return false; } [$destX, $destY] = $this->plateau->getCoordDestination($x, $y); $destination = $this->plateau->getPiece($destX, $destY); return $destination->getCouleur() === PieceSquadro::VIDE; } public function jouePiece($x, $y) { if (!$this->estJouablePiece($x, $y)) { return false; } $piece = $this->plateau->getPiece($x, $y); [$destX, $destY] = $this->plateau->getCoordDestination($x, $y); // Gestion du saut d'adversaires $this->gererSautsAdversaires($x, $y, $destX, $destY); // Mise à jour de la position $this->plateau->setPiece($piece, $destX, $destY); $this->plateau->setPiece(PieceSquadro::initVide(), $x, $y); // Gestion de la fin de l'aller-retour if ($piece->getCouleur() === PieceSquadro::BLANC && $destY === 6) { $piece->inverseDirection(); } elseif ($piece->getCouleur() === PieceSquadro::NOIR && $destX === 0) { $piece->inverseDirection(); } return true; } private function gererSautsAdversaires($x, $y, $destX, $destY) { // Implémentation des reculs des adversaires en fonction des règles } public function reculePiece($x, $y) { $piece = $this->plateau->getPiece($x, $y); if ($piece->getDirection() === PieceSquadro::EST || $piece->getDirection() === PieceSquadro::OUEST) { $this->plateau->setPiece($piece, $x, 0); } else { $this->plateau->setPiece($piece, 6, $y); } } public function sortPiece($couleur, $rang) { if ($couleur === PieceSquadro::BLANC) { $this->plateau->retireLigneJouable($rang); } else { $this->plateau->retireColonneJouable($rang); } } public function remporteVictoire($couleur) { $jouables = $couleur === PieceSquadro::BLANC ? $this->plateau->getLignesJouables() : $this->plateau->getColonnesJouables(); return count($jouables) <= 1; } }