From ca11151381b8f5e9f11ffbc21180346342ffd5d4 Mon Sep 17 00:00:00 2001 From: Bas de Jong Date: Thu, 6 Nov 2025 15:32:15 +0100 Subject: [PATCH] Functional code, is now object orientated --- .../java/org/toop/app/GameInformation.java | 39 +++++++++---------- .../java/org/toop/app/game/Connect4Game.java | 2 +- .../java/org/toop/app/game/ReversiGame.java | 2 +- .../java/org/toop/app/game/TicTacToeGame.java | 2 +- .../toop/app/view/views/ChallengeView.java | 2 +- .../app/view/views/LocalMultiplayerView.java | 4 +- .../app/view/views/SendChallengeView.java | 2 +- .../app/widget/popup/SendChallengePopup.java | 4 +- .../app/widget/view/LocalMultiplayerView.java | 2 +- 9 files changed, 28 insertions(+), 31 deletions(-) diff --git a/app/src/main/java/org/toop/app/GameInformation.java b/app/src/main/java/org/toop/app/GameInformation.java index bca254f..5a17c8f 100644 --- a/app/src/main/java/org/toop/app/GameInformation.java +++ b/app/src/main/java/org/toop/app/GameInformation.java @@ -2,29 +2,26 @@ package org.toop.app; public class GameInformation { public enum Type { - TICTACTOE, - REVERSI, - CONNECT4, - BATTLESHIP; + TICTACTOE(2, 5), + REVERSI(2, 10), + CONNECT4(2, 7), + BATTLESHIP(2, 5); + private final int playerCount; + private final int maxDepth; - public static int playerCount(Type type) { - return switch (type) { - case TICTACTOE -> 2; - case REVERSI -> 2; - case CONNECT4 -> 2; - case BATTLESHIP -> 2; - }; - } + Type(int playerCount, int maxDepth) { + this.playerCount = playerCount; + this.maxDepth = maxDepth; + } - public static int maxDepth(Type type) { - return switch (type) { - case TICTACTOE -> 5; // Todo. 5 seems to always draw or win. could increase to 9 but that might affect performance - case REVERSI -> 10; // Todo. 10 is a guess. might be too slow or too bad. - case CONNECT4 -> 7; - case BATTLESHIP -> 5; - }; - } + public int getPlayerCount() { + return playerCount; + } + + public int getMaxDepth() { + return maxDepth; + } } public static class Player { @@ -39,7 +36,7 @@ public class GameInformation { public GameInformation(Type type) { this.type = type; - players = new Player[Type.playerCount(type)]; + players = new Player[type.getPlayerCount()]; for (int i = 0; i < players.length; i++) { players[i] = new Player(); diff --git a/app/src/main/java/org/toop/app/game/Connect4Game.java b/app/src/main/java/org/toop/app/game/Connect4Game.java index bd063b0..8774fd7 100644 --- a/app/src/main/java/org/toop/app/game/Connect4Game.java +++ b/app/src/main/java/org/toop/app/game/Connect4Game.java @@ -106,7 +106,7 @@ public class Connect4Game { while (isRunning.get()) { final int currentTurn = game.getCurrentTurn(); final String currentValue = currentTurn == 0? "RED" : "BLUE"; - final int nextTurn = (currentTurn + 1) % GameInformation.Type.playerCount(information.type); + final int nextTurn = (currentTurn + 1) % information.type.getPlayerCount(); view.nextPlayer(information.players[currentTurn].isHuman, information.players[currentTurn].name, diff --git a/app/src/main/java/org/toop/app/game/ReversiGame.java b/app/src/main/java/org/toop/app/game/ReversiGame.java index 36afd09..430cf63 100644 --- a/app/src/main/java/org/toop/app/game/ReversiGame.java +++ b/app/src/main/java/org/toop/app/game/ReversiGame.java @@ -116,7 +116,7 @@ public final class ReversiGame { final int currentTurn = game.getCurrentTurn(); final String currentValue = currentTurn == 0? "BLACK" : "WHITE"; - final int nextTurn = (currentTurn + 1) % GameInformation.Type.playerCount(information.type); + final int nextTurn = (currentTurn + 1) % information.type.getPlayerCount(); primary.nextPlayer(information.players[currentTurn].isHuman, information.players[currentTurn].name, diff --git a/app/src/main/java/org/toop/app/game/TicTacToeGame.java b/app/src/main/java/org/toop/app/game/TicTacToeGame.java index 12d800f..2c4fb1e 100644 --- a/app/src/main/java/org/toop/app/game/TicTacToeGame.java +++ b/app/src/main/java/org/toop/app/game/TicTacToeGame.java @@ -102,7 +102,7 @@ public final class TicTacToeGame { while (isRunning.get()) { final int currentTurn = game.getCurrentTurn(); final String currentValue = currentTurn == 0? "X" : "O"; - final int nextTurn = (currentTurn + 1) % GameInformation.Type.playerCount(information.type); + final int nextTurn = (currentTurn + 1) % information.type.getPlayerCount(); primary.nextPlayer(information.players[currentTurn].isHuman, information.players[currentTurn].name, diff --git a/app/src/main/java/org/toop/app/view/views/ChallengeView.java b/app/src/main/java/org/toop/app/view/views/ChallengeView.java index a403de9..36184f6 100644 --- a/app/src/main/java/org/toop/app/view/views/ChallengeView.java +++ b/app/src/main/java/org/toop/app/view/views/ChallengeView.java @@ -87,7 +87,7 @@ public final class ChallengeView extends View { final Slider computerDifficultySlider = slider(); computerDifficultySlider.setMin(0); - computerDifficultySlider.setMax(GameInformation.Type.maxDepth(Server.gameToType(game))); + computerDifficultySlider.setMax(Server.gameToType(game).getMaxDepth()); computerDifficultySlider.setValue(playerInformation.computerDifficulty); computerDifficultySlider.valueProperty().addListener((_, _, newValue) -> { playerInformation.computerDifficulty = newValue.intValue(); diff --git a/app/src/main/java/org/toop/app/view/views/LocalMultiplayerView.java b/app/src/main/java/org/toop/app/view/views/LocalMultiplayerView.java index b96751d..c44d784 100644 --- a/app/src/main/java/org/toop/app/view/views/LocalMultiplayerView.java +++ b/app/src/main/java/org/toop/app/view/views/LocalMultiplayerView.java @@ -83,7 +83,7 @@ public final class LocalMultiplayerView extends View { } private VBox[] setupPlayers() { - final VBox[] playerBoxes = new VBox[GameInformation.Type.playerCount(information.type)]; + final VBox[] playerBoxes = new VBox[information.type.getPlayerCount()]; for (int i = 0; i < playerBoxes.length; i++) { final int index = i; @@ -141,7 +141,7 @@ public final class LocalMultiplayerView extends View { final Slider computerDifficultySlider = slider(); computerDifficultySlider.setMin(0); - computerDifficultySlider.setMax(GameInformation.Type.maxDepth(information.type)); + computerDifficultySlider.setMax(information.type.getMaxDepth()); computerDifficultySlider.setValue(information.players[i].computerDifficulty); computerDifficultySlider.valueProperty().addListener((_, _, newValue) -> { information.players[index].computerDifficulty = newValue.intValue(); diff --git a/app/src/main/java/org/toop/app/view/views/SendChallengeView.java b/app/src/main/java/org/toop/app/view/views/SendChallengeView.java index f78f2fc..d72560c 100644 --- a/app/src/main/java/org/toop/app/view/views/SendChallengeView.java +++ b/app/src/main/java/org/toop/app/view/views/SendChallengeView.java @@ -86,7 +86,7 @@ public final class SendChallengeView extends View { final Slider computerDifficultySlider = slider(); computerDifficultySlider.setMin(0); - computerDifficultySlider.setMax(GameInformation.Type.maxDepth(Server.gameToType(gamesCombobox.getValue()))); + computerDifficultySlider.setMax(Server.gameToType(gamesCombobox.getValue()).getMaxDepth()); computerDifficultySlider.setValue(playerInformation.computerDifficulty); computerDifficultySlider.valueProperty().addListener((_, _, newValue) -> { playerInformation.computerDifficulty = newValue.intValue(); diff --git a/app/src/main/java/org/toop/app/widget/popup/SendChallengePopup.java b/app/src/main/java/org/toop/app/widget/popup/SendChallengePopup.java index f8754fd..6299fdc 100644 --- a/app/src/main/java/org/toop/app/widget/popup/SendChallengePopup.java +++ b/app/src/main/java/org/toop/app/widget/popup/SendChallengePopup.java @@ -53,9 +53,9 @@ public final class SendChallengePopup extends PopupWidget { newGame -> { playerInformation.computerDifficulty = Math.min( playerInformation.computerDifficulty, - GameInformation.Type.maxDepth(Server.gameToType(newGame)) + Server.gameToType(newGame).getMaxDepth() ); - }, + }, games.toArray(new String[0]) ); diff --git a/app/src/main/java/org/toop/app/widget/view/LocalMultiplayerView.java b/app/src/main/java/org/toop/app/widget/view/LocalMultiplayerView.java index 609a260..9ddd5f3 100644 --- a/app/src/main/java/org/toop/app/widget/view/LocalMultiplayerView.java +++ b/app/src/main/java/org/toop/app/widget/view/LocalMultiplayerView.java @@ -49,7 +49,7 @@ public class LocalMultiplayerView extends ViewWidget { } private ScrollPane setupPlayerSections() { - int playerCount = GameInformation.Type.playerCount(information.type); + int playerCount = information.type.getPlayerCount(); VBox[] playerBoxes = new VBox[playerCount]; for (int i = 0; i < playerCount; i++) {