ajout d'un bouton retour

This commit is contained in:
2025-10-08 16:20:13 +02:00
parent 64108a95e9
commit d75f05bee0

View File

@@ -10,16 +10,16 @@ import java.util.List;
/** /**
* Interface graphique du jeu du pendu avec gestion des difficultés. * Interface graphique du jeu du pendu avec gestion des difficultés.
* - Niveau Facile : mots de moins de 8 lettres * - Niveau 1 : mots de moins de 8 lettres
* - Niveau Moyen : mots de 8 lettres ou plus * - Niveau 2 : mots de 8 lettres ou plus
* - Niveau Difficile : deux mots à deviner à la suite (un court + un long) * - Niveau 3 : deux mots à deviner à la suite (un court + un long)
* Toutes les méthodes ≤ 50 lignes. * Toutes les méthodes ≤ 50 lignes.
*/ */
public class GameUI { public class GameUI {
private JFrame frame; private JFrame frame;
private JLabel imgLabel, wordLabel, triedLabel, scoreLabel, timeLabel; private JLabel imgLabel, wordLabel, triedLabel, scoreLabel, timeLabel;
private JTextField input; private JTextField input;
private JButton tryBtn, quitBtn; private JButton tryBtn, quitBtn, menuBtn;
private Game game; private Game game;
private List<String> words; private List<String> words;
@@ -63,7 +63,7 @@ public class GameUI {
if (longW != null) words.add(longW); if (longW != null) words.add(longW);
} }
if (words.isEmpty()) words.add(Words.random()); // fallback si rien if (words.isEmpty()) words.add(Words.random());
} }
/** Crée la fenêtre principale */ /** Crée la fenêtre principale */
@@ -90,16 +90,23 @@ public class GameUI {
top.add(buildTopLine(triedLabel, timeLabel)); top.add(buildTopLine(triedLabel, timeLabel));
frame.add(top, BorderLayout.NORTH); frame.add(top, BorderLayout.NORTH);
// --- Bas : boutons + saisie
JPanel bottom = new JPanel(new BorderLayout(8, 8)); JPanel bottom = new JPanel(new BorderLayout(8, 8));
JPanel inputPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); JPanel inputPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
input = new JTextField(5); input = new JTextField(5);
tryBtn = new JButton("Essayer"); tryBtn = new JButton("Essayer");
quitBtn = new JButton("Quitter");
inputPanel.add(new JLabel("Lettre :")); inputPanel.add(new JLabel("Lettre :"));
inputPanel.add(input); inputPanel.add(input);
inputPanel.add(tryBtn); inputPanel.add(tryBtn);
JPanel actionPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
menuBtn = new JButton("Menu");
quitBtn = new JButton("Quitter");
actionPanel.add(menuBtn);
actionPanel.add(quitBtn);
bottom.add(inputPanel, BorderLayout.WEST); bottom.add(inputPanel, BorderLayout.WEST);
bottom.add(quitBtn, BorderLayout.EAST); bottom.add(actionPanel, BorderLayout.EAST);
frame.add(bottom, BorderLayout.SOUTH); frame.add(bottom, BorderLayout.SOUTH);
} }
@@ -117,13 +124,22 @@ public class GameUI {
tryBtn.addActionListener(this::onTry); tryBtn.addActionListener(this::onTry);
input.addActionListener(this::onTry); input.addActionListener(this::onTry);
quitBtn.addActionListener(e -> frame.dispose()); quitBtn.addActionListener(e -> frame.dispose());
menuBtn.addActionListener(e -> returnToMenu());
timer = new Timer(1000, e -> refreshStatsOnly()); timer = new Timer(1000, e -> refreshStatsOnly());
} }
/** Retour au menu principal */
private void returnToMenu() {
timer.stop();
frame.dispose();
MenuUI menu = new MenuUI();
menu.show();
}
/** Démarre un nouveau mot (ou termine au niveau 3) */ /** Démarre un nouveau mot (ou termine au niveau 3) */
private void startRound() { private void startRound() {
if (index >= words.size()) { if (index >= words.size()) {
showMsg("Niveau terminé !"); showMsg("🎉 Niveau terminé !");
frame.dispose(); frame.dispose();
return; return;
} }