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(array $pieces, int $x, int $y): string

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é
// // 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>';
$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>
<form method="post" action="traiteForm.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="ChoisirPiece">
<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é
<p><a class="button is-link">Retour à l\'accueil</a></p>

G. Daryl M. OKOU
a validé
$html .= self::plateauDeJeu($plateau, $joueur);

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>
<form method="post" action="traiteForm.php">
<input type="hidden" name="x" value="' . $x . '">
<input type="hidden" name="y" value="' . $y . '">
<div class="buttons is-centered">
<button type="submit" class="button is-success">Confirmer</button>
<a href="" class="button is-danger">Annuler</a>
</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;
}
Mathéo Beaudouin
a validé
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
/**
* 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
{
$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);
$html .= '<form method="post" action="traiteForm.php">';
Mathéo Beaudouin
a validé
$html .= '<input type="hidden" name="action" value="ConfirmerChoix">';
$html .= '<input type="hidden" name="x" value="' . ($i - 1) . '">';
$html .= '<input type="hidden" name="y" value="' . ($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, $jouableBlanc);
}
else if ($piece->getCouleur() == PieceSquadro::NOIR) {
$html .= PieceSquadroUI::boutonNoir($i - 1, $j - 1, $piece, $jouableNoir);
Mathéo Beaudouin
a validé
$html .= '</form>'; // Fermeture du formulaire
Mathéo Beaudouin
a validé
$html .= '</td>';
Mathéo Beaudouin
a validé
$html .= '</tr>';
Mathéo Beaudouin
a validé
$html .= '</table></div>';
return $html;
}