From 6a8bc81e0130366cb0bf70c83d25307aabe95772 Mon Sep 17 00:00:00 2001 From: Felix-Vimalaratnam Date: Wed, 8 Oct 2025 11:14:46 +0200 Subject: [PATCH] ajout de commentaire --- src/fr/iut/Projet/Random_word.java | 50 +++++++++++++++++++++++------- 1 file changed, 38 insertions(+), 12 deletions(-) diff --git a/src/fr/iut/Projet/Random_word.java b/src/fr/iut/Projet/Random_word.java index 677852a..bb59230 100644 --- a/src/fr/iut/Projet/Random_word.java +++ b/src/fr/iut/Projet/Random_word.java @@ -6,34 +6,43 @@ import java.util.*; public class Random_word { public static void main(String[] args) { - String motAleatoire = getRandomWord(); + // Récupère un mot aléatoire depuis le fichier Word.txt + String randomword = getRandomWord(); - if (motAleatoire == null) { + if (randomword == null) { System.err.println("Impossible de choisir un mot aléatoire !"); return; } - jouer(motAleatoire); + // Démarre le jeu avec le mot choisi + play(randomword); } + /** + * Lit les mots dans "Word.txt" et retourne un mot aléatoire. + * @return un mot aléatoire en minuscules, ou null si le fichier est introuvable ou vide + */ public static String getRandomWord() { + // Charge le fichier Word.txt depuis le package InputStream is = Random_word.class.getResourceAsStream("Word.txt"); if (is == null) { - System.err.println("File 'Word.txt' not found in the package !"); + System.err.println("Le fichier 'Word.txt' est introuvable dans le package !"); return null; } String randomWord = null; Random random = new Random(); - try (BufferedReader br = new BufferedReader(new InputStreamReader(is))) { + try (BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(is))) { String line; int count = 0; - while ((line = br.readLine()) != null) { + // Parcourt chaque ligne du fichier + while ((line = bufferedreader.readLine()) != null) { line = line.trim(); if (!line.isEmpty()) { count++; + // Sélection aléatoire d'un mot (méthode reservoir sampling) if (random.nextInt(count) == 0) { randomWord = line; } @@ -46,20 +55,30 @@ public class Random_word { return randomWord != null ? randomWord.toLowerCase() : null; } - private static void afficherEtatMot(char[] hiddenWord, Set incorrectLetters) { + /** + * Affiche l'état actuel du mot et les lettres incorrectes. + * @param hiddenWord le mot masqué avec les lettres découvertes + * @param incorrectLetters les lettres déjà essayées mais incorrectes + */ + private static void showwordstatus(char[] hiddenWord, Set incorrectLetters) { System.out.print("\nMot actuel : "); - for (char c : hiddenWord) { - System.out.print(c + " "); + for (char Character : hiddenWord) { + System.out.print(Character + " "); } System.out.println(); System.out.println("Lettres incorrectes : " + incorrectLetters); } - public static void jouer(String secretWord) { + /** + * Logique principale du jeu : gère les essais, met à jour l'état du mot, + * suit le nombre de vies restantes, et détermine la victoire ou la défaite. + * @param secretWord le mot que le joueur doit deviner + */ + public static void play(String secretWord) { Scanner scanner = new Scanner(System.in); Set lettersGuessed = new HashSet<>(); Set incorrectLetters = new HashSet<>(); - int lives = 8; + int lives = 8; // nombre d'essais char[] hiddenWord = new char[secretWord.length()]; Arrays.fill(hiddenWord, '_'); @@ -68,11 +87,13 @@ public class Random_word { System.out.println("Le mot contient " + secretWord.length() + " lettres."); while (lives > 0) { - afficherEtatMot(hiddenWord, incorrectLetters); + // Affiche le mot actuel et les lettres incorrectes + showwordstatus(hiddenWord, incorrectLetters); System.out.print("Entrez une lettre : "); String input = scanner.nextLine().toLowerCase(); + // Vérifie que l'entrée est valide if (input.length() != 1 || !Character.isLetter(input.charAt(0))) { System.out.println("Entrez une seule lettre !"); continue; @@ -80,11 +101,13 @@ public class Random_word { char letter = input.charAt(0); + // Vérifie si la lettre a déjà été essayée if (lettersGuessed.contains(letter) || incorrectLetters.contains(letter)) { System.out.println("Vous avez déjà essayé cette lettre !"); continue; } + // Vérifie si la lettre fait partie du mot secret if (secretWord.indexOf(letter) >= 0) { lettersGuessed.add(letter); for (int i = 0; i < secretWord.length(); i++) { @@ -94,17 +117,20 @@ public class Random_word { } System.out.println("Bien joué !"); } else { + // Lettre incorrecte : décrémente le nombre de vies incorrectLetters.add(letter); lives--; System.out.println("Mauvaise lettre ! Il vous reste " + lives + " vies."); } + // Vérifie si le mot complet a été trouvé if (String.valueOf(hiddenWord).equals(secretWord)) { System.out.println("\nFélicitations ! Vous avez trouvé le mot : " + secretWord); return; } } + // Le joueur a perdu System.out.println("\nVous avez perdu ! Le mot était : " + secretWord); } }