add: cli ui connection with server

This commit is contained in:
ramollia
2025-09-17 17:25:54 +02:00
parent 49b9d5a87c
commit a502034685
2 changed files with 44 additions and 38 deletions

View File

@@ -7,6 +7,10 @@ import org.toop.eventbus.GlobalEventBus;
import org.toop.game.*;
import org.toop.game.tictactoe.*;
import com.google.errorprone.annotations.Keep;
import org.toop.eventbus.*;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
@@ -20,8 +24,12 @@ public class ConsoleGui {
private TicTacToe game;
private MinMaxTicTacToe ai;
String ai1 = null;
String ai2 = null;
private String ai1 = null;
private String ai2 = null;
private String serverId = null;
private String connectionId = null;
private String ticTacToeGameId = null;
public ConsoleGui() throws ExecutionException, InterruptedException {
scanner = new Scanner(System.in);
@@ -94,6 +102,19 @@ public class ConsoleGui {
game = new TicTacToe(player1, player2);
ai = new MinMaxTicTacToe();
CompletableFuture<String> serverIdFuture = new CompletableFuture<>();
GlobalEventBus.post(new Events.ServerEvents.StartServerRequest("5001", "tictactoe", serverIdFuture));
serverId = serverIdFuture.get();
CompletableFuture<String> connectionIdFuture = new CompletableFuture<>();
GlobalEventBus.post(new Events.ServerEvents.StartConnectionRequest("127.0.0.1", "5001", connectionIdFuture));
connectionId = connectionIdFuture.get();
CompletableFuture<String> ticTacToeGame = new CompletableFuture<>();
GlobalEventBus.post(new Events.ServerEvents.CreateTicTacToeGameRequest(serverId, player1, player2, ticTacToeGame));
ticTacToeGameId = ticTacToeGame.get();
GlobalEventBus.post(new Events.ServerEvents.RunTicTacToeGame(serverId, ticTacToeGameId));
}
public void print() {
@@ -134,6 +155,7 @@ public class ConsoleGui {
}
GameBase.State state = game.play(move);
boolean keepRunning = true;
switch (state) {
case INVALID: {
@@ -143,18 +165,34 @@ public class ConsoleGui {
case DRAW: {
System.out.println("Game ended in a draw.");
return false;
keepRunning = false;
break;
}
case WIN: {
System.out.printf("%s has won the game.\n", game.getCurrentPlayer().name());
return false;
System.out.printf("%s has won the game.\n", current.name());
keepRunning = false;
break;
}
case NORMAL:
default: return true;
default: {
keepRunning = true;
break;
}
}
GlobalEventBus.post(new Events.ServerEvents.SendCommand(
connectionId,
"gameid " + ticTacToeGameId, current.name(), "MOVE", String.valueOf(move)
));
if (!keepRunning) {
GlobalEventBus.post(new Events.ServerEvents.EndTicTacToeGame(serverId, ticTacToeGameId));
}
return keepRunning;
}
public GameBase getGame() { return game; }
}

View File

@@ -20,41 +20,9 @@ public class Main {
private static final Logger logger = LogManager.getLogger(Main.class);
public static void main(String[] args) throws ExecutionException, InterruptedException {
initSystems();
CompletableFuture<String> serverIdFuture = new CompletableFuture<>();
GlobalEventBus.post(new Events.ServerEvents.StartServerRequest("5001", "tictactoe", serverIdFuture));
String serverId = serverIdFuture.get();
CompletableFuture<String> connectionIdFuture = new CompletableFuture<>();
GlobalEventBus.post(new Events.ServerEvents.StartConnectionRequest("127.0.0.1", "5001", connectionIdFuture));
String connectionId = connectionIdFuture.get();
CompletableFuture<String> ticTacToeGame = new CompletableFuture<>();
GlobalEventBus.post(new Events.ServerEvents.CreateTicTacToeGameRequest(serverId, "J", "P", ticTacToeGame));
String ticTacToeGameId = ticTacToeGame.get();
GlobalEventBus.post(new Events.ServerEvents.RunTicTacToeGame(serverId, ticTacToeGameId));
GlobalEventBus.post(new Events.ServerEvents.SendCommand(
connectionId,
"gameid " + ticTacToeGameId, "player J", "MOVE", "0"
));
GlobalEventBus.post(new Events.ServerEvents.SendCommand(
connectionId,
"gameid " + ticTacToeGameId, "player P", "MOVE", "1"
));
// for (int x = 0; x < 20000000; x++) {
// CompletableFuture<String> ticTacToeGame = new CompletableFuture<>();
// GlobalEventBus.post(new Events.ServerEvents.CreateTicTacToeGameRequest(serverId, "J"+x, "P"+x, ticTacToeGame));
// String ticTacToeGameId = ticTacToeGame.get();
// GlobalEventBus.post(new Events.ServerEvents.RunTicTacToeGame(serverId, ticTacToeGameId));
// GlobalEventBus.post(new Events.ServerEvents.Command(connectionId, "MOVE", "" + x));
// }
ConsoleGui console = new ConsoleGui();
GameBase.State state = GameBase.State.INVALID;
do {
console.print();