Newer
Older

G. Daryl M. OKOU
a validé
<?php
require_once 'PieceSquadro.php';
require_once 'PieceSquadroUI.php';
require_once 'PlateauSquadro.php';
/**
* 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 PlateauSquadro $plateau
* @param string $joueur
* @return string Le code HTML de la page.
*/

G. Daryl M. OKOU
a validé
public static function pageJouerPiece(PlateauSquadro $plateau, string $joueur): 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"

G. Daryl M. OKOU
a validé
$html .= '<div class="container has-text-centered">

G. Daryl M. OKOU
a validé
<h2 class="title">' . $joueur . ' joue </h2>';

G. Daryl M. OKOU
a validé
$html .= SquadroUIGenerator::plateauDeJeu($plateau, $joueur);
// 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

G. Daryl M. OKOU
a validé
$html .= '<div class="container has-text-centered">
<h2 class="title">Vous jouez avec quelles pièces?</h2>

G. Daryl M. OKOU
a validé
<form method="post" action="traiteActionSquadro.php" class="field is-grouped is-grouped-centered">

G. Daryl M. OKOU
a validé
<div class="control">

G. Daryl M. OKOU
a validé
<input type="hidden" name="action" value="commencerPartie"/>
<input class="button is-link" type="submit" name="joueur" value="Blanc"/>
<input class="button is-link" type="submit" name="joueur" value="Noir"/>

G. Daryl M. OKOU
a validé

G. Daryl M. OKOU
a validé
</form>
</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.

G. Daryl M. OKOU
a validé
* @param PlateauSquadro $plateau
* @param String $joueur
* @return string Le code HTML de la page de fin de jeu.
*/

G. Daryl M. OKOU
a validé
public static function pageFinDeJeu(PlateauSquadro $plateau, string $joueur): 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

G. Daryl M. OKOU
a validé
$html .= '<div class="container has-text-centered">

G. Daryl M. OKOU
a validé
<h2 class="title">' . $joueur . ' a gagné</h2>

G. Daryl M. OKOU
a validé
<form action="traiteActionSquadro.php" method="post">
<p><button class="button is-link" name="action" value="rejouer">Retour à l\'accueil</button></p>
$html .= self::plateauDeJeu($plateau, '');

G. Daryl M. OKOU
a validé
// Fermeture de la page en utilisant la méthode pied() de ton ami
$html .= self::pied();
return $html;
}
/**
* Génère la page de confirmation de mouvement avec un formulaire.

G. Daryl M. OKOU
a validé
*
* @param int $x La coordonnée x de la pièce sélectionnée.
* @param int $y La coordonnée y de la pièce sélectionnée.

G. Daryl M. OKOU
a validé
* @return string Le code HTML de la page de confirmation de mouvement.
*/
public static function pageConfirmerMouvement(int $x, int $y): string
{
// Générer l'entête de la page

G. Daryl M. OKOU
a validé
$html = self::entete("Confirmer le mouvement");
// Contenu de la page avec un formulaire pour confirmer le déplacement

G. Daryl M. OKOU
a validé
$html .= '<div class="container has-text-centered">
<h2 class="title">Confirmer le mouvement</h2>
<p>Vous avez choisi de déplacer la pièce située en (' . $x . ', ' . $y . ').</p>

G. Daryl M. OKOU
a validé
<form method="post" action="traiteActionSquadro.php">
<input type="hidden" name="x" value="' . $x . '">
<input type="hidden" name="y" value="' . $y . '">
<div class="buttons is-centered">

G. Daryl M. OKOU
a validé
<button type="submit" class="button is-success" name="action" value="confirmerChoix">Confirmer</button>
<button type="submit" class="button is-danger" name="action" value="annulerChoix">Annuler</button>
</div>
</form>
</div>';
// Ajouter le pied de page
$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" class="has-background-grey-light">

G. Daryl M. OKOU
a validé
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@1.0.2/css/bulma.min.css">

G. Daryl M. OKOU
a validé
</head>
<section class="hero is-link">
<div class="hero-body has-text-centered">
<p class="title is-spaced"> Squadro </p>

G. Daryl M. OKOU
a validé
<p class="subtitle">' . $title . '</p>

G. Daryl M. OKOU
a validé
</div>
</section>
';

G. Daryl M. OKOU
a validé
return $entete;
}
/**
* 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
{

G. Daryl M. OKOU
a validé
$pied = "</body>
</html>";
return $pied;
}
/**
* Génère le plateau de jeu avec des boutons liés à des formulaires.
*
* @param PlateauSquadro $plateau L'état actuel du plateau.
* @param string $joueur Le joueur actif ("Blanc" ou "Noir").
* @return string Le code HTML du plateau de jeu.
*/
public static function plateauDeJeu(PlateauSquadro $plateau, string $joueur): string
{

G. Daryl M. OKOU
a validé
$actionSquadro = new ActionSquadro($plateau);
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
$jouableBlanc = $joueur == "Blanc";
$jouableNoir = !$jouableBlanc;
$html = '<div class="container is-fullwidth "><br>';
$html .= '<table class="table is-bordered has-background-grey-light">';
for ($i = 0; $i < 9; $i++) {
$html .= '<tr>';
for ($j = 0; $j < 9; $j++) {
$html .= '<td class="p-0">';
// Coins du plateau
if (($i == 0 || $i == 8) && ($j == 0 || $j == 8)) {
$html .= PieceSquadroUI::boutonTexte('');
} // Indicateurs des mouvements noirs (haut et bas du plateau)
else if ($i == 0) {
$html .= PieceSquadroUI::boutonTexte(($j > 1 && $j < 7) ? PlateauSquadro::NOIR_V_RETOUR[$j - 1] : '');
} else if ($i == 8) {
$html .= PieceSquadroUI::boutonTexte(($j > 1 && $j < 7) ? PlateauSquadro::NOIR_V_ALLER[$j - 1] : '');
} // Indicateurs des mouvements blancs (gauche et droite du plateau)
else if ($j == 0) {
$html .= PieceSquadroUI::boutonTexte(($i > 1 && $i < 7) ? PlateauSquadro::BLANC_V_ALLER[$i - 1] : '');
} else if ($j == 8) {
$html .= PieceSquadroUI::boutonTexte(($i > 1 && $i < 7) ? PlateauSquadro::BLANC_V_RETOUR[$i - 1] : '');
} // Cases jouables avec des pièces
else {
$piece = $plateau->getPiece($i - 1, $j - 1);

G. Daryl M. OKOU
a validé
$html .= '<form method="post" action="traiteActionSquadro.php">';
$html .= '<input type="hidden" name="action" value="choisirPiece">';
if ($piece->getCouleur() == PieceSquadro::VIDE) {
$html .= PieceSquadroUI::boutonVide();
} else if ($piece->getCouleur() == PieceSquadro::NEUTRE) {
$html .= PieceSquadroUI::boutonNeutre();
} else if ($piece->getCouleur() == PieceSquadro::BLANC) {

G. Daryl M. OKOU
a validé
$html .= PieceSquadroUI::boutonBlanc($i - 1, $j - 1, $piece, $jouableBlanc && $actionSquadro->estJouablePiece($i - 1, $j - 1));
} else if ($piece->getCouleur() == PieceSquadro::NOIR) {

G. Daryl M. OKOU
a validé
$html .= PieceSquadroUI::boutonNoir($i - 1, $j - 1, $piece, $jouableNoir && $actionSquadro->estJouablePiece($i - 1, $j - 1));
}
$html .= '</form>'; // Fermeture du formulaire
Mathéo Beaudouin
a validé
$html .= '</table></div>';
return $html;
Mathéo Beaudouin
a validé
/**
* Génère une page annonçant la détection d'une erreur.
*
* @return string Le code HTML de la page d'erreur.
*/
public static function pageErreur(): string
{
// Utilisation de la méthode d'entête de ton ami
$html = self::entete("Erreur");
// Contenu spécifique à la page d'erreur
$html .= '<div class="container has-text-centered">
<h2 class="title">Une erreur s\'est produite</h2>

G. Daryl M. OKOU
a validé
<form action="traiteActionSquadro.php" method="post">
<p><button class="button is-link" name="action" value="rejouer">Retour à l\'accueil</button></p>
</form>
</div>
';
return $html;
}
Mathéo Beaudouin
a validé
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
/**
* Génère la page d'accueil de la salle de jeux (Home).
*
* @return string Le code HTML de la page Home.
*/
public static function pageHome(): string
{
// En-tête de la page
$html = self::entete("Salle de Jeux - Squadro");
// Contenu principal avec options de jeu
$html .= '<div class="container has-text-centered">
<h2 class="title">Bienvenue dans la salle de jeux</h2>
<p>Choisissez une option :</p>
<div class="buttons is-centered">
<form action="traiteActionSquadro.php" method="post">
<button class="button is-primary" name="action" value="creerPartie">Créer une partie</button>
</form>
<form action="traiteActionSquadro.php" method="post">
<button class="button is-link" name="action" value="rejoindrePartie">Rejoindre une partie</button>
</form>
<form action="traiteActionSquadro.php" method="post">
<button class="button is-info" name="action" value="voirParties">Voir les parties en cours</button>
</form>
</div>
</div>';
// Pied de page
$html .= self::pied();
return $html;
}