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