diff --git a/src/Game.java b/src/Game.java index 7991ccb..b2f32a5 100644 --- a/src/Game.java +++ b/src/Game.java @@ -3,129 +3,129 @@ import java.time.temporal.ChronoUnit; public class Game { - private static final int LOGIN_PHASE = 0; - private static final int GAME_PHASE = 1; - private static final int END_PHASE = 2; - - WordleServer wordleServer; - User user; - static DatabaseConnector databaseConnector;// Datenbankverbindung aufstellen + private static final int LOGIN_PHASE = 0; + private static final int GAME_PHASE = 1; + private static final int END_PHASE = 2; + + WordleServer wordleServer; + User user; + static DatabaseConnector databaseConnector;// Datenbankverbindung aufstellen - private String ip; - private int port; + private String ip; + private int port; - private String wordle; - private String[] words; - private int count; - private int phase; - - private String tempLoginName; + private String wordle; + private String[] words; + private int count; + private int phase; + + private String tempLoginName; - static { + static { - databaseConnector = new DatabaseConnector(null, 0, "wordle.db", null, null); - - if (databaseConnector.getErrorMessage() != null) { - System.err.println(databaseConnector.getErrorMessage()); - } - - } + databaseConnector = new DatabaseConnector(null, 0, "wordle.db", null, null); + + if (databaseConnector.getErrorMessage() != null) { + System.err.println(databaseConnector.getErrorMessage()); + } + + } - public Game(WordleServer wordleServer, String pClientIP, int pClientPort) { + public Game(WordleServer wordleServer, String pClientIP, int pClientPort) { - this.wordleServer = wordleServer; - this.ip = pClientIP; - this.port = pClientPort; + this.wordleServer = wordleServer; + this.ip = pClientIP; + this.port = pClientPort; - send("+OK Hello there"); - } + send("+OK Hello there"); + } - public void processMessage(String msg) { + public void processMessage(String msg) { - msg = msg.toLowerCase().trim(); + msg = msg.toLowerCase().trim(); - if (msg.equals("quit")) { - send("+OK bye"); - wordleServer.closeConnection(ip, port); - System.exit(0); // TODO remove: Einfacher zum testen - } + if (msg.equals("quit")) { + send("+OK bye"); + wordleServer.closeConnection(ip, port); + System.exit(0); // TODO remove: Einfacher zum testen + } - switch (phase) { - case LOGIN_PHASE: - loginPhase(msg); - break; - case GAME_PHASE: - gamePhase(msg); - break; - case END_PHASE: - endPhase(msg); - break; - } - } + switch (phase) { + case LOGIN_PHASE: + loginPhase(msg); + break; + case GAME_PHASE: + gamePhase(msg); + break; + case END_PHASE: + endPhase(msg); + break; + } + } - private void loginPhase(String msg) { + private void loginPhase(String msg) { - if (msg.startsWith("user ")) { + if (msg.startsWith("user ")) { - if (msg.length() <= 5) { - sendUniversalError(); - return; - } - String args = msg.substring(5); - - databaseConnector.executeStatement("SELECT * FROM User WHERE name = '" + args + "'"); - QueryResult result = databaseConnector.getCurrentQueryResult(); - if (result != null && result.getData().length > 0) { - tempLoginName = result.getData()[0][0]; - send("+OK"); - } else { - send("-ERR User not found."); - } + if (msg.length() <= 5) { + sendUniversalError(); + return; + } + String args = msg.substring(5); + + databaseConnector.executeStatement("SELECT * FROM User WHERE name = '" + args + "'"); + QueryResult result = databaseConnector.getCurrentQueryResult(); + if (result != null && result.getData().length > 0) { + tempLoginName = result.getData()[0][0]; + send("+OK"); + } else { + send("-ERR User not found."); + } - } else if (msg.startsWith("pass ")) { - - if (msg.length() <= 5) { - sendUniversalError(); - return; - } - String args = msg.substring(5); - - int pw = args.hashCode(); - databaseConnector.executeStatement("SELECT * FROM User WHERE password = '" + pw + "' AND name = '" + tempLoginName + "'"); - QueryResult result = databaseConnector.getCurrentQueryResult(); - if (result != null && result.getData().length > 0) { - user = new User(tempLoginName); - send("+OK welcome"); - } else { - send("-ERR login not valid"); - } - } else if (msg.startsWith("wotd")) { - - databaseConnector.executeStatement("SELECT word FROM words WHERE id = " + getWOTDIndex()); - QueryResult result = databaseConnector.getCurrentQueryResult(); - System.out.println(databaseConnector.getErrorMessage()); - if (result != null && result.getData().length > 0) { - wordle = result.getData()[0][0]; - phase = GAME_PHASE; - send("+OK game ready"); - } else { - send("-ERR fatal error: WOTD could not be generated."); - } - - } else if (msg.startsWith("play")) { - - if (user == null) { - send("-ERR not logged in."); - } else { - - } - } else { - sendUniversalError(); - } - } + } else if (msg.startsWith("pass ")) { + + if (msg.length() <= 5) { + sendUniversalError(); + return; + } + String args = msg.substring(5); + + int pw = args.hashCode(); + databaseConnector.executeStatement("SELECT * FROM User WHERE password = '" + pw + "' AND name = '" + tempLoginName + "'"); + QueryResult result = databaseConnector.getCurrentQueryResult(); + if (result != null && result.getData().length > 0) { + user = new User(tempLoginName); + send("+OK welcome"); + } else { + send("-ERR login not valid"); + } + } else if (msg.startsWith("wotd")) { + + databaseConnector.executeStatement("SELECT word FROM words WHERE id = " + getWOTDIndex()); + QueryResult result = databaseConnector.getCurrentQueryResult(); + System.out.println(databaseConnector.getErrorMessage()); + if (result != null && result.getData().length > 0) { + wordle = result.getData()[0][0]; + phase = GAME_PHASE; + send("+OK game ready"); + } else { + send("-ERR fatal error: WOTD could not be generated."); + } + + } else if (msg.startsWith("play")) { + + if (user == null) { + send("-ERR not logged in."); + } else { + + } + } else { + sendUniversalError(); + } + } - private void gamePhase(String msg) { - if (msg.startsWith("send ")) { + private void gamePhase(String msg) { + if (msg.startsWith("send ")) { String args = msg.substring(5); @@ -141,7 +141,7 @@ public class Game { code = input; send(code); - if (code.equals("11111")) { + if (code.equals("222222")) { // 111111 auf 222222 geändert, 0=falsch 1=falscher ort 2= richtig :) send("game won"); if (user != null) { phase = END_PHASE; @@ -166,24 +166,67 @@ public class Game { } else { send("-ERR wrong format."); } - - //vergleichen von wotd mit - //ja = spiel beendet und ausgabe word 11111 - //nein = ausgabe 01102 oder so und pr�fen ob man noch ein wort eingebn kann - // ja game continues nein = game lost - + } else if (msg.startsWith("info")) { } else if (msg.startsWith("exit")) { + + if (user != null) { + phase = END_PHASE; + } else { + send("-ERR not logged in."); + } - } + } } private void endPhase(String msg) { - if (msg.startsWith("stat")) { - + if (msg.startsWith("stat")) { + + databaseConnector.executeStatement("SELECT timesPlayed FROM User Where name like " + tempLoginName + ""); + String tP = databaseConnector.getCurrentQueryResult().getData()[0][0]; + send("times Played: " + tP); + + databaseConnector.executeStatement("SELECT winPercentage FROM User Where name like " + tempLoginName + ""); + String wP = databaseConnector.getCurrentQueryResult().getData()[0][0]; + send("win Percentage: " + wP); + + databaseConnector.executeStatement("SELECT currentStreak FROM User Where name like " + tempLoginName + ""); + String cS = databaseConnector.getCurrentQueryResult().getData()[0][0]; + send("current Streak: " + cS); + + databaseConnector.executeStatement("SELECT maxStreak FROM User Where name like " + tempLoginName + ""); + String mS = databaseConnector.getCurrentQueryResult().getData()[0][0]; + send("max Streak: " + mS); + + databaseConnector.executeStatement("SELECT wonInTurn1 FROM User Where name like " + tempLoginName + ""); + String wIT1 = databaseConnector.getCurrentQueryResult().getData()[0][0]; + send("won in Turn1: " + wIT1); + + databaseConnector.executeStatement("SELECT wonInTurn1 FROM User Where name like " + tempLoginName + ""); + String wIT2 = databaseConnector.getCurrentQueryResult().getData()[0][0]; + send("won in Turn2: " + wIT2); + + databaseConnector.executeStatement("SELECT wonInTurn1 FROM User Where name like " + tempLoginName + ""); + String wIT3 = databaseConnector.getCurrentQueryResult().getData()[0][0]; + send("won in Turn3: " + wIT3); + + databaseConnector.executeStatement("SELECT wonInTurn1 FROM User Where name like " + tempLoginName + ""); + String wIT4 = databaseConnector.getCurrentQueryResult().getData()[0][0]; + send("won in Turn4: " + wIT4); + + databaseConnector.executeStatement("SELECT wonInTurn1 FROM User Where name like " + tempLoginName + ""); + String wIT5 = databaseConnector.getCurrentQueryResult().getData()[0][0]; + send("won in Turn5: " + wIT5); + + databaseConnector.executeStatement("SELECT wonInTurn1 FROM User Where name like " + tempLoginName + ""); + String wIT6 = databaseConnector.getCurrentQueryResult().getData()[0][0]; + send("won in Turn6: " + wIT6); + } else if (msg.startsWith("play")) { - + + phase = GAME_PHASE; + } } diff --git a/src/User.java b/src/User.java index 0a84a14..bad5e04 100644 --- a/src/User.java +++ b/src/User.java @@ -14,15 +14,15 @@ public class User { public void setPassword(String password) { - Game.databaseConnector.executeStatement("UPDATE User SET password = " + password + " Where name = " + this.name); + Game.databaseConnector.executeStatement("UPDATE User SET password = " + password + " Where name = " + this.name); } public String getPassword() { - Game.databaseConnector.executeStatement("SELECT password FROM User Where name =" + this.name); - String result = Game.databaseConnector.getCurrentQueryResult().getData()[0][0]; - return result; + Game.databaseConnector.executeStatement("SELECT password FROM User Where name =" + this.name); + String result = Game.databaseConnector.getCurrentQueryResult().getData()[0][0]; + return result; } @@ -35,7 +35,7 @@ public class User { public String getName() { - return name; + return name; } @@ -49,8 +49,8 @@ public class User { public float getWinPercentage() { Game.databaseConnector.executeStatement("SELECT winPercentage FROM User Where name =" + this.name); - String result = Game.databaseConnector.getCurrentQueryResult().getData()[0][0]; - return Float.parseFloat(result); + String result = Game.databaseConnector.getCurrentQueryResult().getData()[0][0]; + return Float.parseFloat(result); } @@ -64,8 +64,8 @@ public class User { public int getTimesPlayed() { Game.databaseConnector.executeStatement("SELECT timesPlayed FROM User Where name =" + this.name); - String result = Game.databaseConnector.getCurrentQueryResult().getData()[0][0]; - return Integer.parseInt(result); + String result = Game.databaseConnector.getCurrentQueryResult().getData()[0][0]; + return Integer.parseInt(result); } @@ -87,8 +87,8 @@ public class User { public int getCurrentStreak() { Game.databaseConnector.executeStatement("SELECT currentStreak FROM User Where name =" + this.name); - String result = Game.databaseConnector.getCurrentQueryResult().getData()[0][0]; - return Integer.parseInt(result); + String result = Game.databaseConnector.getCurrentQueryResult().getData()[0][0]; + return Integer.parseInt(result); } @@ -110,8 +110,8 @@ public class User { public int getMaxStreak() { Game.databaseConnector.executeStatement("SELECT maxStreak FROM User Where name =" + this.name); - String result = Game.databaseConnector.getCurrentQueryResult().getData()[0][0]; - return Integer.parseInt(result); + String result = Game.databaseConnector.getCurrentQueryResult().getData()[0][0]; + return Integer.parseInt(result); } @@ -133,8 +133,8 @@ public class User { public int getWonInTurn(int row) { Game.databaseConnector.executeStatement("SELECT wonInTurn" + row + " FROM User Where name =" + this.name); - String result = Game.databaseConnector.getCurrentQueryResult().getData()[0][0]; - return Integer.parseInt(result); + String result = Game.databaseConnector.getCurrentQueryResult().getData()[0][0]; + return Integer.parseInt(result); } public void increaseWonInTurn(int row) @@ -145,8 +145,8 @@ public class User { public int[] getWonInTurnFull() { - int[] result = {getWonInTurn(1),getWonInTurn(2),getWonInTurn(3),getWonInTurn(4),getWonInTurn(5),getWonInTurn(6)}; - return result; + int[] result = {getWonInTurn(1),getWonInTurn(2),getWonInTurn(3),getWonInTurn(4),getWonInTurn(5),getWonInTurn(6)}; + return result; } diff --git a/src/package.bluej b/src/package.bluej index a637731..3052f98 100644 --- a/src/package.bluej +++ b/src/package.bluej @@ -5,6 +5,9 @@ dependency1.type=UsesDependency dependency10.from=Game dependency10.to=DatabaseConnector dependency10.type=UsesDependency +dependency11.from=Game +dependency11.to=QueryResult +dependency11.type=UsesDependency dependency2.from=DatabaseConnector dependency2.to=Queue dependency2.type=UsesDependency @@ -21,7 +24,7 @@ dependency6.from=WordleServer dependency6.to=DatabaseConnector dependency6.type=UsesDependency dependency7.from=User -dependency7.to=DatabaseConnector +dependency7.to=Game dependency7.type=UsesDependency dependency8.from=Game dependency8.to=WordleServer @@ -29,104 +32,90 @@ dependency8.type=UsesDependency dependency9.from=Game dependency9.to=User dependency9.type=UsesDependency -editor.fx.0.height=1017 -editor.fx.0.width=854 -editor.fx.0.x=100 -editor.fx.0.y=100 -objectbench.height=153 -objectbench.width=1656 +editor.fx.0.height=1056 +editor.fx.0.width=1936 +editor.fx.0.x=-8 +editor.fx.0.y=-8 +objectbench.height=152 +objectbench.width=1896 package.divider.horizontal=0.6 -package.divider.vertical=0.8272138228941684 -package.editor.height=759 -package.editor.width=1545 +package.divider.vertical=0.8336820083682008 +package.editor.height=790 +package.editor.width=1785 package.editor.x=0 package.editor.y=0 -package.frame.height=1026 -package.frame.width=1696 -package.numDependencies=10 -package.numTargets=11 +package.frame.height=1056 +package.frame.width=1936 +package.numDependencies=11 +package.numTargets=9 package.showExtends=true package.showUses=true project.charset=windows-1252 -readme.height=60 +readme.height=58 readme.name=@README -readme.width=49 +readme.width=47 readme.x=10 readme.y=10 target1.height=70 -target1.name=Letter +target1.name=DatabaseConnector target1.showInterface=false target1.type=ClassTarget -target1.width=120 -target1.x=10 +target1.width=150 +target1.x=220 target1.y=80 -target10.height=70 -target10.name=GUI -target10.showInterface=false -target10.type=ClassTarget -target10.width=120 -target10.x=10 -target10.y=270 -target11.height=60 -target11.name=Queue -target11.showInterface=false -target11.type=ClassTarget -target11.width=160 -target11.x=100 -target11.y=520 -target2.height=70 -target2.name=DatabaseConnector +target2.height=60 +target2.name=QueryResult target2.showInterface=false target2.type=ClassTarget -target2.width=150 -target2.x=220 -target2.y=80 -target3.height=60 -target3.name=QueryResult +target2.width=100 +target2.x=100 +target2.y=600 +target3.height=100 +target3.name=Game target3.showInterface=false target3.type=ClassTarget -target3.width=100 -target3.x=100 -target3.y=600 -target4.height=100 -target4.name=Game +target3.width=180 +target3.x=680 +target3.y=320 +target4.height=70 +target4.name=User target4.showInterface=false target4.type=ClassTarget -target4.width=180 -target4.x=680 -target4.y=320 +target4.width=130 +target4.x=930 +target4.y=180 target5.height=70 -target5.name=User +target5.name=Server target5.showInterface=false -target5.type=ClassTarget -target5.width=130 -target5.x=930 -target5.y=180 +target5.type=AbstractTarget +target5.width=110 +target5.x=310 +target5.y=500 target6.height=70 -target6.name=Server +target6.name=WordleServer target6.showInterface=false -target6.type=AbstractTarget +target6.type=ClassTarget target6.width=110 -target6.x=310 +target6.x=480 target6.y=500 target7.height=70 -target7.name=WordleServer +target7.name=Guest target7.showInterface=false target7.type=ClassTarget -target7.width=110 -target7.x=480 -target7.y=500 -target8.height=70 -target8.name=Guest +target7.width=130 +target7.x=10 +target7.y=180 +target8.height=60 +target8.name=List target8.showInterface=false target8.type=ClassTarget -target8.width=130 -target8.x=10 -target8.y=180 +target8.width=150 +target8.x=560 +target8.y=640 target9.height=60 -target9.name=List +target9.name=Queue target9.showInterface=false target9.type=ClassTarget -target9.width=150 -target9.x=560 -target9.y=640 +target9.width=160 +target9.x=100 +target9.y=520