forked from menault/TD3_DEV51_Qualite_Algo
		
	maj
This commit is contained in:
		
							
								
								
									
										172
									
								
								Game.java
									
									
									
									
									
								
							
							
						
						
									
										172
									
								
								Game.java
									
									
									
									
									
								
							| @@ -1,172 +0,0 @@ | ||||
| import java.util.Random; | ||||
| import java.util.Set; | ||||
| import java.util.HashSet; | ||||
| import java.util.Locale; | ||||
| import java.util.Scanner; | ||||
|  | ||||
| /** | ||||
|  * Hangman console version. | ||||
|  * Code, variables and comments in English. | ||||
|  * Displayed text remains in French. | ||||
|  */ | ||||
| public class Game { | ||||
|  | ||||
|     // Hangman visual stages | ||||
|     private static final String[] stages = new String[] { | ||||
|         "=========\n", | ||||
|         "      |\n" + | ||||
|         "      |\n" + | ||||
|         "      |\n" + | ||||
|         "      |\n" + | ||||
|         "      |\n" + | ||||
|         "=========\n", | ||||
|         "  +---+\n" +    | ||||
|         "      |\n" + | ||||
|         "      |\n" + | ||||
|         "      |\n" + | ||||
|         "      |\n" + | ||||
|         "      |\n" + | ||||
|         "=========\n", | ||||
|         "  +---+\n" + | ||||
|         "  |   |\n" + | ||||
|         "      |\n" + | ||||
|         "      |\n" + | ||||
|         "      |\n" + | ||||
|         "      |\n" + | ||||
|         "=========\n", | ||||
|         "  +---+\n" + | ||||
|         "  |   |\n" + | ||||
|         "  O   |\n" + | ||||
|         "      |\n" + | ||||
|         "      |\n" + | ||||
|         "      |\n" + | ||||
|         "=========\n", | ||||
|         "  +---+\n" + | ||||
|         "  |   |\n" + | ||||
|         "  O   |\n" + | ||||
|         "  |   |\n" + | ||||
|         "      |\n" + | ||||
|         "      |\n" + | ||||
|         "=========\n", | ||||
|         "  +---+\n" + | ||||
|         "  |   |\n" + | ||||
|         "  O   |\n" + | ||||
|         " /|\\  |\n" + | ||||
|         "      |\n" + | ||||
|         "      |\n" + | ||||
|         "=========\n", | ||||
|         "  +---+\n" + | ||||
|         "  |   |\n" + | ||||
|         "  O   |\n" + | ||||
|         " /|\\  |\n" + | ||||
|         " / \\  |\n" + | ||||
|         "      |\n" + | ||||
|         "=========\n" | ||||
|     }; | ||||
|  | ||||
|     /** Build the masked word using found letters. */ | ||||
|     static String maskWord(String secretWord, Set<Character> foundLetters) { | ||||
|         StringBuilder sb = new StringBuilder(); | ||||
|         for (int i = 0; i < secretWord.length(); i++) { | ||||
|             char original = secretWord.charAt(i); | ||||
|             char c = Character.toLowerCase(original); | ||||
|  | ||||
|             if (!Character.isLetter(c)) { | ||||
|                 sb.append(original); | ||||
|             } else if (foundLetters.contains(c)) { | ||||
|                 sb.append(original); | ||||
|             } else { | ||||
|                 sb.append('_'); | ||||
|             } | ||||
|             if (i < secretWord.length() - 1) sb.append(' '); | ||||
|         } | ||||
|         return sb.toString(); | ||||
|     } | ||||
|  | ||||
|     /** Display the current hangman stage based on errors. */ | ||||
|     static void drawHangman(int errors) { | ||||
|         int idx = Math.min(Math.max(errors, 0), stages.length - 1); | ||||
|         System.out.println(stages[idx]); | ||||
|     } | ||||
|  | ||||
|     /** Check if all letters of the word have been found. */ | ||||
|     static boolean isWin(String secretWord, Set<Character> foundLetters) { | ||||
|         for (int i = 0; i < secretWord.length(); i++) { | ||||
|             char c = Character.toLowerCase(secretWord.charAt(i)); | ||||
|             if (Character.isLetter(c) && !foundLetters.contains(c)) return false; | ||||
|         } | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
|     public static void main(String[] args) { | ||||
|         String[] words = { | ||||
|             "ordinateur", "voiture", "maison", "soleil", "lumiere", | ||||
|             "fromage", "chocolat", "montagne", "riviere", "plage", | ||||
|             "oiseau", "papillon", "musique", "chateau", "livre", | ||||
|             "telephone", "aventure", "mystere", "foret", "fleur", | ||||
|             "chapeau", "nuage", "horloge", "chaise", "fenetre", | ||||
|             "paysage", "bouteille", "parapluie", "clavier", "souris", | ||||
|             "brouillard", "village", "histoire", "cerise", "pomme", | ||||
|             "banane", "poisson", "arbre", "cascade", "cheval" | ||||
|         }; | ||||
|  | ||||
|         Random random = new Random(); | ||||
|         String secretWord = words[random.nextInt(words.length)]; | ||||
|  | ||||
|         Set<Character> foundLetters = new HashSet<>(); | ||||
|         Set<Character> triedLetters = new HashSet<>(); | ||||
|         int errors = 0; | ||||
|         int maxErrors = stages.length - 1; | ||||
|  | ||||
|         Scanner scanner = new Scanner(System.in); | ||||
|         System.out.println("=== Game du Pendu ==="); | ||||
|  | ||||
|         while (true) { | ||||
|             drawHangman(errors); | ||||
|             System.out.println("Mot: " + maskWord(secretWord, foundLetters)); | ||||
|             System.out.println("Lettres essayées : " + triedLetters); | ||||
|             System.out.println("Erreurs : " + errors + "/" + maxErrors); | ||||
|             System.out.print("Propose une lettre: "); | ||||
|  | ||||
|             String input = scanner.nextLine().trim().toLowerCase(Locale.ROOT); | ||||
|             if (input.length() != 1 || !Character.isLetter(input.charAt(0))) { | ||||
|                 System.out.println("Entrez une seule lettre."); | ||||
|                 continue; | ||||
|             } | ||||
|             char letter = input.charAt(0); | ||||
|             if (triedLetters.contains(letter)) { | ||||
|                 System.out.println("Déjà essayé."); | ||||
|                 continue; | ||||
|             } | ||||
|             triedLetters.add(letter); | ||||
|  | ||||
|             boolean hit = false; | ||||
|             for (int i = 0; i < secretWord.length(); i++) { | ||||
|                 if (Character.toLowerCase(secretWord.charAt(i)) == letter) { | ||||
|                     foundLetters.add(letter); | ||||
|                     hit = true; | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             if (!hit) { | ||||
|                 errors++; | ||||
|                 System.out.println("Mauvaise lettre."); | ||||
|             } else { | ||||
|                 System.out.println("Bonne lettre !"); | ||||
|             } | ||||
|  | ||||
|             if (isWin(secretWord, foundLetters)) { | ||||
|                 System.out.println("\nTu as trouvé " + secretWord); | ||||
|                 drawHangman(errors); | ||||
|                 break; | ||||
|             } | ||||
|             if (errors >= maxErrors) { | ||||
|                 drawHangman(errors); | ||||
|                 System.out.println("\nPerdu ! Le mot était " + secretWord); | ||||
|                 break; | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         scanner.close(); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										165
									
								
								Jeu.java
									
									
									
									
									
								
							
							
						
						
									
										165
									
								
								Jeu.java
									
									
									
									
									
								
							| @@ -1,165 +0,0 @@ | ||||
| import java.util.Random; | ||||
| import java.util.Set; | ||||
| import java.util.HashSet; | ||||
| import java.util.Locale; | ||||
| import java.util.Scanner; | ||||
|  | ||||
| public class Jeu { | ||||
|     // liste des etats a afficher | ||||
|     private static final String[] stages = new String[] { | ||||
|         "=========\n", | ||||
|         "      |\n" + | ||||
|         "      |\n" + | ||||
|         "      |\n" + | ||||
|         "      |\n" + | ||||
|         "      |\n" + | ||||
|         "=========\n", | ||||
|         "  +---+\n" + | ||||
|         "      |\n" + | ||||
|         "      |\n" + | ||||
|         "      |\n" + | ||||
|         "      |\n" + | ||||
|         "      |\n" + | ||||
|         "=========\n", | ||||
|         "  +---+\n" + | ||||
|         "  |   |\n" + | ||||
|         "      |\n" + | ||||
|         "      |\n" + | ||||
|         "      |\n" + | ||||
|         "      |\n" + | ||||
|         "=========\n", | ||||
|         "  +---+\n" + | ||||
|         "  |   |\n" + | ||||
|         "  O   |\n" + | ||||
|         "      |\n" + | ||||
|         "      |\n" + | ||||
|         "      |\n" + | ||||
|         "=========\n", | ||||
|         "  +---+\n" + | ||||
|         "  |   |\n" + | ||||
|         "  O   |\n" + | ||||
|         "  |   |\n" + | ||||
|         "      |\n" + | ||||
|         "      |\n" + | ||||
|         "=========\n", | ||||
|         "  +---+\n" + | ||||
|         "  |   |\n" + | ||||
|         "  O   |\n" + | ||||
|         " /|\\  |\n" + | ||||
|         "      |\n" + | ||||
|         "      |\n" + | ||||
|         "=========\n", | ||||
|         "  +---+\n" + | ||||
|         "  |   |\n" + | ||||
|         "  O   |\n" + | ||||
|         " /|\\  |\n" + | ||||
|         " / \\  |\n" + | ||||
|         "      |\n" + | ||||
|         "=========\n" | ||||
|     }; | ||||
|  | ||||
|     // fonction pour masquer le mot generer aleatoirement | ||||
|     static String maskWord(String secretWord, Set<Character> foundLetters) { | ||||
|         StringBuilder sb = new StringBuilder(); | ||||
|         for (int i = 0; i < secretWord.length(); i++) { | ||||
|             char original = secretWord.charAt(i); | ||||
|             char c = Character.toLowerCase(original); | ||||
|  | ||||
|             if (!Character.isLetter(c)) { | ||||
|                 sb.append(original); | ||||
|             } else if (foundLetters.contains(c)) { | ||||
|                 sb.append(original); | ||||
|             } else { | ||||
|                 sb.append('_'); | ||||
|             } | ||||
|             if (i < secretWord.length() - 1) sb.append(' '); | ||||
|         } | ||||
|         return sb.toString(); | ||||
|     } | ||||
|  | ||||
|     // fonction qui permet d'afficher les etats du pendu | ||||
|     static void drawHangman(int errors) { | ||||
|         int idx = Math.min(Math.max(errors, 0), stages.length - 1); | ||||
|         System.out.println(stages[idx]); | ||||
|     } | ||||
|  | ||||
|     // fonction qui permet de savoir si la partie est gagnee | ||||
|     static boolean isWin(String secretWord, Set<Character> foundLetters) { | ||||
|         for (int i = 0; i < secretWord.length(); i++) { | ||||
|             char c = Character.toLowerCase(secretWord.charAt(i)); | ||||
|             if (Character.isLetter(c) && !foundLetters.contains(c)) return false; | ||||
|         } | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
|     public static void main(String[] args) { | ||||
|         String[] words = { | ||||
|             "ordinateur", "voiture", "maison", "soleil", "lumiere", | ||||
|             "fromage", "chocolat", "montagne", "rivière", "plage", | ||||
|             "oiseau", "papillon", "musique", "chateau", "livre", | ||||
|             "telephone", "aventure", "mystere", "foret", "fleur", | ||||
|             "chapeau", "nuage", "horloge", "chaise", "fenetre", | ||||
|             "paysage", "bouteille", "parapluie", "clavier", "souris", | ||||
|             "brouillard", "village", "histoire", "cerise", "pomme", | ||||
|             "banane", "poisson", "arbre", "cascade", "cheval" | ||||
|         }; | ||||
|  | ||||
|         Random random = new Random(); | ||||
|         String secretWord = words[random.nextInt(words.length)]; | ||||
|  | ||||
|         Set<Character> foundLetters = new HashSet<>(); | ||||
|         Set<Character> triedLetters = new HashSet<>(); | ||||
|         int errors = 0; | ||||
|         int maxErrors = stages.length - 1; | ||||
|  | ||||
|         Scanner scanner = new Scanner(System.in); | ||||
|         System.out.println("=== Jeu du Pendu ==="); | ||||
|  | ||||
|         while (true) { | ||||
|             drawHangman(errors); | ||||
|             System.out.println("Mot: " + maskWord(secretWord, foundLetters)); | ||||
|             System.out.println("Lettres essayées : " + triedLetters); | ||||
|             System.out.println("Erreurs : " + errors + "/" + maxErrors); | ||||
|             System.out.print("Propose une lettre: "); | ||||
|  | ||||
|             String input = scanner.nextLine().trim().toLowerCase(Locale.ROOT); | ||||
|             if (input.length() != 1 || !Character.isLetter(input.charAt(0))) { | ||||
|                 System.out.println("Entrez une seule lettre."); | ||||
|                 continue; | ||||
|             } | ||||
|             char letter = input.charAt(0); | ||||
|             if (triedLetters.contains(letter)) { | ||||
|                 System.out.println("Déjà essayé."); | ||||
|                 continue; | ||||
|             } | ||||
|             triedLetters.add(letter); | ||||
|  | ||||
|             boolean hit = false; | ||||
|             for (int i = 0; i < secretWord.length(); i++) { | ||||
|                 if (Character.toLowerCase(secretWord.charAt(i)) == letter) { | ||||
|                     foundLetters.add(letter); | ||||
|                     hit = true; | ||||
|                 } | ||||
|             } | ||||
|             if (!hit) { | ||||
|                 errors++; | ||||
|                 System.out.println("Mauvaise lettre."); | ||||
|             } else { | ||||
|                 System.out.println("Bonne lettre !"); | ||||
|             } | ||||
|  | ||||
|             if (isWin(secretWord, foundLetters)) { | ||||
|                 System.out.println("\nTu as trouvé " + secretWord); | ||||
|                 drawHangman(errors); | ||||
|                 break; | ||||
|             } | ||||
|             if (errors >= maxErrors) { | ||||
|                 drawHangman(errors); | ||||
|                 System.out.println("\nPerdu ! Le mot était " + secretWord); | ||||
|                 break; | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         scanner.close(); | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user