3 Commits

Author SHA1 Message Date
8b421b3cba michel 2025-10-08 17:37:40 +02:00
15a280ad2c conflit 2025-10-08 17:24:12 +02:00
4b7d0c7753 nul 2025-10-08 17:14:42 +02:00
4 changed files with 25 additions and 15 deletions

View File

@@ -127,4 +127,4 @@ public class Words {
} }
return out; return out;
} }
} }

View File

@@ -10,9 +10,9 @@ import java.util.List;
/** /**
* Interface graphique du pendu avec niveaux : * Interface graphique du pendu avec niveaux :
* - 1 : mots < 8 lettres * - facile : mots < 8 lettres
* - 2 : mots ≥ 8 lettres * - moyen : mots ≥ 8 lettres
* - 3 : deux mots (score + chrono cumulés) * - difficile : deux mots (score + chrono cumulés)
* Boutons : Essayer / Nouvelle partie / Menu / Quitter. * Boutons : Essayer / Nouvelle partie / Menu / Quitter.
* (Toutes les méthodes ≤ 50 lignes) * (Toutes les méthodes ≤ 50 lignes)
*/ */
@@ -29,11 +29,11 @@ public class GameUI {
private String currentWord = ""; private String currentWord = "";
private Timer timer; private Timer timer;
// Cumul de session (niveau 3) // Cumul de session (niveau difficile)
private long sessionStartNano = -1L; private long sessionStartNano = -1L;
private int sessionScore = 0; private int sessionScore = 0;
/** Reçoit la difficulté (1, 2, 3). */ /** Reçoit la difficulté (facile, moyen, difficile). */
public GameUI(int level) { public GameUI(int level) {
this.level = level; this.level = level;
} }
@@ -88,9 +88,17 @@ public class GameUI {
scoreLabel = new JLabel("Score : 0"); scoreLabel = new JLabel("Score : 0");
timeLabel = new JLabel("Temps : 0s"); timeLabel = new JLabel("Temps : 0s");
JPanel top = new JPanel(new GridLayout(2, 1)); JLabel titleLabel = new JLabel("Sauver Michel!!", SwingConstants.CENTER);
top.add(buildTopLine(wordLabel, scoreLabel)); titleLabel.setFont(new Font("Arial", Font.BOLD, 22));
top.add(buildTopLine(triedLabel, timeLabel)); titleLabel.setForeground(Color.RED);
JPanel top = new JPanel(new BorderLayout());
JPanel infoPanel = new JPanel(new GridLayout(2, 1));
infoPanel.add(buildTopLine(wordLabel, scoreLabel));
infoPanel.add(buildTopLine(triedLabel, timeLabel));
top.add(titleLabel, BorderLayout.NORTH);
top.add(infoPanel, BorderLayout.CENTER);
frame.add(top, BorderLayout.NORTH); frame.add(top, BorderLayout.NORTH);
JPanel bottom = new JPanel(new BorderLayout(8, 8)); JPanel bottom = new JPanel(new BorderLayout(8, 8));
@@ -223,4 +231,4 @@ public class GameUI {
private void showMsg(String msg) { private void showMsg(String msg) {
JOptionPane.showMessageDialog(frame, msg); JOptionPane.showMessageDialog(frame, msg);
} }
} }

View File

@@ -3,7 +3,7 @@ package front;
import javax.swing.*; import javax.swing.*;
import java.awt.*; import java.awt.*;
/* /**
* Menu de démarrage du jeu du pendu. * Menu de démarrage du jeu du pendu.
* Permet de choisir la difficulté (facile, moyen ou difficile). * Permet de choisir la difficulté (facile, moyen ou difficile).
*/ */
@@ -14,7 +14,7 @@ public class MenuUI {
* Interface graphique de la page d'accueil du jeu du pendu. * Interface graphique de la page d'accueil du jeu du pendu.
*/ */
public void show() { public void show() {
frame = new JFrame("Jeu du Pendu - Sélection de la difficulté"); frame = new JFrame("Jeu du Pendu");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 300); frame.setSize(400, 300);
frame.setLocationRelativeTo(null); frame.setLocationRelativeTo(null);
@@ -41,7 +41,7 @@ public class MenuUI {
frame.setVisible(true); frame.setVisible(true);
} }
/* Lance le jeu avec le niveau choisi */ /** Lance le jeu avec le niveau choisi */
private void startGame(int level) { private void startGame(int level) {
frame.dispose(); // ferme le menu frame.dispose(); // ferme le menu
GameUI ui = new GameUI(level); GameUI ui = new GameUI(level);

View File

@@ -8,10 +8,12 @@
- Affichage dune **image différente du pendu** à chaque erreur - Affichage dune **image différente du pendu** à chaque erreur
- Lecture de mots depuis un **fichier externe** (`bibliothèque/mots.txt`) - Lecture de mots depuis un **fichier externe** (`bibliothèque/mots.txt`)
- Validation des entrées (une seule LETTRE à la fois) - Validation des entrées (une seule LETTRE à la fois)
- Bouton **“Nouvelle partie”** pour rejouer sans relancer le programme - Bouton **“Nouvelle partie”** pour rejouer sans relancer le programme
- Bouton **“Quitter”** pour quitter le programme
- Bouton **“Menu”** pour retourner à la page menu et pouvoir rechoisir le niveau de difficulté
- Messages de victoire / défaite - Messages de victoire / défaite
- Score + Chronomètre en direct - Score + Chronomètre en direct
- Sélection du niveau dans le menu avant de jouer - Sélection du niveau dans le menu avant de jouer (Facile, Moyen, Difficile)
--- ---