diff --git a/fr/iut_fbleau/Avalam/ArenaWindow.java b/fr/iut_fbleau/Avalam/ArenaWindow.java index b33fb76..2a604ad 100644 --- a/fr/iut_fbleau/Avalam/ArenaWindow.java +++ b/fr/iut_fbleau/Avalam/ArenaWindow.java @@ -14,11 +14,14 @@ import java.util.ArrayList; import java.util.List; /** - * Fenêtre pour le mode Arène. - * Permet de sélectionner trois bots (Idiot, Alpha-Beta, Divin), de configurer la profondeur - * de recherche pour les bots intelligents, de choisir le nombre de parties, et d'afficher les résultats. - * - * @version 1.0 + * Fenêtre pour le mode Arène (bots vs bots). + * + * Elle permet : + * - de sélectionner deux bots parmi Idiot, Alpha-Beta et Divin ; + * - de configurer la profondeur de recherche pour les bots intelligents ; + * - de choisir le nombre de parties à jouer ; + * - d’afficher, dans un tableau, le résultat de chaque partie (gagnant ou erreur) ; + * - de revenir au menu principal ou de quitter entièrement le jeu. */ public class ArenaWindow extends JFrame { diff --git a/fr/iut_fbleau/Avalam/AvalamWindow.java b/fr/iut_fbleau/Avalam/AvalamWindow.java index fa8a6a1..5594021 100644 --- a/fr/iut_fbleau/Avalam/AvalamWindow.java +++ b/fr/iut_fbleau/Avalam/AvalamWindow.java @@ -1,7 +1,6 @@ package fr.iut_fbleau.Avalam; import fr.iut_fbleau.Bot.AlphaBetaBot; -// A FAIRE PLUS TARD (PVGOD) import fr.iut_fbleau.Bot.DivineBot; import fr.iut_fbleau.Bot.IdiotBot; import fr.iut_fbleau.GameAPI.AbstractPly; @@ -14,22 +13,25 @@ import java.awt.*; /** * La classe AvalamWindow * - * Fenêtre principale (interface graphique) du jeu Avalam. - * Elle contient : - * - le plateau (BoardView) - * - l’affichage du score (ScoreView) - * - l’affichage du joueur courant (TurnView) - * - * Elle pilote un objet AvalamBoard (moteur du jeu). - * Elle peut fonctionner en mode : - * - joueur vs joueur - * - joueur vs bot idiot (aléatoire) - * - joueur vs bot alpha (cut-off) + * Fenêtre principale (interface graphique) du jeu Avalam pour tous les modes + * hors Arène : + * - joueur vs joueur (PVP) + * - joueur vs bot idiot (PVBOT) + * - joueur vs bot alpha (PVALPHA) * - joueur vs bot divin (PVGOD) * - * @version 1.0 - * Date : - * Licence : + * Elle contient : + * - le plateau (BoardView) + * - l’affichage du score (ScoreView) + * - l’affichage du joueur courant (TurnView) + * + * Elle pilote un objet AvalamBoard (moteur du jeu) et, + * en fonction du {@link GameMode}, instancie le bot approprié + * (idiot, alpha-bêta ou divin). + * + * En fin de partie, elle ouvre une fenêtre de fin (EndGameDialog) + * affichant le gagnant, les scores et proposant les actions : + * « Rejouer », « Menu principal » ou « Quitter le jeu ». */ public class AvalamWindow extends JFrame { @@ -62,18 +64,9 @@ public class AvalamWindow extends JFrame { /** Bot Alpha-Beta (utilisé si mode PVALPHA). */ private final AlphaBetaBot alphaBot; + /** Bot Divin (utilisé si mode PVGOD). */ private final DivineBot divineBot; - // A FAIRE PLUS TARD (PVGOD) - // /** Bot Divin (utilisé si mode PVGOD). */ - // private final DivineBot divineBot; - - /** - * A FAIRE PLUS TARD (PVGOD) - * On garde l'attribut à null pour ne pas casser la compilation, - * mais toute la logique PVGOD est désactivée/commentée. - */ - /** Indique si une animation de tour de bot est en cours. */ private boolean botAnimating = false; @@ -90,7 +83,7 @@ public class AvalamWindow extends JFrame { * Construit la fenêtre en fonction du mode choisi. * Pour PVALPHA/PVGOD, la profondeur par défaut est 4. * - * @param mode mode de jeu + * @param mode mode de jeu (PVP, PVBOT, PVALPHA ou PVGOD) */ public AvalamWindow(GameMode mode) { this(mode, 4); @@ -98,9 +91,10 @@ public class AvalamWindow extends JFrame { /** * Construit la fenêtre en fonction du mode choisi. - * Si le mode est PVALPHA ou PVGOD, la profondeur est utilisée comme cut-off. + * Si le mode est PVALPHA ou PVGOD, la profondeur est utilisée comme cut-off + * pour les bots Alpha-Beta et Divin. * - * @param mode mode de jeu + * @param mode mode de jeu * @param alphaDepth profondeur de recherche pour Alpha-Beta / Bot Divin */ public AvalamWindow(GameMode mode, int alphaDepth) { @@ -114,7 +108,6 @@ public class AvalamWindow extends JFrame { int depth = this.searchDepth; this.alphaBot = (mode == GameMode.PVALPHA) ? new AlphaBetaBot(botPlayer, depth) : null; - // A FAIRE PLUS TARD (PVGOD) this.divineBot = (mode == GameMode.PVGOD) ? new DivineBot(botPlayer, depth) : null; setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); @@ -226,12 +219,8 @@ public class AvalamWindow extends JFrame { if (mode == GameMode.PVBOT && idiotBot == null) return; if (mode == GameMode.PVALPHA && alphaBot == null) return; - // A FAIRE PLUS TARD (PVGOD) if (mode == GameMode.PVGOD && divineBot == null) return; - // A FAIRE PLUS TARD (PVGOD) - // Pour l'instant, si PVGOD est sélectionné, on ne joue pas de coup bot. - botAnimating = true; // Désactiver les interactions du joueur pendant le tour du bot. diff --git a/fr/iut_fbleau/Avalam/EndGameDialog.java b/fr/iut_fbleau/Avalam/EndGameDialog.java index 55cbd87..dcbf32a 100644 --- a/fr/iut_fbleau/Avalam/EndGameDialog.java +++ b/fr/iut_fbleau/Avalam/EndGameDialog.java @@ -7,25 +7,32 @@ import java.awt.*; /** * Fenêtre de fin de partie. - * Affiche le gagnant, le score et propose plusieurs actions : - * - Rejouer la même configuration - * - Retour au menu principal - * - Quitter le jeu + * + * Elle est ouverte par {@link AvalamWindow} lorsque le moteur signale + * que la partie est terminée. Elle affiche : + * - le résultat (gagnant ou égalité) à partir du {@link Result} ; + * - le score détaillé (tours contrôlées par Jaune et Rouge) ; + * - le mode de jeu courant (PVP, PVBOT, PVALPHA, PVGOD, avec profondeur pour les bots intelligents). + * + * Elle propose également trois actions sous forme de boutons : + * - « Rejouer » : relancer une partie avec la même configuration ; + * - « Menu principal » : retourner au menu de sélection de mode ; + * - « Quitter » : fermer complètement l’application. */ public class EndGameDialog extends JDialog { /** * Construit la fenêtre de fin de partie. * - * @param parent fenêtre principale (AvalamWindow) - * @param result résultat de la partie (WIN / LOSS / DRAW du point de vue de PLAYER1 / Jaune) - * @param scoreJaune score du joueur jaune - * @param scoreRouge score du joueur rouge - * @param mode mode de jeu courant (pour l'information / le rejouer) - * @param depth profondeur utilisée (pour les modes avec bot intelligent) - * @param onReplay action à exécuter pour rejouer - * @param onMenu action à exécuter pour revenir au menu - * @param onQuit action à exécuter pour quitter l'application + * @param parent fenêtre principale (généralement une {@link AvalamWindow}) + * @param result résultat de la partie (WIN / LOSS / DRAW du point de vue de PLAYER1 / Jaune) + * @param scoreJaune score du joueur jaune (nombre de tours contrôlées) + * @param scoreRouge score du joueur rouge (nombre de tours contrôlées) + * @param mode mode de jeu courant (pour l’information et le « Rejouer ») + * @param depth profondeur utilisée (pour les modes avec bot intelligent) + * @param onReplay action à exécuter lorsque l’utilisateur clique sur « Rejouer » + * @param onMenu action à exécuter lorsque l’utilisateur clique sur « Menu principal » + * @param onQuit action à exécuter lorsque l’utilisateur clique sur « Quitter » */ public EndGameDialog( JFrame parent, diff --git a/fr/iut_fbleau/Avalam/Main.java b/fr/iut_fbleau/Avalam/Main.java index 598e445..74457d6 100644 --- a/fr/iut_fbleau/Avalam/Main.java +++ b/fr/iut_fbleau/Avalam/Main.java @@ -22,7 +22,7 @@ public class Main { "joueur vs joueur", "joueur vs botidiot", "joueur vs bot alpha", - "joueur vs bot divin (NON IMPLEMENTE)", + "joueur vs bot divin", "Arène" };