forked from IF-LK-2020/wordle
TODOs und Game
Ein paar TODOs für die Organisation eingefügt und an der Klasse Game gearbeitet, hauptsächlich an der Methode giveGuess()
This commit is contained in:
parent
3fc4f6dfca
commit
02d6252537
86
Game.java
86
Game.java
|
@ -1,25 +1,81 @@
|
|||
public class Game {
|
||||
String randomWord;
|
||||
String[] guesses;
|
||||
//TODO:
|
||||
Game() {
|
||||
private String word;
|
||||
private String[] guesses;
|
||||
|
||||
}
|
||||
// TODO:
|
||||
Game() {
|
||||
word = "";
|
||||
}
|
||||
|
||||
public void startGame() {
|
||||
public void startGame() {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void startWOTD() {
|
||||
/**
|
||||
* 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 boolean isGameRunning() {
|
||||
return randomWord.equals("")||randomWord.equals(null);
|
||||
}
|
||||
public void startWOTD(String wotd) {
|
||||
word = wotd;
|
||||
}
|
||||
|
||||
private void stopGame() {
|
||||
public boolean isGameRunning() {
|
||||
return word.equals("") || word.equals(null);
|
||||
}
|
||||
|
||||
}
|
||||
private void stopGame() {
|
||||
word = "";
|
||||
}
|
||||
}
|
||||
|
||||
|
|
43
Query.java
43
Query.java
|
@ -4,7 +4,10 @@ public class Query {
|
|||
Query() {
|
||||
db = new DatabaseConnector("", 0, "wordle.db", "", "");
|
||||
}
|
||||
|
||||
/**
|
||||
* Speichert die Daten des Users aus der Datenbank auf dem User-Objekt
|
||||
* @param user
|
||||
*/
|
||||
public void pullStats(User user) {
|
||||
String[][] r;
|
||||
db.executeStatement("SELECT * FROM user WHERE user LIKE" + user.getUsername());
|
||||
|
@ -26,9 +29,12 @@ public class Query {
|
|||
user.setLastDayWOTDFinished(Integer.parseInt(r[11][0]));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Pusht die Daten des Users im Parameter auf die Datenbank
|
||||
* @param user
|
||||
*/
|
||||
public void pushStats(User user) {
|
||||
|
||||
// TODO: Methode korrigieren (Update ist nicht auf den User beschränkt)
|
||||
db.executeStatement("UPDATE INTO Stats (current_streak," + " max_streak, " + "wins, " + "times_played, "
|
||||
+ "won_on_1, " + "won_on_2, " + "won_on_3, " + "won_on_4, " + "won_on_5, " + "won_on_6, "
|
||||
+ "last_day_WOTD_finished) " + "VALUES ("
|
||||
|
@ -45,12 +51,39 @@ public class Query {
|
|||
+ Integer.toString(user.getLastDayWOTDFinished())
|
||||
+ ")");
|
||||
}
|
||||
|
||||
/**
|
||||
* Überprüft ob es den Username und das Passwort in der Datenbank gibt und gibt den Erfolg als Boolean zurück
|
||||
* @param username
|
||||
* @param password
|
||||
* @return Ein Boolean
|
||||
*/
|
||||
public boolean checkLogin(String username, String password) {
|
||||
// TODO: Methode fertigstellen
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gibt ein Zufälliges Wort aus der Datenbank zurück
|
||||
* @return Ein Word als String
|
||||
*/
|
||||
public String getWord() {
|
||||
// TODO: Methode fertigstellen
|
||||
return "";
|
||||
}
|
||||
/**
|
||||
* Gibt das Wordle des Tages, welches aus der Datenbank stammt, zurück. Ergibt pro Tag immer das gleiche Wordle.
|
||||
* @return Das Wort als String
|
||||
*/
|
||||
public String getWOTD() {
|
||||
// TODO: Methode fertigstellen
|
||||
return "";
|
||||
}
|
||||
/**
|
||||
* Prüft ob das Wort in der Datenbank vorhanden ist
|
||||
* @param word ,ein String mit dem Wort
|
||||
* @return Boolean
|
||||
*/
|
||||
public boolean checkWord(String word) {
|
||||
// TODO: Methode fertigstellen
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@ public class User {
|
|||
private Game game;
|
||||
|
||||
public User (String pConnectionID){
|
||||
connectionID =pConnectionID;
|
||||
connectionID = pConnectionID;
|
||||
game = new Game();
|
||||
}
|
||||
|
||||
|
@ -45,9 +45,6 @@ public class User {
|
|||
return state;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public void setWins(int wins) {
|
||||
this.wins = wins;
|
||||
}
|
||||
|
|
|
@ -33,7 +33,7 @@ public class WordleServer extends Server {
|
|||
String connectionID = pClientIP + ":" + Integer.toString(pClientPort);
|
||||
User u = new User(connectionID);
|
||||
users.put(connectionID, u);
|
||||
send(pClientIP, pClientPort, "+OK Verbindung zum Wordle Server erfolgreich aufgebaut");
|
||||
send(pClientIP, pClientPort, "+OK Connection to Wordle-Server successful");
|
||||
u.setState(1);
|
||||
|
||||
}
|
||||
|
@ -74,7 +74,9 @@ public class WordleServer extends Server {
|
|||
}
|
||||
}
|
||||
} else if(m.equalsIgnoreCase("WOTD")) {
|
||||
|
||||
//TODO: Prüfen, wie weit der Spieler schon mit dem Spiel ist
|
||||
u.setState(2);
|
||||
send(pClientIP, pClientPort, "+OK Game ready");
|
||||
} else if(m.equalsIgnoreCase("PLAY")) {
|
||||
|
||||
} else {
|
||||
|
|
Loading…
Reference in New Issue