public class Game { private String word; private String[] guesses; private int guessCount; // 0 wenn es keinen Wert gibt, 1 wenn das letzte Spiel gewonnen wurde und 2 wenn // es verloren wurde private int won; Game() { word = ""; won = 0; guesses = new String[5]; } /** * 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 g) { String[] guess = transformToArray(g); String[] word = transformToArray(this.word); String s = ""; if (word.length == 5 && guess.length == 5) { for (int i = 0; i < this.word.length(); i++) { if (guess[i].equalsIgnoreCase(word[i])) { word[i] = null; s += "2"; } else { boolean found = false; for (int r = 0; r < word.length; r++) { if (guess[i].equalsIgnoreCase(word[r]) && (guess[r] == null || !guess[r].equals(word[r]))) { s += "1"; found = true; word[r] = null; break; } } if (!found) { s += "0"; } } guess[i] = null; } guessCount++; storeInArray(g); if (s.contains("22222")) { won = 1; stopGame(); } else if (guessCount >= 6) { won = 2; stopGame(); } } return s; } private String[] transformToArray(String s) { String[] temp = new String[s.length()]; for (int i = 0; i < s.length(); i++) { temp[i] = "" + s.charAt(i); } return temp; } public String checkGuess(String g) { String[] guess = transformToArray(g); String[] word = transformToArray(this.word); String s = ""; if (word.length == 5 && guess.length == 5) { for (int i = 0; i < this.word.length(); i++) { if (guess[i].equalsIgnoreCase(word[i])) { word[i] = null; s += "2"; } else { boolean found = false; for (int r = 0; r < word.length; r++) { if (guess[i].equalsIgnoreCase(word[r]) && (guess[r] == null || !guess[r].equals(word[r]))) { s += "1"; found = true; word[r] = null; break; } } if (!found) { s += "0"; } } guess[i] = null; } } return s; } /** * Speichert das Wort in der nächsten freien Stelle im Array und gibt danach * zurück, ob das Array voll ist, d.h. das Spiel beendet werden muss * * @param word * @return Boolean */ private void storeInArray(String word) { for (int i = 0; i < guesses.length; i++) { if (guesses[i] == null) { guesses[i] = word; break; } } } public void startGame(String word) { System.out.println(word); guessCount = 0; this.word = word; } public void stopGame() { word = ""; guesses = new String[guesses.length]; } public String[] getGuesses() { return guesses; } public String getGuessIndex(int index) { return guesses[index]; } public void setGuessesIndex(String guess, int index) { guesses[index] = guess; } public void setWord(String word) { if (word != null) { this.word = word; } } public String getWord() { return word; } public int getGuessesCount() { return guessCount; } /** * Gibt 0 zurück wenn das Spiel nicht läuft und noch kein Spiel gespielt wurde * seitdem das Objekt existiert. Gibt 1 zurück wenn das Spiel läuft. Gibt 2 * zurück wenn das letzte beendete Spiel gewonnen wurde und kein Spiel läuft. * Gibt 3 zurück wenn das letzte beendete Spiel verloren wurde und kein Spiel * läuft. * * @return Eine Zahl von 0 bis 3 */ public int getGameStatus() { if (word.equals("") && won == 0) { return 0; } if (!word.equals("")) { return 1; } return won + 1; } }