diff --git a/src/main/java/org/toop/frontend/UI/UIGameBoard.java b/src/main/java/org/toop/frontend/UI/UIGameBoard.java index d1d5342..be4711f 100644 --- a/src/main/java/org/toop/frontend/UI/UIGameBoard.java +++ b/src/main/java/org/toop/frontend/UI/UIGameBoard.java @@ -24,6 +24,7 @@ public class UIGameBoard { public UIGameBoard(LocalTicTacToe lttt, LocalGameSelector parent) { this.parentSelector = parent; this.localTicTacToe = lttt; + lttt.setUIReference(this); // Root panel tttPanel = new JPanel(new BorderLayout()); @@ -47,14 +48,14 @@ public class UIGameBoard { for (int i = 0; i < sizeX * sizeY; i++) { cells[i] = new JButton(" "); - cells[i].setFont(new Font("Arial", Font.BOLD, 100 / sizeX)); + cells[i].setFont(new Font("Arial", Font.BOLD, 400 / sizeX)); panel.add(cells[i]); final int index = i; cells[i].addActionListener((ActionEvent e) -> { int cp = this.localTicTacToe.getCurrentPlayersTurn(); - if (cp == 1) { this.currentPlayer = "X"; currentPlayerIndex = 0; } - else if (cp == 2) { this.currentPlayer = "O"; currentPlayerIndex = 1; } + if (cp == 0) { this.currentPlayer = "X"; currentPlayerIndex = 0; } + else if (cp == 1) { this.currentPlayer = "O"; currentPlayerIndex = 1; } this.localTicTacToe.move(index); cells[index].setText(currentPlayer); }); @@ -62,6 +63,10 @@ public class UIGameBoard { return panel; } + public void setCell(int index, String move){ + System.out.println(cells[index].getText()); + cells[index].setText(move); + } public JPanel getTTTPanel() { return tttPanel; diff --git a/src/main/java/org/toop/frontend/games/LocalTicTacToe.java b/src/main/java/org/toop/frontend/games/LocalTicTacToe.java index 5720af4..041b5e0 100644 --- a/src/main/java/org/toop/frontend/games/LocalTicTacToe.java +++ b/src/main/java/org/toop/frontend/games/LocalTicTacToe.java @@ -4,6 +4,8 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.toop.eventbus.Events; import org.toop.eventbus.GlobalEventBus; +import org.toop.frontend.UI.UIGameBoard; +import org.toop.game.GameBase; import org.toop.game.tictactoe.MinMaxTicTacToe; import org.toop.game.tictactoe.TicTacToe; @@ -32,6 +34,7 @@ public class LocalTicTacToe { // TODO: Implement runnable private boolean isAiPlayer[] = new boolean[2]; private MinMaxTicTacToe[] aiPlayers = new MinMaxTicTacToe[2]; private TicTacToe ticTacToe; + private UIGameBoard ui; /** @@ -136,13 +139,19 @@ public class LocalTicTacToe { // TODO: Implement runnable if (!isAiPlayer[0]) { this.ticTacToe.play(this.moveQueuePlayerA.take()); } else { - this.ticTacToe.play(aiPlayers[0].findBestMove(this.ticTacToe)); + int bestMove = aiPlayers[0].findBestMove(this.ticTacToe); + if (this.ticTacToe.play(bestMove) != GameBase.State.INVALID) { + ui.setCell(bestMove, "X"); + } } this.setNextPlayersTurn(); if (!isAiPlayer[1]) { this.ticTacToe.play(this.moveQueuePlayerB.take()); } else { - this.ticTacToe.play(aiPlayers[1].findBestMove(this.ticTacToe)); + int bestMove = aiPlayers[1].findBestMove(this.ticTacToe); + if (this.ticTacToe.play(bestMove) != GameBase.State.INVALID) { + ui.setCell(bestMove, "O"); + } } this.setNextPlayersTurn(); } catch (InterruptedException e) { @@ -214,4 +223,7 @@ public class LocalTicTacToe { // TODO: Implement runnable GlobalEventBus.unregister(this.receivedMessageListener); } + public void setUIReference(UIGameBoard uiGameBoard) { + this.ui = uiGameBoard; + } }