Vide'; } /** * Génère le HTML pour une case neutre désactivée. * * @return string Code HTML de la case neutre. */ public static function renderCaseNeutre(): string { return ''; } /** * Génère le HTML pour une pièce blanche. * * @param int $x Coordonnée X de la pièce sur le plateau. * @param int $y Coordonnée Y de la pièce sur le plateau. * @param bool $active Indique si la pièce est cliquable (true) ou désactivée (false). * @return string Code HTML de la pièce blanche. */ public static function renderPieceBlanche(int $x, int $y, bool $active): string { if ($active) { return sprintf( '
', $x, $y ); } else { return ''; } } /** * Génère le HTML pour une pièce noire. * * @param int $x Coordonnée X de la pièce sur le plateau. * @param int $y Coordonnée Y de la pièce sur le plateau. * @param bool $active Indique si la pièce est cliquable (true) ou désactivée (false). * @return string Code HTML de la pièce noire. */ public static function renderPieceNoire(int $x, int $y, bool $active): string { if ($active) { return sprintf( '', $x, $y ); } else { return ''; } } /** * Génère le HTML d'une case en fonction de son état et de ses propriétés. * * @param PieceSquadro $piece L'objet représentant une pièce ou une case. * @param int $x Coordonnée X de la pièce sur le plateau. * @param int $y Coordonnée Y de la pièce sur le plateau. * @param bool $isActive Indique si la pièce est active (cliquable pour l'utilisateur courant). * @return string Code HTML de la case ou de la pièce. */ public static function renderCase(PieceSquadro $piece, int $x, int $y, bool $isActive): string { switch ($piece->getCouleur()) { case PieceSquadro::BLANC: return self::renderPieceBlanche($x, $y, $isActive); case PieceSquadro::NOIR: return self::renderPieceNoire($x, $y, $isActive); case PieceSquadro::VIDE: return self::renderCaseVide(); case PieceSquadro::NEUTRE: return self::renderCaseNeutre(); default: throw new InvalidArgumentException("Type de case ou pièce inconnu."); } } }