forked from menault/TD3_DEV51_Qualite_Algo
feat: manager that uses the words from the dictionnary in ~/res/
This commit is contained in:
51
src/WordManager.java
Normal file
51
src/WordManager.java
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
import java.io.*;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
public class WordManager {
|
||||||
|
|
||||||
|
private static final String FILE_PATH = "../res/hangman_words.txt";
|
||||||
|
|
||||||
|
private final Map<String, List<String>> wordsByDifficulty = new HashMap<>();
|
||||||
|
|
||||||
|
public WordManager() throws IOException {
|
||||||
|
wordsByDifficulty.put("EASY", new ArrayList<>());
|
||||||
|
wordsByDifficulty.put("MEDIUM", new ArrayList<>());
|
||||||
|
wordsByDifficulty.put("HARD", new ArrayList<>());
|
||||||
|
loadWords();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void loadWords() throws IOException {
|
||||||
|
try (BufferedReader reader = new BufferedReader(new FileReader(FILE_PATH))) {
|
||||||
|
String line;
|
||||||
|
String section = "";
|
||||||
|
while ((line = reader.readLine()) != null) {
|
||||||
|
line = line.trim();
|
||||||
|
if (line.startsWith("#")) {
|
||||||
|
section = line.substring(1).toUpperCase();
|
||||||
|
} else if (!line.isEmpty() && wordsByDifficulty.containsKey(section)) {
|
||||||
|
wordsByDifficulty.get(section).add(line.toLowerCase()); // make all words lowercase
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (FileNotFoundException e) {
|
||||||
|
throw new IOException("File not found: " + FILE_PATH);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRandomWord(int difficulty) {
|
||||||
|
String key = mapDifficulty(difficulty);
|
||||||
|
List<String> list = wordsByDifficulty.get(key);
|
||||||
|
if (list == null || list.isEmpty()) return null;
|
||||||
|
|
||||||
|
Random rand = new Random();
|
||||||
|
return list.get(rand.nextInt(list.size()));
|
||||||
|
}
|
||||||
|
|
||||||
|
private String mapDifficulty(int difficulty) {
|
||||||
|
return switch (difficulty) {
|
||||||
|
case 1 -> "EASY";
|
||||||
|
case 2 -> "MEDIUM";
|
||||||
|
case 3 -> "HARD";
|
||||||
|
default -> "EASY"; // Default value
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user