forked from IF-LK-2020/wordle
ZU VIEL gemacht
Mein Brain ist kaputt
This commit is contained in:
141
Game.java
141
Game.java
@@ -1,15 +1,15 @@
|
||||
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;
|
||||
|
||||
// TODO:
|
||||
Game() {
|
||||
word = "";
|
||||
won = 0;
|
||||
guesses = new String[4];
|
||||
guesses = new String[5];
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -23,106 +23,131 @@ public class Game {
|
||||
* @return Eine Zahlenfolge mit der Korrektheit des Worts
|
||||
*/
|
||||
public String giveGuess(String g) {
|
||||
StringBuilder guess = new StringBuilder(g);
|
||||
StringBuilder word = new StringBuilder(this.word);
|
||||
String[] guess = transformToArray(g);
|
||||
String[] word = transformToArray(this.word);
|
||||
String s = "";
|
||||
for (int i = 0; i < this.word.length(); i++) {
|
||||
if (guess.charAt(0) == word.charAt(0)) {
|
||||
word.deleteCharAt(0);
|
||||
s += "2";
|
||||
} else {
|
||||
boolean found = false;
|
||||
for (int r = 1; r < word.length(); r++) {
|
||||
if (guess.charAt(0) == word.charAt(r)) {
|
||||
s += "1";
|
||||
found = true;
|
||||
word.deleteCharAt(r);
|
||||
break;
|
||||
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";
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
s += "0";
|
||||
}
|
||||
guess[i] = null;
|
||||
}
|
||||
guessCount++;
|
||||
storeInArray(g);
|
||||
if (s.contains("22222")) {
|
||||
won = 1;
|
||||
stopGame();
|
||||
} else if (guessCount >= 6) {
|
||||
won = 2;
|
||||
stopGame();
|
||||
}
|
||||
guess.deleteCharAt(0);
|
||||
}
|
||||
if (word.isEmpty()) {
|
||||
won = 1;
|
||||
stopGame();
|
||||
} else if (storeInArray(guess.toString())) {
|
||||
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) {
|
||||
StringBuilder guess = new StringBuilder(g);
|
||||
StringBuilder word = new StringBuilder(this.word);
|
||||
String[] guess = transformToArray(g);
|
||||
String[] word = transformToArray(this.word);
|
||||
String s = "";
|
||||
for (int i = 0; i < this.word.length(); i++) {
|
||||
if (guess.charAt(0) == word.charAt(0)) {
|
||||
word.deleteCharAt(0);
|
||||
s += "2";
|
||||
} else {
|
||||
boolean found = false;
|
||||
for (int r = 1; r < word.length(); r++) {
|
||||
if (guess.charAt(0) == word.charAt(r)) {
|
||||
s += "1";
|
||||
found = true;
|
||||
word.deleteCharAt(r);
|
||||
break;
|
||||
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";
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
s += "0";
|
||||
}
|
||||
guess[i] = null;
|
||||
}
|
||||
guess.deleteCharAt(0);
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
/**
|
||||
* Speichert das Wort in der nächsten freien Stelle im Array und gibt danach
|
||||
* zurück, ob das Array voll ist
|
||||
* zurück, ob das Array voll ist, d.h. das Spiel beendet werden muss
|
||||
*
|
||||
* @param word
|
||||
* @return Boolean
|
||||
*/
|
||||
private boolean storeInArray(String word) {
|
||||
private void storeInArray(String word) {
|
||||
for (int i = 0; i < guesses.length; i++) {
|
||||
if (guesses[i] == null) {
|
||||
guesses[i] = word;
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public void startGame(String word) {
|
||||
System.out.println(word);
|
||||
guessCount = 0;
|
||||
this.word = word;
|
||||
}
|
||||
|
||||
public boolean isGameRunning() {
|
||||
return !word.equals("") || !word.equals(null);
|
||||
}
|
||||
|
||||
public void stopGame() {
|
||||
word = "";
|
||||
guesses = new String[guesses.length - 1];
|
||||
guesses = new String[guesses.length];
|
||||
}
|
||||
|
||||
public String[] getGuesses() {
|
||||
return guesses;
|
||||
}
|
||||
|
||||
public void setGuesses(String[] guesses) {
|
||||
this.guesses = guesses;
|
||||
public String getGuessIndex(int index) {
|
||||
return guesses[index];
|
||||
}
|
||||
|
||||
public void setGuessesIndex(String guess, int index) {
|
||||
guesses[index] = guess;
|
||||
}
|
||||
|
||||
public void setWord(String word) {
|
||||
this.word = word;
|
||||
if (word != null) {
|
||||
this.word = word;
|
||||
}
|
||||
}
|
||||
|
||||
public String getWord() {
|
||||
return word;
|
||||
}
|
||||
|
||||
public int getGuessesCount() {
|
||||
return guessCount;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user