forked from menault/TD3_DEV51_Qualite_Algo
pendu 1
This commit is contained in:
88
PenduWIlfried/GameState.java
Normal file
88
PenduWIlfried/GameState.java
Normal file
@@ -0,0 +1,88 @@
|
||||
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;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user