diff --git a/app/src/main/java/org/toop/app/Server.java b/app/src/main/java/org/toop/app/Server.java
index ef691b4..a781a70 100644
--- a/app/src/main/java/org/toop/app/Server.java
+++ b/app/src/main/java/org/toop/app/Server.java
@@ -214,15 +214,15 @@ public final class Server {
switch (type) {
case TICTACTOE ->{
- Player[] players = new Player[2];
- players[(myTurn + 1) % 2] = new OnlinePlayer<>(response.opponent());
- players[myTurn] = new ArtificialPlayer<>(new RandomAI(), user);
+ Player[] players = new Player[2];
+ players[(myTurn + 1) % 2] = new OnlinePlayer(response.opponent());
+ players[myTurn] = new ArtificialPlayer(new RandomAI(), user);
gameController = new TicTacToeBitController(players);
}
case REVERSI -> {
- Player[] players = new Player[2];
- players[(myTurn + 1) % 2] = new OnlinePlayer<>(response.opponent());
- players[myTurn] = new ArtificialPlayer<>(new RandomAI(), user);
+ Player[] players = new Player[2];
+ players[(myTurn + 1) % 2] = new OnlinePlayer(response.opponent());
+ players[myTurn] = new ArtificialPlayer(new RandomAI(), user);
gameController = new ReversiBitController(players);}
default -> new ErrorPopup("Unsupported game type.");
diff --git a/app/src/main/java/org/toop/app/canvas/BitGameCanvas.java b/app/src/main/java/org/toop/app/canvas/BitGameCanvas.java
index 85c6f7d..5beb7af 100644
--- a/app/src/main/java/org/toop/app/canvas/BitGameCanvas.java
+++ b/app/src/main/java/org/toop/app/canvas/BitGameCanvas.java
@@ -14,7 +14,7 @@ import org.toop.framework.gameFramework.view.GUIEvents;
import java.util.function.Consumer;
-public abstract class BitGameCanvas> implements GameCanvas {
+public abstract class BitGameCanvas implements GameCanvas {
protected record Cell(float x, float y, float width, float height) {
public boolean isInside(double x, double y) {
return x >= this.x && x <= this.x + width &&
diff --git a/app/src/main/java/org/toop/app/canvas/GameCanvas.java b/app/src/main/java/org/toop/app/canvas/GameCanvas.java
index d1361c5..1739d66 100644
--- a/app/src/main/java/org/toop/app/canvas/GameCanvas.java
+++ b/app/src/main/java/org/toop/app/canvas/GameCanvas.java
@@ -1,8 +1,7 @@
package org.toop.app.canvas;
import javafx.scene.canvas.Canvas;
-import org.toop.framework.gameFramework.model.game.TurnBasedGame;
-public interface GameCanvas> extends GameDrawer{
+public interface GameCanvas extends GameDrawer{
Canvas getCanvas();
}
diff --git a/app/src/main/java/org/toop/app/canvas/GameDrawer.java b/app/src/main/java/org/toop/app/canvas/GameDrawer.java
index 261334c..2adb6b0 100644
--- a/app/src/main/java/org/toop/app/canvas/GameDrawer.java
+++ b/app/src/main/java/org/toop/app/canvas/GameDrawer.java
@@ -2,6 +2,6 @@ package org.toop.app.canvas;
import org.toop.framework.gameFramework.model.game.TurnBasedGame;
-public interface GameDrawer> {
- void redraw(T gameCopy);
+public interface GameDrawer {
+ void redraw(TurnBasedGame gameCopy);
}
diff --git a/app/src/main/java/org/toop/app/canvas/ReversiBitCanvas.java b/app/src/main/java/org/toop/app/canvas/ReversiBitCanvas.java
index 7c2bde0..016d6b3 100644
--- a/app/src/main/java/org/toop/app/canvas/ReversiBitCanvas.java
+++ b/app/src/main/java/org/toop/app/canvas/ReversiBitCanvas.java
@@ -2,12 +2,13 @@ package org.toop.app.canvas;
import javafx.scene.paint.Color;
import org.toop.app.App;
+import org.toop.framework.gameFramework.model.game.TurnBasedGame;
import org.toop.game.games.reversi.BitboardReversi;
import java.util.Arrays;
import java.util.function.Consumer;
-public class ReversiBitCanvas extends BitGameCanvas {
+public class ReversiBitCanvas extends BitGameCanvas {
public ReversiBitCanvas() {
super(Color.GRAY, new Color(0f, 0.4f, 0.2f, 1f), (App.getHeight() / 4) * 3, (App.getHeight() / 4) * 3, 8, 8, 5, true);
canvas.setOnMouseMoved(event -> {
@@ -33,10 +34,10 @@ public class ReversiBitCanvas extends BitGameCanvas {
}
@Override
- public void redraw(BitboardReversi gameCopy) {
+ public void redraw(TurnBasedGame gameCopy) {
clearAll();
long[] board = gameCopy.getBoard();
- loopOverBoard(board[0], (i) -> drawDot(Color.WHITE, i));
- loopOverBoard(board[1], (i) -> drawDot(Color.BLACK, i));
+ loopOverBoard(board[0], (i) -> drawDot(Color.WHITE, (int)i));
+ loopOverBoard(board[1], (i) -> drawDot(Color.BLACK, (int)i));
}
}
diff --git a/app/src/main/java/org/toop/app/canvas/TicTacToeBitCanvas.java b/app/src/main/java/org/toop/app/canvas/TicTacToeBitCanvas.java
index 443adbd..3520417 100644
--- a/app/src/main/java/org/toop/app/canvas/TicTacToeBitCanvas.java
+++ b/app/src/main/java/org/toop/app/canvas/TicTacToeBitCanvas.java
@@ -2,12 +2,13 @@ package org.toop.app.canvas;
import javafx.scene.paint.Color;
import org.toop.app.App;
+import org.toop.framework.gameFramework.model.game.TurnBasedGame;
import org.toop.game.games.tictactoe.BitboardTicTacToe;
import java.util.Arrays;
import java.util.function.Consumer;
-public class TicTacToeBitCanvas extends BitGameCanvas{
+public class TicTacToeBitCanvas extends BitGameCanvas{
public TicTacToeBitCanvas() {
super(
Color.GRAY,
@@ -22,14 +23,14 @@ public class TicTacToeBitCanvas extends BitGameCanvas{
}
@Override
- public void redraw(BitboardTicTacToe gameCopy) {
+ public void redraw(TurnBasedGame gameCopy) {
clearAll();
drawMoves(gameCopy.getBoard());
}
private void drawMoves(long[] gameBoard){
- loopOverBoard(gameBoard[0], (i) -> drawX(Color.RED, i));
- loopOverBoard(gameBoard[1], (i) -> drawO(Color.BLUE, i));
+ loopOverBoard(gameBoard[0], (i) -> drawX(Color.RED, (int)i));
+ loopOverBoard(gameBoard[1], (i) -> drawO(Color.BLUE, (Integer) i));
}
diff --git a/app/src/main/java/org/toop/app/gameControllers/GenericGameController.java b/app/src/main/java/org/toop/app/gameControllers/GenericGameController.java
index 2c3ad49..4de41f6 100644
--- a/app/src/main/java/org/toop/app/gameControllers/GenericGameController.java
+++ b/app/src/main/java/org/toop/app/gameControllers/GenericGameController.java
@@ -18,7 +18,7 @@ import org.toop.framework.gameFramework.view.GUIEvents;
import org.toop.framework.networking.events.NetworkEvents;
import org.toop.game.players.LocalPlayer;
-public class GenericGameController> implements GameController {
+public class GenericGameController implements GameController {
protected final EventFlow eventFlow = new EventFlow();
// Logger for logging
@@ -28,13 +28,13 @@ public class GenericGameController> implements GameCo
protected final GameView gameView;
// Reference to game canvas
- protected final GameCanvas canvas;
+ protected final GameCanvas canvas;
- protected final TurnBasedGame game; // Reference to game instance
+ protected final TurnBasedGame game; // Reference to game instance
private final ThreadBehaviour gameThreadBehaviour;
// TODO: Change gameType to automatically happen with either dependency injection or something else.
- public GenericGameController(GameCanvas canvas, T game, ThreadBehaviour gameThreadBehaviour, String gameType) {
+ public GenericGameController(GameCanvas canvas, TurnBasedGame game, ThreadBehaviour gameThreadBehaviour, String gameType) {
logger.info("Creating: " + this.getClass());
this.canvas = canvas;
@@ -55,7 +55,9 @@ public class GenericGameController> implements GameCo
// Listen to updates
eventFlow
.listen(GUIEvents.GameEnded.class, this::onGameFinish, false)
- .listen(GUIEvents.PlayerAttemptedMove.class, event -> {if (getCurrentPlayer() instanceof LocalPlayer lp){lp.setMove(event.move());}}, false);
+ .listen(GUIEvents.PlayerAttemptedMove.class, event -> {
+ if (getCurrentPlayer() instanceof LocalPlayer lp){lp.setMove(event.move());}
+ }, false);
}
public void start(){
@@ -70,7 +72,7 @@ public class GenericGameController> implements GameCo
gameThreadBehaviour.stop();
}
- public Player getCurrentPlayer(){
+ public Player getCurrentPlayer(){
return game.getPlayer(getCurrentPlayerIndex());
}
@@ -97,7 +99,7 @@ public class GenericGameController> implements GameCo
stop();
}
- public Player getPlayer(int player){
+ public Player getPlayer(int player){
if (player < 0 || player >= 2){ // TODO: Make game turn player count
logger.error("Invalid player index");
throw new IllegalArgumentException("player out of range");
diff --git a/app/src/main/java/org/toop/app/gameControllers/ReversiBitController.java b/app/src/main/java/org/toop/app/gameControllers/ReversiBitController.java
index 40784b0..c698eeb 100644
--- a/app/src/main/java/org/toop/app/gameControllers/ReversiBitController.java
+++ b/app/src/main/java/org/toop/app/gameControllers/ReversiBitController.java
@@ -8,13 +8,13 @@ import org.toop.game.gameThreads.OnlineThreadBehaviour;
import org.toop.game.games.reversi.BitboardReversi;
import org.toop.game.players.OnlinePlayer;
-public class ReversiBitController extends GenericGameController {
- public ReversiBitController(Player[] players) {
+public class ReversiBitController extends GenericGameController {
+ public ReversiBitController(Player[] players) {
BitboardReversi game = new BitboardReversi(players);
- ThreadBehaviour thread = new LocalThreadBehaviour<>(game);
- for (Player player : players) {
- if (player instanceof OnlinePlayer){
- thread = new OnlineThreadBehaviour<>(game);
+ ThreadBehaviour thread = new LocalThreadBehaviour(game);
+ for (Player player : players) {
+ if (player instanceof OnlinePlayer){
+ thread = new OnlineThreadBehaviour(game);
}
}
super(new ReversiBitCanvas(), game, thread, "Reversi");
diff --git a/app/src/main/java/org/toop/app/gameControllers/TicTacToeBitController.java b/app/src/main/java/org/toop/app/gameControllers/TicTacToeBitController.java
index 6307894..495f6f9 100644
--- a/app/src/main/java/org/toop/app/gameControllers/TicTacToeBitController.java
+++ b/app/src/main/java/org/toop/app/gameControllers/TicTacToeBitController.java
@@ -9,13 +9,13 @@ import org.toop.game.gameThreads.OnlineThreadBehaviour;
import org.toop.game.games.tictactoe.BitboardTicTacToe;
import org.toop.game.players.OnlinePlayer;
-public class TicTacToeBitController extends GenericGameController {
- public TicTacToeBitController(Player[] players) {
+public class TicTacToeBitController extends GenericGameController {
+ public TicTacToeBitController(Player[] players) {
BitboardTicTacToe game = new BitboardTicTacToe(players);
- ThreadBehaviour thread = new LocalThreadBehaviour<>(game);
- for (Player player : players) {
- if (player instanceof OnlinePlayer){
- thread = new OnlineThreadBehaviour<>(game);
+ ThreadBehaviour thread = new LocalThreadBehaviour(game);
+ for (Player player : players) {
+ if (player instanceof OnlinePlayer){
+ thread = new OnlineThreadBehaviour(game);
}
}
super(new TicTacToeBitCanvas(), game, thread , "TicTacToe");
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 9b9bed2..1176c37 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
@@ -58,14 +58,14 @@ public class LocalMultiplayerView extends ViewWidget {
switch (information.type) {
case TICTACTOE:
if (information.players[0].isHuman) {
- players[0] = new LocalPlayer<>(information.players[0].name);
+ players[0] = new LocalPlayer(information.players[0].name);
} else {
- players[0] = new ArtificialPlayer<>(new RandomAI(), "Random AI");
+ players[0] = new ArtificialPlayer(new RandomAI(), "Random AI");
}
if (information.players[1].isHuman) {
- players[1] = new LocalPlayer<>(information.players[1].name);
+ players[1] = new LocalPlayer(information.players[1].name);
} else {
- players[1] = new ArtificialPlayer<>(new MiniMaxAI(9), "MiniMax AI");
+ players[1] = new ArtificialPlayer(new MiniMaxAI(9), "MiniMax AI");
}
if (AppSettings.getSettings().getTutorialFlag() && AppSettings.getSettings().getFirstTTT()) {
new ShowEnableTutorialWidget(
@@ -86,14 +86,14 @@ public class LocalMultiplayerView extends ViewWidget {
break;
case REVERSI:
if (information.players[0].isHuman) {
- players[0] = new LocalPlayer<>(information.players[0].name);
+ players[0] = new LocalPlayer(information.players[0].name);
} else {
- players[0] = new ArtificialPlayer<>(new RandomAI(), "Random AI");
+ players[0] = new ArtificialPlayer(new RandomAI(), "Random AI");
}
if (information.players[1].isHuman) {
- players[1] = new LocalPlayer<>(information.players[1].name);
+ players[1] = new LocalPlayer(information.players[1].name);
} else {
- players[1] = new ArtificialPlayer<>(new MiniMaxAI(6), "MiniMax");
+ players[1] = new ArtificialPlayer(new MiniMaxAI(6), "MiniMax");
}
if (AppSettings.getSettings().getTutorialFlag() && AppSettings.getSettings().getFirstReversi()) {
new ShowEnableTutorialWidget(
diff --git a/framework/src/main/java/org/toop/framework/gameFramework/model/game/PlayerProvider.java b/framework/src/main/java/org/toop/framework/gameFramework/model/game/PlayerProvider.java
index 8db47a3..181edaa 100644
--- a/framework/src/main/java/org/toop/framework/gameFramework/model/game/PlayerProvider.java
+++ b/framework/src/main/java/org/toop/framework/gameFramework/model/game/PlayerProvider.java
@@ -2,6 +2,6 @@ package org.toop.framework.gameFramework.model.game;
import org.toop.framework.gameFramework.model.player.Player;
-public interface PlayerProvider> {
- Player getPlayer(int index);
+public interface PlayerProvider {
+ Player getPlayer(int index);
}
diff --git a/framework/src/main/java/org/toop/framework/gameFramework/model/game/TurnBasedGame.java b/framework/src/main/java/org/toop/framework/gameFramework/model/game/TurnBasedGame.java
index d4cb4df..dae192d 100644
--- a/framework/src/main/java/org/toop/framework/gameFramework/model/game/TurnBasedGame.java
+++ b/framework/src/main/java/org/toop/framework/gameFramework/model/game/TurnBasedGame.java
@@ -1,6 +1,6 @@
package org.toop.framework.gameFramework.model.game;
-public interface TurnBasedGame> extends Playable, DeepCopyable, PlayerProvider, BoardProvider {
+public interface TurnBasedGame extends Playable, PlayerProvider, BoardProvider, DeepCopyable {
int getCurrentTurn();
int getPlayerCount();
int getWinner();
diff --git a/framework/src/main/java/org/toop/framework/gameFramework/model/game/threadBehaviour/AbstractThreadBehaviour.java b/framework/src/main/java/org/toop/framework/gameFramework/model/game/threadBehaviour/AbstractThreadBehaviour.java
index da6647a..9dd6af7 100644
--- a/framework/src/main/java/org/toop/framework/gameFramework/model/game/threadBehaviour/AbstractThreadBehaviour.java
+++ b/framework/src/main/java/org/toop/framework/gameFramework/model/game/threadBehaviour/AbstractThreadBehaviour.java
@@ -16,14 +16,14 @@ import java.util.function.Consumer;
* a running flag, a game reference, and a logger.
* Subclasses implement the actual game-loop logic.
*/
-public abstract class AbstractThreadBehaviour> implements ThreadBehaviour {
+public abstract class AbstractThreadBehaviour implements ThreadBehaviour {
private LongPairConsumer onSendMove;
private Runnable onUpdateUI;
/** Indicates whether the game loop or event processing is active. */
protected final AtomicBoolean isRunning = new AtomicBoolean();
/** The game instance controlled by this behaviour. */
- protected final T game;
+ protected final TurnBasedGame game;
/** Logger for the subclass to report errors or debug info. */
protected final Logger logger = LogManager.getLogger(this.getClass());
@@ -33,7 +33,7 @@ public abstract class AbstractThreadBehaviour> implem
*
* @param game the turn-based game to control
*/
- public AbstractThreadBehaviour(T game) {
+ public AbstractThreadBehaviour(TurnBasedGame game) {
this.game = game;
}
diff --git a/framework/src/main/java/org/toop/framework/gameFramework/model/player/AI.java b/framework/src/main/java/org/toop/framework/gameFramework/model/player/AI.java
index 8377166..afacfbf 100644
--- a/framework/src/main/java/org/toop/framework/gameFramework/model/player/AI.java
+++ b/framework/src/main/java/org/toop/framework/gameFramework/model/player/AI.java
@@ -3,5 +3,5 @@ package org.toop.framework.gameFramework.model.player;
import org.toop.framework.gameFramework.model.game.DeepCopyable;
import org.toop.framework.gameFramework.model.game.TurnBasedGame;
-public interface AI> extends MoveProvider, DeepCopyable> {
+public interface AI extends MoveProvider, DeepCopyable {
}
diff --git a/framework/src/main/java/org/toop/framework/gameFramework/model/player/AbstractAI.java b/framework/src/main/java/org/toop/framework/gameFramework/model/player/AbstractAI.java
index 328132d..bdca918 100644
--- a/framework/src/main/java/org/toop/framework/gameFramework/model/player/AbstractAI.java
+++ b/framework/src/main/java/org/toop/framework/gameFramework/model/player/AbstractAI.java
@@ -12,6 +12,6 @@ import org.toop.framework.gameFramework.model.game.TurnBasedGame;
*
* @param the specific type of game this AI can play, extending {@link GameR}
*/
-public abstract class AbstractAI> implements AI {
+public abstract class AbstractAI implements AI {
// Concrete AI implementations should override findBestMove(T game, int depth)
}
diff --git a/framework/src/main/java/org/toop/framework/gameFramework/model/player/AbstractPlayer.java b/framework/src/main/java/org/toop/framework/gameFramework/model/player/AbstractPlayer.java
index 57e2f18..f643574 100644
--- a/framework/src/main/java/org/toop/framework/gameFramework/model/player/AbstractPlayer.java
+++ b/framework/src/main/java/org/toop/framework/gameFramework/model/player/AbstractPlayer.java
@@ -15,7 +15,7 @@ import org.toop.framework.gameFramework.model.game.TurnBasedGame;
* specific move logic.
*
*/
-public abstract class AbstractPlayer> implements Player {
+public abstract class AbstractPlayer implements Player {
private final Logger logger = LogManager.getLogger(this.getClass());
private final String name;
@@ -24,7 +24,7 @@ public abstract class AbstractPlayer> implements Play
this.name = name;
}
- protected AbstractPlayer(AbstractPlayer other) {
+ protected AbstractPlayer(AbstractPlayer other) {
this.name = other.name;
}
/**
@@ -39,7 +39,7 @@ public abstract class AbstractPlayer> implements Play
* @return an integer representing the chosen move
* @throws UnsupportedOperationException if the method is not overridden
*/
- public long getMove(T gameCopy) {
+ public long getMove(TurnBasedGame gameCopy) {
logger.error("Method getMove not implemented.");
throw new UnsupportedOperationException("Not supported yet.");
}
diff --git a/framework/src/main/java/org/toop/framework/gameFramework/model/player/MoveProvider.java b/framework/src/main/java/org/toop/framework/gameFramework/model/player/MoveProvider.java
index b9ab448..159addd 100644
--- a/framework/src/main/java/org/toop/framework/gameFramework/model/player/MoveProvider.java
+++ b/framework/src/main/java/org/toop/framework/gameFramework/model/player/MoveProvider.java
@@ -2,6 +2,6 @@ package org.toop.framework.gameFramework.model.player;
import org.toop.framework.gameFramework.model.game.TurnBasedGame;
-public interface MoveProvider> {
- long getMove(T game);
+public interface MoveProvider {
+ long getMove(TurnBasedGame game);
}
diff --git a/framework/src/main/java/org/toop/framework/gameFramework/model/player/Player.java b/framework/src/main/java/org/toop/framework/gameFramework/model/player/Player.java
index e2ff1a8..a3f1b32 100644
--- a/framework/src/main/java/org/toop/framework/gameFramework/model/player/Player.java
+++ b/framework/src/main/java/org/toop/framework/gameFramework/model/player/Player.java
@@ -3,5 +3,5 @@ package org.toop.framework.gameFramework.model.player;
import org.toop.framework.gameFramework.model.game.DeepCopyable;
import org.toop.framework.gameFramework.model.game.TurnBasedGame;
-public interface Player> extends NameProvider, MoveProvider, DeepCopyable> {
+public interface Player extends NameProvider, MoveProvider, DeepCopyable {
}
diff --git a/game/src/main/java/org/toop/game/BitboardGame.java b/game/src/main/java/org/toop/game/BitboardGame.java
index 4ebdb95..b4244af 100644
--- a/game/src/main/java/org/toop/game/BitboardGame.java
+++ b/game/src/main/java/org/toop/game/BitboardGame.java
@@ -7,17 +7,17 @@ import java.util.Arrays;
import java.util.concurrent.atomic.AtomicInteger;
// There is AI performance to be gained by getting rid of non-primitives and thus speeding up deepCopy
-public abstract class BitboardGame> implements TurnBasedGame {
+public abstract class BitboardGame implements TurnBasedGame {
private final int columnSize;
private final int rowSize;
- private Player[] players;
+ private Player[] players;
// long is 64 bits. Every game has a limit of 64 cells maximum.
private final long[] playerBitboard;
private int currentTurn = 0;
- public BitboardGame(int columnSize, int rowSize, int playerCount, Player[] players) {
+ public BitboardGame(int columnSize, int rowSize, int playerCount, Player[] players) {
this.columnSize = columnSize;
this.rowSize = rowSize;
this.players = players;
@@ -26,14 +26,14 @@ public abstract class BitboardGame> implements TurnBas
Arrays.fill(playerBitboard, 0L);
}
- public BitboardGame(BitboardGame other) {
+ public BitboardGame(BitboardGame other) {
this.columnSize = other.columnSize;
this.rowSize = other.rowSize;
this.playerBitboard = other.playerBitboard.clone();
this.currentTurn = other.currentTurn;
this.players = Arrays.stream(other.players)
- .map(Player::deepCopy)
+ .map(Player::deepCopy)
.toArray(Player[]::new);
}
@@ -61,7 +61,7 @@ public abstract class BitboardGame> implements TurnBas
return getCurrentPlayerIndex();
}
- public Player getPlayer(int index) {return players[index];}
+ public Player getPlayer(int index) {return players[index];}
public int getCurrentPlayerIndex() {
return currentTurn % playerBitboard.length;
@@ -71,7 +71,7 @@ public abstract class BitboardGame> implements TurnBas
return (currentTurn + 1) % playerBitboard.length;
}
- public Player getCurrentPlayer(){
+ public Player getCurrentPlayer(){
return players[getCurrentPlayerIndex()];
}
diff --git a/game/src/main/java/org/toop/game/gameThreads/LocalFixedRateThreadBehaviour.java b/game/src/main/java/org/toop/game/gameThreads/LocalFixedRateThreadBehaviour.java
index 0a9da7f..670cb2a 100644
--- a/game/src/main/java/org/toop/game/gameThreads/LocalFixedRateThreadBehaviour.java
+++ b/game/src/main/java/org/toop/game/gameThreads/LocalFixedRateThreadBehaviour.java
@@ -16,7 +16,7 @@ import java.util.function.Consumer;
* Runs a separate thread that executes game turns at a fixed frequency (default 60 updates/sec),
* applying player moves, updating the game state, and dispatching UI events.
*/
-public class LocalFixedRateThreadBehaviour> extends AbstractThreadBehaviour implements Runnable {
+public class LocalFixedRateThreadBehaviour extends AbstractThreadBehaviour implements Runnable {
/**
@@ -24,7 +24,7 @@ public class LocalFixedRateThreadBehaviour> extends A
*
* @param game the game instance
*/
- public LocalFixedRateThreadBehaviour(T game) {
+ public LocalFixedRateThreadBehaviour(TurnBasedGame game) {
super(game);
}
@@ -59,7 +59,7 @@ public class LocalFixedRateThreadBehaviour> extends A
if (now >= nextUpdate) {
nextUpdate += UPDATE_INTERVAL;
- Player currentPlayer = game.getPlayer(game.getCurrentTurn());
+ Player currentPlayer = game.getPlayer(game.getCurrentTurn());
long move = currentPlayer.getMove(game.deepCopy());
PlayResult result = game.play(move);
diff --git a/game/src/main/java/org/toop/game/gameThreads/LocalThreadBehaviour.java b/game/src/main/java/org/toop/game/gameThreads/LocalThreadBehaviour.java
index 79c57f9..fab1b96 100644
--- a/game/src/main/java/org/toop/game/gameThreads/LocalThreadBehaviour.java
+++ b/game/src/main/java/org/toop/game/gameThreads/LocalThreadBehaviour.java
@@ -16,14 +16,14 @@ import java.util.function.Consumer;
* Repeatedly gets the current player's move, applies it to the game,
* updates the UI, and stops when the game ends or {@link #stop()} is called.
*/
-public class LocalThreadBehaviour> extends AbstractThreadBehaviour implements Runnable {
+public class LocalThreadBehaviour extends AbstractThreadBehaviour implements Runnable {
/**
* Creates a new behaviour for a local turn-based game.
*
* @param game the game instance
*/
- public LocalThreadBehaviour(T game) {
+ public LocalThreadBehaviour(TurnBasedGame game) {
super(game);
}
@@ -48,7 +48,7 @@ public class LocalThreadBehaviour> extends AbstractTh
@Override
public void run() {
while (isRunning.get()) {
- Player currentPlayer = game.getPlayer(game.getCurrentTurn());
+ Player currentPlayer = game.getPlayer(game.getCurrentTurn());
long move = currentPlayer.getMove(game.deepCopy());
PlayResult result = game.play(move);
diff --git a/game/src/main/java/org/toop/game/gameThreads/OnlineThreadBehaviour.java b/game/src/main/java/org/toop/game/gameThreads/OnlineThreadBehaviour.java
index ae9aa88..97c339a 100644
--- a/game/src/main/java/org/toop/game/gameThreads/OnlineThreadBehaviour.java
+++ b/game/src/main/java/org/toop/game/gameThreads/OnlineThreadBehaviour.java
@@ -14,17 +14,17 @@ import org.toop.game.players.OnlinePlayer;
* Reacts to server events, sending moves and updating the game state
* for the local player while receiving moves from other players.
*/
-public class OnlineThreadBehaviour> extends AbstractThreadBehaviour implements SupportsOnlinePlay {
+public class OnlineThreadBehaviour extends AbstractThreadBehaviour implements SupportsOnlinePlay {
/**
* Creates behaviour and sets the first local player
* (non-online player) from the given array.
*/
- public OnlineThreadBehaviour(T game) {
+ public OnlineThreadBehaviour(TurnBasedGame game) {
super(game);
}
/** Finds the first non-online player in the array. */
- private int getFirstNotOnlinePlayer(Player[] players) {
+ private int getFirstNotOnlinePlayer(Player[] players) {
for (int i = 0; i < players.length; i++) {
if (!(players[i] instanceof OnlinePlayer)) {
return i;
diff --git a/game/src/main/java/org/toop/game/gameThreads/OnlineWithSleepThreadBehaviour.java b/game/src/main/java/org/toop/game/gameThreads/OnlineWithSleepThreadBehaviour.java
index a666f8d..ad20969 100644
--- a/game/src/main/java/org/toop/game/gameThreads/OnlineWithSleepThreadBehaviour.java
+++ b/game/src/main/java/org/toop/game/gameThreads/OnlineWithSleepThreadBehaviour.java
@@ -10,14 +10,14 @@ import org.toop.framework.networking.events.NetworkEvents;
* This is identical to {@link OnlineThreadBehaviour}, but inserts a
* short sleep before delegating to the base implementation.
*/
-public class OnlineWithSleepThreadBehaviour> extends OnlineThreadBehaviour {
+public class OnlineWithSleepThreadBehaviour extends OnlineThreadBehaviour {
/**
* Creates the behaviour and forwards the players to the base class.
*
* @param game the online-capable turn-based game
*/
- public OnlineWithSleepThreadBehaviour(T game) {
+ public OnlineWithSleepThreadBehaviour(TurnBasedGame game) {
super(game);
}
diff --git a/game/src/main/java/org/toop/game/games/reversi/BitboardReversi.java b/game/src/main/java/org/toop/game/games/reversi/BitboardReversi.java
index f380bef..867322f 100644
--- a/game/src/main/java/org/toop/game/games/reversi/BitboardReversi.java
+++ b/game/src/main/java/org/toop/game/games/reversi/BitboardReversi.java
@@ -5,14 +5,14 @@ import org.toop.framework.gameFramework.model.game.PlayResult;
import org.toop.framework.gameFramework.model.player.Player;
import org.toop.game.BitboardGame;
-public class BitboardReversi extends BitboardGame {
+public class BitboardReversi extends BitboardGame {
public record Score(int black, int white) {}
private final long notAFile = 0xfefefefefefefefeL;
private final long notHFile = 0x7f7f7f7f7f7f7f7fL;
- public BitboardReversi(Player[] players) {
+ public BitboardReversi(Player[] players) {
super(8, 8, 2, players);
// Black (player 0)
diff --git a/game/src/main/java/org/toop/game/games/tictactoe/BitboardTicTacToe.java b/game/src/main/java/org/toop/game/games/tictactoe/BitboardTicTacToe.java
index 0927431..c467e97 100644
--- a/game/src/main/java/org/toop/game/games/tictactoe/BitboardTicTacToe.java
+++ b/game/src/main/java/org/toop/game/games/tictactoe/BitboardTicTacToe.java
@@ -5,7 +5,7 @@ import org.toop.framework.gameFramework.model.game.PlayResult;
import org.toop.framework.gameFramework.model.player.Player;
import org.toop.game.BitboardGame;
-public class BitboardTicTacToe extends BitboardGame {
+public class BitboardTicTacToe extends BitboardGame {
private final long[] winningLines = {
0b111000000L, // top row
0b000111000L, // middle row
@@ -17,7 +17,7 @@ public class BitboardTicTacToe extends BitboardGame {
0b001010100L // anti-diagonal
};
- public BitboardTicTacToe(Player[] players) {
+ public BitboardTicTacToe(Player[] players) {
super(3, 3, 2, players);
}
public BitboardTicTacToe(BitboardTicTacToe other) {
diff --git a/game/src/main/java/org/toop/game/players/ArtificialPlayer.java b/game/src/main/java/org/toop/game/players/ArtificialPlayer.java
index 418cbed..5cfecff 100644
--- a/game/src/main/java/org/toop/game/players/ArtificialPlayer.java
+++ b/game/src/main/java/org/toop/game/players/ArtificialPlayer.java
@@ -12,22 +12,22 @@ import org.toop.framework.gameFramework.model.game.TurnBasedGame;
*
* @param the specific type of game this AI player can play
*/
-public class ArtificialPlayer> extends AbstractPlayer {
+public class ArtificialPlayer extends AbstractPlayer {
/** The AI instance used to calculate moves. */
- private final AI ai;
+ private final AI ai;
/**
* Constructs a new ArtificialPlayer using the specified AI.
*
* @param ai the AI instance that determines moves for this player
*/
- public ArtificialPlayer(AI ai, String name) {
+ public ArtificialPlayer(AI ai, String name) {
super(name);
this.ai = ai;
}
- public ArtificialPlayer(ArtificialPlayer other) {
+ public ArtificialPlayer(ArtificialPlayer other) {
super(other);
this.ai = other.ai.deepCopy();
}
@@ -44,12 +44,12 @@ public class ArtificialPlayer> extends AbstractPlayer
* @return the integer representing the chosen move
* @throws ClassCastException if {@code gameCopy} is not of type {@code T}
*/
- public long getMove(T gameCopy) {
+ public long getMove(TurnBasedGame gameCopy) {
return ai.getMove(gameCopy);
}
@Override
- public ArtificialPlayer deepCopy() {
- return new ArtificialPlayer(this);
+ public ArtificialPlayer deepCopy() {
+ return new ArtificialPlayer(this);
}
}
diff --git a/game/src/main/java/org/toop/game/players/LocalPlayer.java b/game/src/main/java/org/toop/game/players/LocalPlayer.java
index 8f3b94d..47ed5db 100644
--- a/game/src/main/java/org/toop/game/players/LocalPlayer.java
+++ b/game/src/main/java/org/toop/game/players/LocalPlayer.java
@@ -7,7 +7,7 @@ import org.toop.framework.gameFramework.model.player.Player;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
-public class LocalPlayer> extends AbstractPlayer {
+public class LocalPlayer extends AbstractPlayer {
// Future can be used with event system, IF unsubscribeAfterSuccess works...
// private CompletableFuture LastMove = new CompletableFuture<>();
@@ -17,12 +17,12 @@ public class LocalPlayer> extends AbstractPlayer {
super(name);
}
- public LocalPlayer(LocalPlayer other) {
+ public LocalPlayer(LocalPlayer other) {
super(other);
}
@Override
- public long getMove(T gameCopy) {
+ public long getMove(TurnBasedGame gameCopy) {
return getValidMove(gameCopy);
}
@@ -36,7 +36,7 @@ public class LocalPlayer> extends AbstractPlayer {
return false;
}
- private long getMove2(T gameCopy) {
+ private long getMove2(TurnBasedGame gameCopy) {
LastMove = new CompletableFuture<>();
long move = 0;
try {
@@ -49,7 +49,7 @@ public class LocalPlayer> extends AbstractPlayer {
return move;
}
- protected long getValidMove(T gameCopy){
+ protected long getValidMove(TurnBasedGame gameCopy){
// Get this player's valid moves
long validMoves = gameCopy.getLegalMoves();
// Make sure provided move is valid
@@ -64,8 +64,8 @@ public class LocalPlayer> extends AbstractPlayer {
}
@Override
- public LocalPlayer deepCopy() {
- return new LocalPlayer(this.getName());
+ public LocalPlayer deepCopy() {
+ return new LocalPlayer(this.getName());
}
/*public void register() {
diff --git a/game/src/main/java/org/toop/game/players/MiniMaxAI.java b/game/src/main/java/org/toop/game/players/MiniMaxAI.java
index 440bb50..39e254d 100644
--- a/game/src/main/java/org/toop/game/players/MiniMaxAI.java
+++ b/game/src/main/java/org/toop/game/players/MiniMaxAI.java
@@ -9,7 +9,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Random;
-public class MiniMaxAI> extends AbstractAI {
+public class MiniMaxAI extends AbstractAI {
private final int maxDepth;
private final Random random = new Random();
@@ -18,17 +18,17 @@ public class MiniMaxAI> extends AbstractAI {
this.maxDepth = depth;
}
- public MiniMaxAI(MiniMaxAI other) {
+ public MiniMaxAI(MiniMaxAI other) {
this.maxDepth = other.maxDepth;
}
@Override
- public MiniMaxAI deepCopy() {
- return new MiniMaxAI<>(this);
+ public MiniMaxAI deepCopy() {
+ return new MiniMaxAI(this);
}
@Override
- public long getMove(T game) {
+ public long getMove(TurnBasedGame game) {
long legalMoves = game.getLegalMoves();
if (legalMoves == 0) return 0;
@@ -39,7 +39,7 @@ public class MiniMaxAI> extends AbstractAI {
long movesLoop = legalMoves;
while (movesLoop != 0) {
long move = 1L << Long.numberOfTrailingZeros(movesLoop);
- T copy = game.deepCopy();
+ TurnBasedGame copy = game.deepCopy();
PlayResult result = copy.play(move);
int score;
@@ -75,7 +75,7 @@ public class MiniMaxAI> extends AbstractAI {
* @param beta Beta value
* @return score of the position
*/
- private int getMoveScore(T game, int depth, boolean maximizing, int aiPlayer, int alpha, int beta) {
+ private int getMoveScore(TurnBasedGame game, int depth, boolean maximizing, int aiPlayer, int alpha, int beta) {
long legalMoves = game.getLegalMoves();
// Terminal state
@@ -95,7 +95,7 @@ public class MiniMaxAI> extends AbstractAI {
while (movesLoop != 0) {
long move = 1L << Long.numberOfTrailingZeros(movesLoop);
- T copy = game.deepCopy();
+ TurnBasedGame copy = game.deepCopy();
PlayResult result = copy.play(move);
int score;
@@ -130,7 +130,7 @@ public class MiniMaxAI> extends AbstractAI {
* @param aiPlayer AI's player index
* @return heuristic score
*/
- private int evaluateBoard(T game, int aiPlayer) {
+ private int evaluateBoard(TurnBasedGame game, int aiPlayer) {
long[] board = game.getBoard();
int aiCount = 0;
int opponentCount = 0;
diff --git a/game/src/main/java/org/toop/game/players/OnlinePlayer.java b/game/src/main/java/org/toop/game/players/OnlinePlayer.java
index 9f011c0..96cc7a1 100644
--- a/game/src/main/java/org/toop/game/players/OnlinePlayer.java
+++ b/game/src/main/java/org/toop/game/players/OnlinePlayer.java
@@ -12,7 +12,7 @@ import org.toop.framework.gameFramework.model.player.Player;
* Currently, this class is a placeholder and does not implement move logic.
*
*/
-public class OnlinePlayer> extends AbstractPlayer {
+public class OnlinePlayer extends AbstractPlayer {
/**
* Constructs a new OnlinePlayer.
@@ -25,12 +25,12 @@ public class OnlinePlayer> extends AbstractPlayer
super(name);
}
- public OnlinePlayer(OnlinePlayer other) {
+ public OnlinePlayer(OnlinePlayer other) {
super(other);
}
@Override
- public Player deepCopy() {
- return new OnlinePlayer<>(this);
+ public Player deepCopy() {
+ return new OnlinePlayer(this);
}
}
diff --git a/game/src/main/java/org/toop/game/players/RandomAI.java b/game/src/main/java/org/toop/game/players/RandomAI.java
index 2d0fe02..9a867a7 100644
--- a/game/src/main/java/org/toop/game/players/RandomAI.java
+++ b/game/src/main/java/org/toop/game/players/RandomAI.java
@@ -6,19 +6,19 @@ import org.toop.framework.gameFramework.model.player.AbstractAI;
import java.util.Random;
-public class RandomAI> extends AbstractAI {
+public class RandomAI extends AbstractAI {
public RandomAI() {
super();
}
@Override
- public RandomAI deepCopy() {
- return new RandomAI();
+ public RandomAI deepCopy() {
+ return new RandomAI();
}
@Override
- public long getMove(T game) {
+ public long getMove(TurnBasedGame game) {
long legalMoves = game.getLegalMoves();
int move = new Random().nextInt(Long.bitCount(legalMoves));
return nthBitIndex(legalMoves, move);