SquadroUIGenerator.php 5,52 ko
Newer Older
require_once 'PieceSquadro.php';
require_once 'PieceSquadroUI.php';
require_once 'SquadroUIGenerator.php'; // Inclusion de la classe d'en-tête et de pied de page

/**
 * Classe SquadroUIGenerator
 * Gère la génération des pages HTML pour l'application de jeu Squadro.
 */
class SquadroUIGenerator {

    /**
     * Génère une page HTML pour afficher les pièces disponibles à jouer pour le joueur actif.
     * 
     * @param array $pieces Liste des pièces du joueur actif à afficher.
     * @param int $x Coordonnée X de la case à jouer.
     * @param int $y Coordonnée Y de la case à jouer.
     * @return string Le code HTML de la page.
     */
    public static function pageJouerPiece(array $pieces, int $x, int $y): string {
        // Utilisation de la méthode d'entête de ton ami
        $html = self::entete("Choisir une pièce à jouer");

        // Contenu spécifique à la page "Jouer une pièce"
        $html .= '<div class="container">
                    <h2 class="title">Choisissez une pièce à jouer</h2>';

        // Afficher chaque pièce disponible pour le joueur
        $html .= '<div class="buttons">';
        foreach ($pieces as $piece) {
            // Vérifier si la pièce est jouable
            $jouable = true; // On suppose que toutes les pièces sont jouables ici, à adapter selon la logique du jeu

            if ($piece->getCouleur() === PieceSquadro::BLANC) {
                // Ajouter le bouton pour la pièce blanche
                $html .= PieceSquadroUI::boutonBlanc($x, $y, $piece, $jouable);
            } elseif ($piece->getCouleur() === PieceSquadro::NOIR) {
                // Ajouter le bouton pour la pièce noire
                $html .= PieceSquadroUI::boutonNoir($x, $y, $piece, $jouable);
            }
        }
        $html .= '</div>'; // Fermeture des boutons

        // Ajouter un formulaire pour soumettre le mouvement
        $html .= '<form method="post" action="processMove.php">
                    <input type="hidden" name="x" value="' . $x . '">
                    <input type="hidden" name="y" value="' . $y . '">
                    <input type="submit" class="button is-primary" value="Confirmer le mouvement">
                  </form>';

        // Fermeture de la page en utilisant la méthode pied() de ton ami
        $html .= self::pied();

        return $html;
    }

    /**
     * Génère la page d'accueil du jeu.
     * 
     * @return string Le code HTML de la page d'accueil.
     */
    public static function pageAccueil(): string {
        // Utilisation de la méthode d'entête de ton ami
        $html = self::entete("Bienvenue dans le jeu Squadro");

        // Contenu spécifique à la page d'accueil
        $html .= '<div class="container">
                    <h2 class="title">Bienvenue dans le jeu Squadro</h2>
                    <p>Choisissez une option :</p>
                    <ul>
                        <li><a href="startGame.php" class="button is-link">Démarrer une nouvelle partie</a></li>
                        <li><a href="loadGame.php" class="button is-link">Charger une partie existante</a></li>
                    </ul>
                  </div>';

        // Fermeture de la page en utilisant la méthode pied() de ton ami
        $html .= self::pied();

        return $html;
    }

    /**
     * Génère la page de fin de jeu.
     * 
     * @param string $message Message à afficher à la fin du jeu (ex : "Vous avez gagné !").
     * @return string Le code HTML de la page de fin de jeu.
     */
    public static function pageFinDeJeu(string $message): string {
        // Utilisation de la méthode d'entête de ton ami
        $html = self::entete("Fin de la Partie");

        // Contenu spécifique à la page de fin de jeu
        $html .= '<div class="container">
                    <h2 class="title">Partie terminée</h2>
                    <p>' . htmlspecialchars($message) . '</p>
                    <p><a href="index.php" class="button is-link">Retour à l\'accueil</a></p>
                  </div>';

        // Fermeture de la page en utilisant la méthode pied() de ton ami
        $html .= self::pied();

        return $html;
    }

    /**
     * Méthode pour générer l'en-tête HTML.
     * Utilisée par toutes les pages pour inclure le début de la structure HTML.
     * 
     * @param string $title Titre de la page.
     * @return string Le code HTML de l'en-tête.
     */
    public static function entete(string $title): string {
        $entete = "<!DOCTYPE html>
<html lang=\"fr\">
  <head>
    <meta charset=\"utf-8\">
    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">
    <title>Squadro</title>
    <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/bulma@1.0.2/css/bulma.min.css\">
  </head>
  <body>
  <section class=\"hero is-link\">
    <div class=\"hero-body has-text-centered\"> 
        <p class=\"title is-spaced\"> Squadro </p>
        <p class=\"subtitle\"> $title </p>
    /**
     * Méthode pour générer le pied de page HTML.
     * Utilisée par toutes les pages pour inclure la fin de la structure HTML.
     * 
     * @return string Le code HTML du pied de page.
     */
    public static function pied(): string {
  }

/*
$piecesActives = [PieceSquadro::initBlancEst(), PieceSquadro::initNoirSud()];
echo SquadroUIGenerator::pageJouerPiece($piecesActives, 3, 4);
*/

//echo SquadroUIGenerator::pageAccueil();
echo SquadroUIGenerator::pageFinDeJeu("Vous avez gagné !");