couleur = $couleur; $this->direction = $direction; } // Méthodes d'accès public function getCouleur(): int { return $this->couleur; } public function getDirection(): int { return $this->direction; } // Méthode pour inverser la direction public function inverseDirection(): void { if ($this->direction === self::NORD) { $this->direction = self::SUD; } elseif ($this->direction === self::SUD) { $this->direction = self::NORD; } elseif ($this->direction === self::EST) { $this->direction = self::OUEST; } elseif ($this->direction === self::OUEST) { $this->direction = self::EST; } } // Méthode de conversion en chaîne de caractères public function __toString(): string { return "Couleur: {$this->couleur}, Direction: {$this->direction}"; } // Méthodes statiques pour initialiser les pièces public static function initVide(): PieceSquadro { return new self(self::VIDE, self::NEUTRE); } public static function initNeutre(): PieceSquadro { return new self(self::NEUTRE, self::NEUTRE); } public static function initNoirNord(): PieceSquadro { return new self(self::NOIR, self::NORD); } public static function initNoirSud(): PieceSquadro { return new self(self::NOIR, self::SUD); } public static function initBlancEst(): PieceSquadro { return new self(self::BLANC, self::EST); } public static function initBlancOuest(): PieceSquadro { return new self(self::BLANC, self::OUEST); } // Méthode pour convertir un objet en JSON public function toJson(): string { return json_encode([ 'couleur' => $this->couleur, 'direction' => $this->direction ]); } // Méthode statique pour créer une instance depuis une chaîne JSON public static function fromJson(string $json): PieceSquadro { $data = json_decode($json, true); return new self($data['couleur'], $data['direction']); } } ?>