forked from menault/TD3_DEV51_Qualite_Algo
		
	mise en place de hell le vrai difficile
This commit is contained in:
		
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -235,7 +235,7 @@ public class Action { | ||||
|      * et relance une partie avec cette difficulté en utilisant PlayButtonListener. | ||||
|      */ | ||||
|     private void showDifficultyDialog() { | ||||
|         String[] options = {"Facile", "Moyen", "Difficile"}; | ||||
|         String[] options = {"Facile", "Moyen", "Difficile", "Hell"}; | ||||
|  | ||||
|         // Boîte de dialogue avec trois options | ||||
|         int choice = JOptionPane.showOptionDialog( | ||||
| @@ -262,6 +262,9 @@ public class Action { | ||||
|                 case 2: | ||||
|                     newDifficulty = "difficile"; | ||||
|                     break; | ||||
|                 case 3: | ||||
|                     newDifficulty = "hell"; | ||||
|                     break; | ||||
|                 default: | ||||
|                     newDifficulty = "moyen"; | ||||
|                     break; | ||||
|   | ||||
| @@ -29,9 +29,10 @@ public class Display { | ||||
|         JButton easyButton = new JButton("Facile"); | ||||
|         JButton mediumButton = new JButton("Moyen"); | ||||
|         JButton hardButton = new JButton("Difficile"); | ||||
|         JButton hellButton = new JButton("Hell"); | ||||
|  | ||||
|         // Mise en forme des boutons | ||||
|         JButton[] buttons = { easyButton, mediumButton, hardButton }; | ||||
|         JButton[] buttons = { easyButton, mediumButton, hardButton, hellButton}; | ||||
|         for (JButton button : buttons) { | ||||
|             button.setAlignmentX(Component.CENTER_ALIGNMENT); | ||||
|             button.setPreferredSize(new Dimension(300, 100)); | ||||
| @@ -43,6 +44,7 @@ public class Display { | ||||
|         easyButton.addActionListener(new PlayButtonListener(frame, "facile")); | ||||
|         mediumButton.addActionListener(new PlayButtonListener(frame, "moyen")); | ||||
|         hardButton.addActionListener(new PlayButtonListener(frame, "difficile")); | ||||
|         hellButton.addActionListener(new PlayButtonListener(frame, "hell")); | ||||
|  | ||||
|         // Ajout des composants à la fenêtre | ||||
|         frame.add(Box.createVerticalGlue()); | ||||
| @@ -53,6 +55,8 @@ public class Display { | ||||
|         frame.add(mediumButton); | ||||
|         frame.add(Box.createVerticalStrut(20)); | ||||
|         frame.add(hardButton); | ||||
|         frame.add(Box.createVerticalStrut(20)); | ||||
|         frame.add(hellButton); | ||||
|         frame.add(Box.createVerticalGlue()); | ||||
|  | ||||
|         // Affichage de la fenêtre | ||||
|   | ||||
| @@ -6,16 +6,17 @@ import java.util.*; | ||||
| /** | ||||
|  * Classe gérant la logique du jeu du pendu. | ||||
|  *  | ||||
|  * Cette classe choisit un mot aléatoire selon la difficulté, | ||||
|  * garde en mémoire le mot secret, les lettres devinées, | ||||
|  * les lettres incorrectes, et le nombre de vies restantes. | ||||
|  * Cette classe sélectionne un mot (ou une combinaison de mots) aléatoire | ||||
|  * selon la difficulté, conserve l'état du jeu (mot secret, lettres devinées, | ||||
|  * lettres incorrectes, nombre de vies) et fournit des méthodes pour deviner | ||||
|  * des lettres et vérifier l'état du jeu. | ||||
|  */ | ||||
| public class Random_word { | ||||
|  | ||||
|     /** Mot secret que le joueur doit deviner */ | ||||
|     private String secretWord; | ||||
|  | ||||
|     /** Tableau représentant le mot caché avec les lettres découvertes */ | ||||
|     /** Tableau représentant le mot caché avec les lettres découvertes et espaces */ | ||||
|     private char[] hiddenWord; | ||||
|  | ||||
|     /** Lettres correctement devinées par le joueur */ | ||||
| @@ -31,19 +32,37 @@ public class Random_word { | ||||
|      * Constructeur : sélectionne un mot aléatoire selon la difficulté | ||||
|      * et initialise les structures du jeu. | ||||
|      *  | ||||
|      * @param difficulty Niveau de difficulté ("facile", "moyen", "difficile") | ||||
|      * @param difficulty Niveau de difficulté ("facile", "moyen", "difficile", "hell") | ||||
|      * @throws RuntimeException si aucun mot n'a pu être choisi | ||||
|      */ | ||||
|     public Random_word(String difficulty) { | ||||
|         this.secretWord = getRandomWord(difficulty); | ||||
|         if (difficulty.equalsIgnoreCase("hell")) { | ||||
|             // En mode Hell, on choisit deux mots faciles et on les concatène avec un espace | ||||
|             String firstWord = getRandomWord("facile"); | ||||
|             String secondWord = getRandomWord("facile"); | ||||
|  | ||||
|             if (firstWord == null || secondWord == null) { | ||||
|                 throw new RuntimeException("Impossible de choisir deux mots pour le mode Hell !"); | ||||
|             } | ||||
|  | ||||
|             this.secretWord = firstWord + " " + secondWord; | ||||
|         } else { | ||||
|             // Pour les autres difficultés, on choisit un seul mot correspondant | ||||
|             this.secretWord = getRandomWord(difficulty); | ||||
|         } | ||||
|  | ||||
|         if (this.secretWord == null) { | ||||
|             throw new RuntimeException("Impossible de choisir un mot aléatoire !"); | ||||
|         } | ||||
|  | ||||
|         this.lives = 8;  // nombre de vies par défaut | ||||
|         this.lives = 8; // nombre de vies par défaut | ||||
|         this.hiddenWord = new char[secretWord.length()]; | ||||
|         Arrays.fill(this.hiddenWord, '_');  // initialise le mot caché avec des underscores | ||||
|  | ||||
|         // Initialise le mot caché : underscore pour les lettres, espace conservé | ||||
|         for (int i = 0; i < secretWord.length(); i++) { | ||||
|             hiddenWord[i] = (secretWord.charAt(i) == ' ') ? ' ' : '_'; | ||||
|         } | ||||
|  | ||||
|         this.lettersGuessed = new HashSet<>(); | ||||
|         this.incorrectLetters = new HashSet<>(); | ||||
|     } | ||||
| @@ -90,7 +109,7 @@ public class Random_word { | ||||
|                 line = line.trim(); | ||||
|                 if (!line.isEmpty()) { | ||||
|                     count++; | ||||
|                     // Choix aléatoire d'une ligne avec la méthode de Reservoir Sampling | ||||
|                     // Choix aléatoire d'une ligne avec Reservoir Sampling | ||||
|                     if (random.nextInt(count) == 0) { | ||||
|                         randomWord = line; | ||||
|                     } | ||||
| @@ -105,10 +124,10 @@ public class Random_word { | ||||
|  | ||||
|     /** | ||||
|      * Tente une lettre proposée par le joueur. | ||||
|      * Met à jour l'état du jeu (mot caché, lettres incorrectes, vies). | ||||
|      * Met à jour l'état du jeu (mot caché, lettres incorrectes, vies restantes). | ||||
|      *  | ||||
|      * @param letter lettre proposée | ||||
|      * @return message d'information pour le joueur | ||||
|      * @return message d'information pour le joueur (succès, erreur ou fin de partie) | ||||
|      */ | ||||
|     public String guessLetter(char letter) { | ||||
|         letter = Character.toLowerCase(letter); | ||||
| @@ -118,11 +137,11 @@ public class Random_word { | ||||
|             return "Vous avez déjà essayé cette lettre !"; | ||||
|         } | ||||
|  | ||||
|         // Si la lettre est dans le mot secret | ||||
|         // Lettre correcte | ||||
|         if (secretWord.indexOf(letter) >= 0) { | ||||
|             lettersGuessed.add(letter); | ||||
|  | ||||
|             // Remplace les underscores correspondants par la lettre devinée | ||||
|             // Remplace les underscores par la lettre devinée | ||||
|             for (int i = 0; i < secretWord.length(); i++) { | ||||
|                 if (secretWord.charAt(i) == letter) { | ||||
|                     hiddenWord[i] = letter; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user