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.
|
* et relance une partie avec cette difficulté en utilisant PlayButtonListener.
|
||||||
*/
|
*/
|
||||||
private void showDifficultyDialog() {
|
private void showDifficultyDialog() {
|
||||||
String[] options = {"Facile", "Moyen", "Difficile"};
|
String[] options = {"Facile", "Moyen", "Difficile", "Hell"};
|
||||||
|
|
||||||
// Boîte de dialogue avec trois options
|
// Boîte de dialogue avec trois options
|
||||||
int choice = JOptionPane.showOptionDialog(
|
int choice = JOptionPane.showOptionDialog(
|
||||||
@@ -262,6 +262,9 @@ public class Action {
|
|||||||
case 2:
|
case 2:
|
||||||
newDifficulty = "difficile";
|
newDifficulty = "difficile";
|
||||||
break;
|
break;
|
||||||
|
case 3:
|
||||||
|
newDifficulty = "hell";
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
newDifficulty = "moyen";
|
newDifficulty = "moyen";
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -29,9 +29,10 @@ public class Display {
|
|||||||
JButton easyButton = new JButton("Facile");
|
JButton easyButton = new JButton("Facile");
|
||||||
JButton mediumButton = new JButton("Moyen");
|
JButton mediumButton = new JButton("Moyen");
|
||||||
JButton hardButton = new JButton("Difficile");
|
JButton hardButton = new JButton("Difficile");
|
||||||
|
JButton hellButton = new JButton("Hell");
|
||||||
|
|
||||||
// Mise en forme des boutons
|
// Mise en forme des boutons
|
||||||
JButton[] buttons = { easyButton, mediumButton, hardButton };
|
JButton[] buttons = { easyButton, mediumButton, hardButton, hellButton};
|
||||||
for (JButton button : buttons) {
|
for (JButton button : buttons) {
|
||||||
button.setAlignmentX(Component.CENTER_ALIGNMENT);
|
button.setAlignmentX(Component.CENTER_ALIGNMENT);
|
||||||
button.setPreferredSize(new Dimension(300, 100));
|
button.setPreferredSize(new Dimension(300, 100));
|
||||||
@@ -43,6 +44,7 @@ public class Display {
|
|||||||
easyButton.addActionListener(new PlayButtonListener(frame, "facile"));
|
easyButton.addActionListener(new PlayButtonListener(frame, "facile"));
|
||||||
mediumButton.addActionListener(new PlayButtonListener(frame, "moyen"));
|
mediumButton.addActionListener(new PlayButtonListener(frame, "moyen"));
|
||||||
hardButton.addActionListener(new PlayButtonListener(frame, "difficile"));
|
hardButton.addActionListener(new PlayButtonListener(frame, "difficile"));
|
||||||
|
hellButton.addActionListener(new PlayButtonListener(frame, "hell"));
|
||||||
|
|
||||||
// Ajout des composants à la fenêtre
|
// Ajout des composants à la fenêtre
|
||||||
frame.add(Box.createVerticalGlue());
|
frame.add(Box.createVerticalGlue());
|
||||||
@@ -53,6 +55,8 @@ public class Display {
|
|||||||
frame.add(mediumButton);
|
frame.add(mediumButton);
|
||||||
frame.add(Box.createVerticalStrut(20));
|
frame.add(Box.createVerticalStrut(20));
|
||||||
frame.add(hardButton);
|
frame.add(hardButton);
|
||||||
|
frame.add(Box.createVerticalStrut(20));
|
||||||
|
frame.add(hellButton);
|
||||||
frame.add(Box.createVerticalGlue());
|
frame.add(Box.createVerticalGlue());
|
||||||
|
|
||||||
// Affichage de la fenêtre
|
// Affichage de la fenêtre
|
||||||
|
|||||||
@@ -6,16 +6,17 @@ import java.util.*;
|
|||||||
/**
|
/**
|
||||||
* Classe gérant la logique du jeu du pendu.
|
* Classe gérant la logique du jeu du pendu.
|
||||||
*
|
*
|
||||||
* Cette classe choisit un mot aléatoire selon la difficulté,
|
* Cette classe sélectionne un mot (ou une combinaison de mots) aléatoire
|
||||||
* garde en mémoire le mot secret, les lettres devinées,
|
* selon la difficulté, conserve l'état du jeu (mot secret, lettres devinées,
|
||||||
* les lettres incorrectes, et le nombre de vies restantes.
|
* 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 {
|
public class Random_word {
|
||||||
|
|
||||||
/** Mot secret que le joueur doit deviner */
|
/** Mot secret que le joueur doit deviner */
|
||||||
private String secretWord;
|
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;
|
private char[] hiddenWord;
|
||||||
|
|
||||||
/** Lettres correctement devinées par le joueur */
|
/** 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é
|
* Constructeur : sélectionne un mot aléatoire selon la difficulté
|
||||||
* et initialise les structures du jeu.
|
* 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
|
* @throws RuntimeException si aucun mot n'a pu être choisi
|
||||||
*/
|
*/
|
||||||
public Random_word(String difficulty) {
|
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) {
|
if (this.secretWord == null) {
|
||||||
throw new RuntimeException("Impossible de choisir un mot aléatoire !");
|
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()];
|
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.lettersGuessed = new HashSet<>();
|
||||||
this.incorrectLetters = new HashSet<>();
|
this.incorrectLetters = new HashSet<>();
|
||||||
}
|
}
|
||||||
@@ -90,7 +109,7 @@ public class Random_word {
|
|||||||
line = line.trim();
|
line = line.trim();
|
||||||
if (!line.isEmpty()) {
|
if (!line.isEmpty()) {
|
||||||
count++;
|
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) {
|
if (random.nextInt(count) == 0) {
|
||||||
randomWord = line;
|
randomWord = line;
|
||||||
}
|
}
|
||||||
@@ -105,10 +124,10 @@ public class Random_word {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Tente une lettre proposée par le joueur.
|
* 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
|
* @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) {
|
public String guessLetter(char letter) {
|
||||||
letter = Character.toLowerCase(letter);
|
letter = Character.toLowerCase(letter);
|
||||||
@@ -118,11 +137,11 @@ public class Random_word {
|
|||||||
return "Vous avez déjà essayé cette lettre !";
|
return "Vous avez déjà essayé cette lettre !";
|
||||||
}
|
}
|
||||||
|
|
||||||
// Si la lettre est dans le mot secret
|
// Lettre correcte
|
||||||
if (secretWord.indexOf(letter) >= 0) {
|
if (secretWord.indexOf(letter) >= 0) {
|
||||||
lettersGuessed.add(letter);
|
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++) {
|
for (int i = 0; i < secretWord.length(); i++) {
|
||||||
if (secretWord.charAt(i) == letter) {
|
if (secretWord.charAt(i) == letter) {
|
||||||
hiddenWord[i] = letter;
|
hiddenWord[i] = letter;
|
||||||
|
|||||||
Reference in New Issue
Block a user