diff --git a/app/src/main/java/org/toop/app/GameType.java b/app/src/main/java/org/toop/app/GameType.java deleted file mode 100644 index 85137a3..0000000 --- a/app/src/main/java/org/toop/app/GameType.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.toop.app; - -public enum GameType { - TICTACTOE, OTHELLO; - - public static String toName(GameType type) { - return switch (type) { - case TICTACTOE -> "Tic Tac Toe"; - case OTHELLO -> "Othello"; - }; - } - - public static GameType toType(String name) { - return switch (name) { - case "Tic Tac Toe" -> TICTACTOE; - case "Reversi" -> OTHELLO; - - default -> TICTACTOE; - }; - } -} \ No newline at end of file diff --git a/app/src/main/java/org/toop/app/layer/layers/MainLayer.java b/app/src/main/java/org/toop/app/layer/layers/MainLayer.java index 4781297..cd71f1a 100644 --- a/app/src/main/java/org/toop/app/layer/layers/MainLayer.java +++ b/app/src/main/java/org/toop/app/layer/layers/MainLayer.java @@ -1,10 +1,11 @@ package org.toop.app.layer.layers; import org.toop.app.App; -import org.toop.app.GameType; import org.toop.app.layer.Container; import org.toop.app.layer.Layer; import org.toop.app.layer.containers.VerticalContainer; +import org.toop.game.othello.Othello; +import org.toop.game.tictactoe.TicTacToe; import javafx.geometry.Pos; @@ -21,11 +22,11 @@ public final class MainLayer extends Layer { final Container gamesContainer = new VerticalContainer(5); gamesContainer.addButton("Tic Tac Toe", () -> { - App.activate(new MultiplayerLayer(GameType.TICTACTOE)); + App.activate(new MultiplayerLayer()); }); gamesContainer.addButton("Othello", () -> { - App.activate(new MultiplayerLayer(GameType.OTHELLO)); + App.activate(new MultiplayerLayer()); }); final Container controlContainer = new VerticalContainer(5); diff --git a/app/src/main/java/org/toop/app/layer/layers/MultiplayerLayer.java b/app/src/main/java/org/toop/app/layer/layers/MultiplayerLayer.java index d1b0437..dd30ba1 100644 --- a/app/src/main/java/org/toop/app/layer/layers/MultiplayerLayer.java +++ b/app/src/main/java/org/toop/app/layer/layers/MultiplayerLayer.java @@ -1,21 +1,29 @@ package org.toop.app.layer.layers; import org.toop.app.App; -import org.toop.app.GameType; import org.toop.app.layer.Container; import org.toop.app.layer.Layer; import org.toop.app.layer.containers.HorizontalContainer; import org.toop.app.layer.containers.VerticalContainer; +import org.toop.game.TurnBasedGame; import javafx.geometry.Pos; -public class MultiplayerLayer extends Layer { - boolean isConnectionLocal = true; +public final class MultiplayerLayer extends Layer { + private boolean isConnectionLocal = true; - boolean isPlayer1Human = true; - boolean isPlayer2Human = true; + private boolean isPlayer1Human = true; + private String player1Name = ""; + private int computer1Difficulty = 0; - protected MultiplayerLayer(GameType type) { + private boolean isPlayer2Human = true; + private String player2Name = ""; + private int computer2Difficulty = 0; + + private String serverIP = ""; + private String serverPort = ""; + + public MultiplayerLayer() { super("multiplayer.css"); reload(); } @@ -49,8 +57,7 @@ public class MultiplayerLayer extends Layer { mainContainer.addButton("Start", () -> { }); } else { - mainContainer.addButton("Connnect", () -> { - App.activate(new GameLayer()); + mainContainer.addButton("Connect", () -> { }); } @@ -60,11 +67,14 @@ public class MultiplayerLayer extends Layer { }); if (isPlayer1Human) { - player1Container.addText("player is human", true); - player1Container.addText("input player name here: ...", true); + player1Container.addText("Player name", true); + player1Container.addInput(player1Name, (name) -> { + player1Name = name; + }); } else { - player1Container.addText("Computer depth", true); - player1Container.addSlider(9, 2, (depth) -> { + player1Container.addText("Computer difficulty", true); + player1Container.addSlider(5, computer1Difficulty, (difficulty) -> { + computer1Difficulty = difficulty; }); } @@ -75,22 +85,27 @@ public class MultiplayerLayer extends Layer { }); if (isPlayer2Human) { - player2Container.addText("player is human", true); - player2Container.addText("input player name here: ...", true); + player2Container.addText("Player name", true); + player2Container.addInput(player2Name, (name) -> { + player2Name = name; + }); } else { - player2Container.addText("Computer depth", true); - player2Container.addSlider(9, 2, (depth) -> { + player2Container.addText("Computer difficulty", true); + player2Container.addSlider(5, computer2Difficulty, (difficulty) -> { + computer2Difficulty = difficulty; }); } } else { player2Container.addText("Server IP", true); - player2Container.addInput("", (input) -> { + player2Container.addInput(serverIP, (ip) -> { + serverIP = ip; }); player2Container.addSeparator(true); player2Container.addText("Server Port", true); - player2Container.addInput("", (input) -> { + player2Container.addInput(serverPort, (port) -> { + serverPort = port; }); } diff --git a/game/src/main/java/org/toop/game/othello/Othello.java b/game/src/main/java/org/toop/game/othello/Othello.java new file mode 100644 index 0000000..3012eac --- /dev/null +++ b/game/src/main/java/org/toop/game/othello/Othello.java @@ -0,0 +1,19 @@ +package org.toop.game.othello; + +import org.toop.game.TurnBasedGame; + +public final class Othello extends TurnBasedGame { + Othello() { + super(8, 8, 2); + } + + @Override + public Move[] getLegalMoves() { + return new Move[0]; + } + + @Override + public State play(Move move) { + return null; + } +} \ No newline at end of file diff --git a/game/src/main/java/org/toop/game/othello/OthelloAI.java b/game/src/main/java/org/toop/game/othello/OthelloAI.java new file mode 100644 index 0000000..8957387 --- /dev/null +++ b/game/src/main/java/org/toop/game/othello/OthelloAI.java @@ -0,0 +1,11 @@ +package org.toop.game.othello; + +import org.toop.game.AI; +import org.toop.game.Game; + +public final class OthelloAI extends AI { + @Override + public Game.Move findBestMove(Othello game, int depth) { + return null; + } +}