plateau = $p; } public function estJouablePiece(int $x, int $y):bool { // Vérifie si une pièce peut être jouée $piece = $this->plateau->getPiece($x, $y); if ($piece->getCouleur() === PieceSquadro::VIDE || $piece->getCouleur() === PieceSquadro::NEUTRE) { return false; } $destination = $this->plateau->getCoordDestination($x, $y); $pieceDestination = $this->plateau->getPiece($destination[0], $destination[1]); return $pieceDestination->getCouleur() === PieceSquadro::VIDE; } public function jouePiece(int $x, int $y) : bool { // Déplace une pièce si elle est jouable if (!$this->estJouablePiece($x, $y)) { return false; } $piece = $this->plateau->getPiece($x, $y); [$newX, $newY] = $this->plateau->getCoordDestination($x, $y); $this->plateau->setPiece(PieceSquadro::initVide(), $x, $y); $this->plateau->setPiece($piece, $newX, $newY); // Gère le changement de direction de la pièce lorsqu'elle atteint le point de retour if (($piece->getCouleur() === PieceSquadro::BLANC && $newY === 6) || ($piece->getCouleur() === PieceSquadro::NOIR && $newX === 0)) { $piece->inverseDirection(); } return true; } public function reculePiece(int $x, int $y): void { // Réinitialise une pièce à sa position de départ $piece = $this->plateau->getPiece($x, $y); if ($piece->getCouleur() === PieceSquadro::BLANC) { $this->plateau->setPiece(PieceSquadro::initBlancOuest(), $x, 0); } elseif ($piece->getCouleur() === PieceSquadro::NOIR) { $this->plateau->setPiece(PieceSquadro::initNoirSud(), 6, $y); } } public function sortPiece($couleur, $rang) { // Retire une pièce du jeu lorsqu'elle termine son parcours if ($couleur === PieceSquadro::BLANC) { $this->plateau->retireLigneJouable($rang); } elseif ($couleur === PieceSquadro::NOIR) { $this->plateau->retireColonneJouable($rang); } } public function remporteVictoire(int $couleur): bool { // Vérifie si un joueur a gagné la partie if ($couleur === PieceSquadro::BLANC) { return count($this->plateau->getLignesJouables()) <= 1; } elseif ($couleur === PieceSquadro::NOIR) { return count($this->plateau->getColonnesJouables()) <= 1; } return false; } }