forked from IF-LK-2020/wordle
Ein paar TODOs für die Organisation eingefügt und an der Klasse Game gearbeitet, hauptsächlich an der Methode giveGuess()
82 lines
1.8 KiB
Java
82 lines
1.8 KiB
Java
public class Game {
|
|
private String word;
|
|
private String[] guesses;
|
|
|
|
// TODO:
|
|
Game() {
|
|
word = "";
|
|
}
|
|
|
|
public void startGame() {
|
|
|
|
}
|
|
|
|
/**
|
|
* Vergleicht den übergebenen Guess mit dem im Spiel gespeicherten Wort und
|
|
* überprüft die Korrektheit des Parameter-Strings und gibt eine Zeichenfolge
|
|
* aus der Korrektheit der Buchstaben zurück (z.B. 10020). Speichert außerdem
|
|
* den Guess in dem Array guesses[].Gibt keine Information darüber ob das Wort
|
|
* in der Datenbank existiert oder ob es die korrekte Länge hat.
|
|
*
|
|
* @param guess ,der String mit dem Wort
|
|
* @return Eine Zahlenfolge mit der Korrektheit des Worts
|
|
*/
|
|
public String giveGuess(String guess) {
|
|
String g = guess;
|
|
StringBuilder word = new StringBuilder(this.word);
|
|
String s = "";
|
|
for (int i = 0; i < word.length(); i++) {
|
|
if (guess.charAt(0) == word.charAt(0)) {
|
|
word.deleteCharAt(0);
|
|
s += "2";
|
|
} else {
|
|
boolean found = false;
|
|
for (int r = 0; r < word.length(); r++) {
|
|
if (r != i && guess.charAt(0) == word.charAt(r)) {
|
|
s += "1";
|
|
found = true;
|
|
word.deleteCharAt(r);
|
|
break;
|
|
}
|
|
}
|
|
if (!found) {
|
|
s += "0";
|
|
}
|
|
}
|
|
guess.replaceFirst(guess, "");
|
|
}
|
|
if(storeInArray(g)) {
|
|
stopGame();
|
|
}
|
|
return s;
|
|
}
|
|
|
|
/**
|
|
* Speichert das Wort in der nächsten freien Stelle im Array und gibt danach zurück, ob das Array voll ist
|
|
*
|
|
* @param word
|
|
* @return Boolean
|
|
*/
|
|
private boolean storeInArray(String word) {
|
|
for (int i = 0; i < guesses.length; i++) {
|
|
if (guesses[i] == null) {
|
|
guesses[i] = word;
|
|
return i == guesses.length - 1;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
public void startWOTD(String wotd) {
|
|
word = wotd;
|
|
}
|
|
|
|
public boolean isGameRunning() {
|
|
return word.equals("") || word.equals(null);
|
|
}
|
|
|
|
private void stopGame() {
|
|
word = "";
|
|
}
|
|
}
|