Newer
Older

G. Daryl M. OKOU
a validé
<?php
require_once 'PieceSquadro.php';
require_once 'PieceSquadroUI.php';
require_once 'PlateauSquadro.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
{
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
// 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>
// 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
{

G. Daryl M. OKOU
a validé
$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\">

G. Daryl M. OKOU
a validé
<link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/bulma@1.0.2/css/bulma.min.css\">
</head>
<section class=\"hero is-link\">
<div class=\"hero-body has-text-centered\">
<p class=\"title is-spaced\"> Squadro </p>
<p class=\"subtitle\"> $title </p>

G. Daryl M. OKOU
a validé
</div>
</section>
";
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;
}
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
/**
* Génère le plateau de jeu.
*
* @return string Le code HTML du plateau de jeu.
*/
public static function plateauDeJeu(PlateauSquadro $plateau): string
{
$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">';
if (($i == 0 || $i == 8) && ($j == 0 || $j == 8)) {
$html .= PieceSquadroUI::boutonTexte('');
} else if ($i == 0)
$html .= PieceSquadroUI::boutonTexte(($j > 1 && $j < 7) ? PlateauSquadro::BLANC_V_ALLER[$j - 1] : '');
else if ($i == 8)
$html .= PieceSquadroUI::boutonTexte(($j > 1 && $j < 7) ? PlateauSquadro::BLANC_V_RETOUR[$j - 1] : '');
else if ($j == 0)
$html .= PieceSquadroUI::boutonTexte(($i > 1 && $i < 7) ? PlateauSquadro::NOIR_V_ALLER[$i - 1] : '');
else if ($j == 8)
$html .= PieceSquadroUI::boutonTexte(($i > 1 && $i < 7) ? PlateauSquadro::NOIR_V_RETOUR[$i - 1] : '');
else {
$piece = $plateau->getPiece($i - 1, $j - 1);
if ($piece->getCouleur() == PieceSquadro::VIDE) {
$html .= PieceSquadroUI::boutonVide();
} else if ($piece->getCouleur() == PieceSquadro::NEUTRE) {
$html .= PieceSquadroUI::boutonNeutre();
} else if ($piece->getCouleur() == PieceSquadro::BLANC) {
$html .= PieceSquadroUI::boutonBlanc($i - 1, $j - 1, $piece, true);
} else if ($piece->getCouleur() == PieceSquadro::NOIR) {
$html .= PieceSquadroUI::boutonNoir($i - 1, $j - 1, $piece, true);
}
}
$html .= '</td>';
}
$html .= '</tr>';
}
$html .= '</table></div>';
return $html;
}
}
// Exemple d'utilisation de la classe SquadroUIGenerator
$plateau = new PlateauSquadro();
//$html = SquadroUIGenerator::entete("Plateau de jeu");
//$html .= SquadroUIGenerator::plateauDeJeu($plateau);
//$html .= SquadroUIGenerator::pied();
$html = SquadroUIGenerator::pageAccueil();
echo $html;