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 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.
*/

G. Daryl M. OKOU
a validé
//public static function pageJouerPiece(array $pieces, int $x, int $y): string
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">
<h2 class="title">'.$joueur .' joue </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>';
$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="" class="field is-grouped is-grouped-centered">
<div class="control">
<input class="button is-link" type="submit" value="Blanc"/>
<input class="button is-link" type="submit" value="Noir"/>
</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">
<h2 class="title">'. $joueur.' a gagné</h2>
<p><a class="button is-link">Retour à l\'accueil</a></p>

G. Daryl M. OKOU
a validé
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
$html .=self::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 de confirmation de mouvement.
*
* @param int $x La coordonnée x de la pièce.
* @param int $y La coordonnée y de la pièce.
* @return string Le code HTML de la page de confirmation de mouvement.
*/
public static function pageConfirmerMouvement(int $x, int $y): string
{
// Utilisation de la méthode d'entête de ton ami
$html = self::entete("Confirmer le mouvement");
// Contenu spécifique à la page de confirmation de mouvement
$html .= '<div class="container has-text-centered">
<h2 class="title">Confirmer le mouvement</h2>
<p>Vous avez choisi la case (' . $x . ', ' . $y . ').</p>
<p><a class="button is-link">Confirmer</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" 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>
<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.
*
* @return string Le code HTML du plateau de jeu.
*/

G. Daryl M. OKOU
a validé
public static function plateauDeJeu(PlateauSquadro $plateau, String $joueur): string

G. Daryl M. OKOU
a validé
$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">';
if (($i == 0 || $i == 8) && ($j == 0 || $j == 8)) {
$html .= PieceSquadroUI::boutonTexte('');
} else if ($i == 0)

G. Daryl M. OKOU
a validé
$html .= PieceSquadroUI::boutonTexte(($j > 1 && $j < 7) ? PlateauSquadro::NOIR_V_RETOUR[$j - 1] : '');

G. Daryl M. OKOU
a validé
$html .= PieceSquadroUI::boutonTexte(($j > 1 && $j < 7) ? PlateauSquadro::NOIR_V_ALLER[$j - 1] : '');

G. Daryl M. OKOU
a validé
$html .= PieceSquadroUI::boutonTexte(($i > 1 && $i < 7) ? PlateauSquadro::BLANC_V_ALLER[$i - 1] : '');

G. Daryl M. OKOU
a validé
$html .= PieceSquadroUI::boutonTexte(($i > 1 && $i < 7) ? PlateauSquadro::BLANC_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) {

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

G. Daryl M. OKOU
a validé
$html .= PieceSquadroUI::boutonNoir($i - 1, $j - 1, $piece, $jouableNoir);
}
}
$html .= '</td>';
}
$html .= '</tr>';
}
$html .= '</table></div>';
return $html;
}
}