forked from menault/TD3_DEV51_Qualite_Algo
89 lines
2.2 KiB
Java
89 lines
2.2 KiB
Java
import java.util.*;
|
|
|
|
public class GameState {
|
|
|
|
private String word;
|
|
private char[] hiddenWord;
|
|
private int errors;
|
|
private Set<Character> triedLetters;
|
|
private static final int MAX_ERRORS = 9;
|
|
|
|
/* Constructeur : initialise le mot à deviner */
|
|
public GameState(String wordToGuess) {
|
|
this.word = wordToGuess.toLowerCase();
|
|
this.hiddenWord = new char[word.length()];
|
|
|
|
for (int i = 0; i < word.length(); i++) {
|
|
if (word.charAt(i) == ' ') {
|
|
hiddenWord[i] = ' '; // espaces visibles dans les mots difficiles
|
|
} else {
|
|
hiddenWord[i] = '_';
|
|
}
|
|
}
|
|
|
|
this.triedLetters = new HashSet<>();
|
|
this.errors = 0;
|
|
}
|
|
|
|
/* Tente une lettre dans le mot */
|
|
public void tryLetter(char letter) {
|
|
letter = Character.toLowerCase(letter);
|
|
triedLetters.add(letter);
|
|
boolean found = false;
|
|
|
|
for (int i = 0; i < word.length(); i++) {
|
|
if (word.charAt(i) == letter) {
|
|
hiddenWord[i] = letter;
|
|
found = true;
|
|
}
|
|
}
|
|
|
|
if (!found) {
|
|
errors++;
|
|
}
|
|
}
|
|
|
|
/* Vérifie si une lettre a déjà été essayée */
|
|
public boolean hasTriedLetter(char letter) {
|
|
letter = Character.toLowerCase(letter);
|
|
return triedLetters.contains(letter);
|
|
}
|
|
|
|
/* Vérifie si le joueur a gagné */
|
|
public boolean isWon() {
|
|
for (char c : hiddenWord) {
|
|
if (c == '_') {
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
/* Vérifie si le joueur a perdu */
|
|
public boolean isLost() {
|
|
return errors >= MAX_ERRORS;
|
|
}
|
|
|
|
/* Retourne le nombre d'erreurs */
|
|
public int getErrors() {
|
|
return errors;
|
|
}
|
|
|
|
/* Retourne le mot caché avec espaces entre lettres */
|
|
public String getHiddenWord() {
|
|
StringBuilder sb = new StringBuilder();
|
|
for (int i = 0; i < hiddenWord.length; i++) {
|
|
sb.append(hiddenWord[i]);
|
|
if (i < hiddenWord.length - 1) {
|
|
sb.append(' ');
|
|
}
|
|
}
|
|
return sb.toString();
|
|
}
|
|
|
|
/* Retourne le mot original */
|
|
public String getWord() {
|
|
return word;
|
|
}
|
|
}
|