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.
* - Niveau Facile : mots de moins de 8 lettres
* - Niveau Moyen : mots de 8 lettres ou plus
* - Niveau Difficile : deux mots à deviner à la suite (un court + un long)
* - Niveau 1 : mots de moins de 8 lettres
* - Niveau 2 : mots de 8 lettres ou plus
* - Niveau 3 : deux mots à deviner à la suite (un court + un long)
* Toutes les méthodes ≤ 50 lignes.
*/
public class GameUI {
private JFrame frame;
private JLabel imgLabel, wordLabel, triedLabel, scoreLabel, timeLabel;
private JTextField input;
private JButton tryBtn, quitBtn;
private JButton tryBtn, quitBtn, menuBtn;
private Game game;
private List<String> words;
@@ -63,7 +63,7 @@ public class GameUI {
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 */
@@ -90,16 +90,23 @@ public class GameUI {
top.add(buildTopLine(triedLabel, timeLabel));
frame.add(top, BorderLayout.NORTH);
// --- Bas : boutons + saisie
JPanel bottom = new JPanel(new BorderLayout(8, 8));
JPanel inputPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
input = new JTextField(5);
tryBtn = new JButton("Essayer");
quitBtn = new JButton("Quitter");
inputPanel.add(new JLabel("Lettre :"));
inputPanel.add(input);
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(quitBtn, BorderLayout.EAST);
bottom.add(actionPanel, BorderLayout.EAST);
frame.add(bottom, BorderLayout.SOUTH);
}
@@ -117,13 +124,22 @@ public class GameUI {
tryBtn.addActionListener(this::onTry);
input.addActionListener(this::onTry);
quitBtn.addActionListener(e -> frame.dispose());
menuBtn.addActionListener(e -> returnToMenu());
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) */
private void startRound() {
if (index >= words.size()) {
showMsg("Niveau terminé !");
showMsg("🎉 Niveau terminé !");
frame.dispose();
return;
}
@@ -187,4 +203,4 @@ public class GameUI {
private void showMsg(String msg) {
JOptionPane.showMessageDialog(frame, msg);
}
}
}