forked from IF-LK-2020/wordle
Compare commits
5 Commits
untested
...
e64344b5a2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e64344b5a2 | ||
|
|
1204f952c6 | ||
|
|
bf90f74b03 | ||
|
|
5e14802934 | ||
|
|
0c77b295d1 |
132
src/Game.java
132
src/Game.java
@@ -1,5 +1,6 @@
|
||||
import java.time.LocalDate;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.Iterator;
|
||||
|
||||
public class Game {
|
||||
|
||||
@@ -91,7 +92,8 @@ public class Game {
|
||||
String args = msg.substring(5);
|
||||
|
||||
int pw = args.hashCode();
|
||||
databaseConnector.executeStatement("SELECT * FROM User WHERE password = '" + pw + "' AND name = '" + tempLoginName + "'");
|
||||
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);
|
||||
@@ -104,11 +106,11 @@ public class Game {
|
||||
databaseConnector.executeStatement("SELECT word FROM words WHERE id = " + getWOTDIndex());
|
||||
QueryResult result = databaseConnector.getCurrentQueryResult();
|
||||
if (result != null && result.getData().length > 0) {
|
||||
wordle = result.getData()[0][0];
|
||||
wordle = result.getData()[0][0].toLowerCase();
|
||||
phase = GAME_PHASE;
|
||||
send("+OK game ready");
|
||||
} else {
|
||||
send("-ERR Fatal error: WOTD could not be generated.");
|
||||
send("-ERR fatal error: WOTD could not be generated.");
|
||||
}
|
||||
|
||||
} else if (msg.startsWith("play")) {
|
||||
@@ -116,7 +118,15 @@ 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.");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
sendUniversalError();
|
||||
@@ -124,56 +134,162 @@ public class Game {
|
||||
}
|
||||
|
||||
private void gamePhase(String msg) {
|
||||
|
||||
if (msg.startsWith("send ")) {
|
||||
|
||||
String args = msg.substring(5);
|
||||
//vergleichen von wotd mit
|
||||
//ja = spiel beendet und ausgabe word 11111
|
||||
//nein = ausgabe 01102 oder so und pr<70>fen ob man noch ein wort eingebn kann
|
||||
// ja game continues nein = game lost
|
||||
|
||||
if (args.length() == 5) {
|
||||
|
||||
databaseConnector.executeStatement("SELECT word FROM words WHERE word LIKE '" + args + "'");
|
||||
QueryResult result = databaseConnector.getCurrentQueryResult();
|
||||
if (result.getData().length > 0) {
|
||||
|
||||
String input = result.getData()[0][0].toLowerCase();
|
||||
String code = "";
|
||||
|
||||
outer: for (int i = 0; i < input.length(); i++) {
|
||||
char c = input.charAt(i);
|
||||
if (c == wordle.charAt(i)) {
|
||||
code += "2";
|
||||
} else {
|
||||
for (int j = 0; j < wordle.length(); j++) {
|
||||
if (c == wordle.charAt(j)) {
|
||||
code += "1";
|
||||
continue outer;
|
||||
}
|
||||
}
|
||||
code += "0";
|
||||
}
|
||||
}
|
||||
|
||||
send(code);
|
||||
if (code.equals("22222")) { // und ein wordle ist 5 Buchstaben lang :D
|
||||
send("game won");
|
||||
if (user != null) {
|
||||
phase = END_PHASE;
|
||||
} else {
|
||||
phase = LOGIN_PHASE;
|
||||
}
|
||||
} else if (count == 6) {
|
||||
send("game lost");
|
||||
if (user != null) {
|
||||
phase = END_PHASE;
|
||||
} else {
|
||||
phase = LOGIN_PHASE;
|
||||
}
|
||||
} else {
|
||||
send("game continues");
|
||||
}
|
||||
|
||||
} else {
|
||||
send("-ERR word not in dictionary.");
|
||||
}
|
||||
|
||||
} else {
|
||||
send("-ERR wrong format.");
|
||||
}
|
||||
|
||||
} else if (msg.startsWith("info")) {
|
||||
|
||||
} else if (msg.startsWith("exit")) {
|
||||
|
||||
if (user != null) {
|
||||
phase = END_PHASE;
|
||||
} else {
|
||||
send("-ERR not logged in.");
|
||||
}
|
||||
|
||||
} else {
|
||||
sendUniversalError();
|
||||
}
|
||||
}
|
||||
|
||||
private void endPhase(String msg) {
|
||||
|
||||
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;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void send(String msg) {
|
||||
|
||||
wordleServer.send(ip, port, msg);
|
||||
}
|
||||
|
||||
private void sendUniversalError() {
|
||||
|
||||
send("-ERR command not valid in this state");
|
||||
}
|
||||
|
||||
private int getWOTDIndex() {
|
||||
|
||||
long days = ChronoUnit.DAYS.between(LocalDate.ofEpochDay(0), LocalDate.now());
|
||||
int hash = ("" + days).hashCode();
|
||||
return hash % 949 + 1;
|
||||
}
|
||||
|
||||
public String getIp() {
|
||||
|
||||
return ip;
|
||||
}
|
||||
|
||||
public void setIp(String ip) {
|
||||
|
||||
this.ip = ip;
|
||||
}
|
||||
|
||||
public int getPort() {
|
||||
|
||||
return port;
|
||||
}
|
||||
|
||||
public void setPort(int port) {
|
||||
|
||||
this.port = port;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user