From f8bfbd46b536baf0fd61798b392b5c82afd154a4 Mon Sep 17 00:00:00 2001 From: Ticho Hidding Date: Mon, 22 Sep 2025 12:04:34 +0200 Subject: [PATCH 1/2] Fixed race condition on startup of AI vs Player game --- .../org/toop/frontend/UI/LocalGameSelector.java | 1 + .../org/toop/frontend/UI/RemoteGameSelector.java | 3 ++- .../org/toop/frontend/games/LocalTicTacToe.java | 13 +++++++++++-- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/toop/frontend/UI/LocalGameSelector.java b/src/main/java/org/toop/frontend/UI/LocalGameSelector.java index 082b57c..524b10b 100644 --- a/src/main/java/org/toop/frontend/UI/LocalGameSelector.java +++ b/src/main/java/org/toop/frontend/UI/LocalGameSelector.java @@ -92,6 +92,7 @@ public class LocalGameSelector extends JFrame { } cardLayout.show(cards, "TicTacToe"); } + lttt.startThreads(); } public void showMainMenu() { diff --git a/src/main/java/org/toop/frontend/UI/RemoteGameSelector.java b/src/main/java/org/toop/frontend/UI/RemoteGameSelector.java index c06d7fe..4dc7b7d 100644 --- a/src/main/java/org/toop/frontend/UI/RemoteGameSelector.java +++ b/src/main/java/org/toop/frontend/UI/RemoteGameSelector.java @@ -128,7 +128,8 @@ public class RemoteGameSelector { localTicTacToe = LocalTicTacToe.createRemote( ipTextField.getText(), portTextField.getText()); - UIGameBoard ttt = new UIGameBoard(localTicTacToe, this); // TODO: Fix later + UIGameBoard ttt = new UIGameBoard(localTicTacToe, this); + localTicTacToe.startThreads(); frame.add(ttt.getTTTPanel()); // TODO: Fix later frame.revalidate(); frame.repaint(); diff --git a/src/main/java/org/toop/frontend/games/LocalTicTacToe.java b/src/main/java/org/toop/frontend/games/LocalTicTacToe.java index 9fa5ce6..5761467 100644 --- a/src/main/java/org/toop/frontend/games/LocalTicTacToe.java +++ b/src/main/java/org/toop/frontend/games/LocalTicTacToe.java @@ -10,6 +10,8 @@ import org.toop.game.tictactoe.GameBase; import org.toop.game.tictactoe.TicTacToe; import org.toop.game.tictactoe.ai.MinMaxTicTacToe; +import static java.lang.Thread.sleep; + /** * A representation of a local tic-tac-toe game. Calls are made to a server for information about * current game state. MOST OF THIS CODE IS TRASH, THROW IT OUT OF THE WINDOW AFTER DEMO. @@ -71,7 +73,7 @@ public class LocalTicTacToe { // TODO: Implement runnable this.connectionId = this.createConnection(ip, port); this.createGame(ip, port); this.isLocal = false; - this.executor.submit(this::remoteGameThread); + //this.executor.submit(this::remoteGameThread); } private LocalTicTacToe(boolean[] aiFlags) { @@ -86,7 +88,14 @@ public class LocalTicTacToe { // TODO: Implement runnable } this.isLocal = true; - this.executor.submit(this::localGameThread); + //this.executor.submit(this::localGameThread); + } + public void startThreads(){ + if (isLocal) { + this.executor.submit(this::localGameThread); + }else { + this.executor.submit(this::remoteGameThread); + } } public static LocalTicTacToe createLocal(boolean[] aiPlayers) { From c27cb047096ec3714d47c2b3c6760d00d18ec5cb Mon Sep 17 00:00:00 2001 From: michiel Date: Mon, 22 Sep 2025 12:44:27 +0200 Subject: [PATCH 2/2] hele kleine ui update --- src/main/java/org/toop/frontend/UI/UIGameBoard.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/org/toop/frontend/UI/UIGameBoard.java b/src/main/java/org/toop/frontend/UI/UIGameBoard.java index 1c3bac0..ce36e3e 100644 --- a/src/main/java/org/toop/frontend/UI/UIGameBoard.java +++ b/src/main/java/org/toop/frontend/UI/UIGameBoard.java @@ -74,6 +74,7 @@ public class UIGameBoard { cells[i] = new JButton(" "); cells[i].setFont(new Font("Arial", Font.BOLD, 400 / sizeX)); panel.add(cells[i]); + cells[i].setFocusable(false); final int index = i; cells[i].addActionListener(