Vous pouvez simplement ajouter les caractères à une liste de tableau comme ils sont entrés et vérifier si vous avez vu la lettre avant:
ArrayList<Character> usedLetters = new ArrayList<>();
public boolean UserTypedLetterBefore(char letter) {
if(usedLetters.contains(letter))
return true;
usedLetters.add(letter);
return false;
}
Puis, quand le jeu est terminé, vous appelez simplement usedLetters.clear()
pour vider la liste et recommencez. Cette méthode peut également garder une trace du nombre d'essais en faisant usedLetters.size()
parce que chaque conjecture est une lettre
Si vous voulez être efficace supplémentaire, vous pouvez utiliser un HashSet
à la place (bien qu'il ne soit pas nécessaire dans votre cas) :
HashSet<Character> usedLetters = new HashSet<>();
public boolean UserTypedLetterBefore(char letter) {
if(usedLetters.contains(letter))
return true;
usedLetters.add(letter);
return false;
}
Ce sera l'option idéale pour grands ensembles de données, mais dans votre cas, puisque vous avez seulement 26 lettres possibles, vous ne remarquerez une différence de vitesse.
Une troisième option consiste à utiliser une matrice primitive, comme par exemple:
boolean[] usedLetters = new boolean[26];
public boolean UserTypedLetterBefore(char letter) {
letter = Character.toLowerCase(letter);
if(usedLetters[letter - 'a'])
return true;
usedLetters[letter - 'a'] = true;
return false;
}
où chaque indice est un pavillon à cette lettre utilisée. En effectuant des maths sur le caractère letter - 'a'
, nous pouvons faire 'a' = 0
afin que nous puissions l'utiliser comme index dans notre tableau dont nous avons besoin. Le Character.toLowerCase()
est ajouté en tant que sécurité.
pourquoi ne pas garder un tableau de lettres devinées, et voir si le deviner lettres contient l'entrée avant de vérifier pour voir si le mot contient l'entrée? – brw59
ce serait ma solution mais je veux voir si quelqu'un a une meilleure solution. Car ce ne serait pas propre d'avoir un tableau avec toute la lettre de l'alphabet. Mais je pense à enregistrer la lettre d'entrées dans un tableau. – ManuellsenDeve
Pourquoi pas? En outre, ce n'est pas comme si le bourreau était une application gourmande en mémoire ou consommatrice de ressources. Je vous suggère de stocker les valeurs dans un tableau et de vérifier si c'est dans le tableau avant de le tester par rapport au mot – brw59