diff --git a/src/Game.java b/src/Game.java index fe43e4b..46b2e2c 100644 --- a/src/Game.java +++ b/src/Game.java @@ -117,15 +117,7 @@ public class Game { if (user == null) { send("-ERR not logged in."); } else { - databaseConnector.executeStatement("SELECT word FROM words WHERE id = " + (int) (Math.random() * 950)); - QueryResult result = databaseConnector.getCurrentQueryResult(); - if (result != null && result.getData().length > 0) { - wordle = result.getData()[0][0].toLowerCase(); - phase = GAME_PHASE; - send("+OK game ready"); - } else { - send("-ERR fatal error: Wordle could not be generated."); - } + playRandomWordle(); } } else { sendUniversalError(); @@ -137,7 +129,9 @@ public class Game { if (msg.startsWith("send ")) { String args = msg.substring(5); -System.out.println(wordle); + + System.out.println(wordle); + if (args.length() == 5) { databaseConnector.executeStatement("SELECT word FROM words WHERE word LIKE '" + args + "'"); @@ -165,20 +159,33 @@ System.out.println(wordle); send(code); if (code.equals("22222")) { // und ein wordle ist 5 Buchstaben lang :D send("game won"); + + wordle = null; if (user != null) { + user.increaseCurrentStreak(); + if (user.getMaxStreak() < user.getCurrentStreak()) { + user.setMaxStreak(user.getCurrentStreak()); + } + user.increaseWonInTurn(count + 1); + updateStats(); phase = END_PHASE; } else { phase = LOGIN_PHASE; } - } else if (count == 6) { + count = 0; + } else if (count == 5) { send("game lost"); if (user != null) { + user.setCurrentStreak(0); + updateStats(); phase = END_PHASE; } else { phase = LOGIN_PHASE; } + count = 0; } else { send("game continues"); + count++; } } else { @@ -194,6 +201,7 @@ System.out.println(wordle); } else if (msg.startsWith("exit")) { if (user != null) { + send("+OK"); phase = END_PHASE; } else { send("-ERR not logged in."); @@ -210,20 +218,49 @@ System.out.println(wordle); send("times Played: " + user.getTimesPlayed()); - send("win Percentage: " + user.getWinPercentage()); + send("win Percentage: " + (int) user.getWinPercentage() + "%"); send("current Streak: " + user.getCurrentStreak()); send("max Streak: " + user.getMaxStreak()); - for (int i = 1; i < 6; i++) { - send("won in Turn1: " + user.getWonInTurn(i)); + for (int i = 1; i <= 6; i++) { + send("won in Turn" + i + ": " + user.getWonInTurn(i)); } } else if (msg.startsWith("play")) { + if (wordle == null) { + playRandomWordle(); + } else { + phase = GAME_PHASE; + send("+OK game ready"); + } + } else { + sendUniversalError(); + } + } + + private void updateStats() { + user.increaseTimesPlayed(); + int totalWins = 0; + for (int i = 1; i <= 6; i++) { + totalWins += user.getWonInTurn(i); + } + float winP = (float) totalWins / user.getTimesPlayed(); + + user.setWinPercentage(Math.round(winP * 100)); + } + + private void playRandomWordle() { + databaseConnector.executeStatement("SELECT word FROM words WHERE id = " + (int) (Math.random() * 950)); + QueryResult result = databaseConnector.getCurrentQueryResult(); + if (result != null && result.getData().length > 0) { + wordle = result.getData()[0][0].toLowerCase(); phase = GAME_PHASE; - + send("+OK game ready"); + } else { + send("-ERR fatal error: Wordle could not be generated."); } }