From bb1e3858bb6b441fa16cb31ae715808e9d9cf934 Mon Sep 17 00:00:00 2001 From: Cedric Beck Date: Sat, 12 Oct 2024 16:17:46 +0200 Subject: [PATCH] fixed not working single mode, added read port from textline when client host server --- Projekte/battleship/client/client.properties | 2 +- .../src/main/java/pp/battleship/client/GameSound.java | 2 -- .../src/main/java/pp/battleship/client/NetworkDialog.java | 2 +- .../client/clienthost/BattleshipServerClient.java | 8 ++++---- .../main/java/pp/battleship/game/client/BattleState.java | 1 - .../java/pp/battleship/game/client/ShootingState.java | 1 - .../java/pp/battleship/game/server/ServerGameLogic.java | 7 +++++-- .../main/java/pp/battleship/game/singlemode/Copycat.java | 2 +- .../java/pp/battleship/game/singlemode/RobotClient.java | 3 +++ 9 files changed, 15 insertions(+), 13 deletions(-) diff --git a/Projekte/battleship/client/client.properties b/Projekte/battleship/client/client.properties index 8c489d66..392221b4 100644 --- a/Projekte/battleship/client/client.properties +++ b/Projekte/battleship/client/client.properties @@ -32,7 +32,7 @@ robot.targets=2, 0,\ 2, 6 # # Delay in milliseconds between each shot fired by the RobotClient. -robot.delay=500 +robot.delay=4000 # # The dimensions of the game map used in single mode. # 'map.width' defines the number of columns, and 'map.height' defines the number of rows. diff --git a/Projekte/battleship/client/src/main/java/pp/battleship/client/GameSound.java b/Projekte/battleship/client/src/main/java/pp/battleship/client/GameSound.java index 725951b5..4ff3e1ee 100644 --- a/Projekte/battleship/client/src/main/java/pp/battleship/client/GameSound.java +++ b/Projekte/battleship/client/src/main/java/pp/battleship/client/GameSound.java @@ -84,9 +84,7 @@ public void initialize(AppStateManager stateManager, Application app) { * Plays the shell flying sound effect. */ public void shellFly() { - System.out.println("shellFly"); if (isEnabled() && shellFlyingSound != null) { - System.out.println("play shell"); shellFlyingSound.playInstance(); } } diff --git a/Projekte/battleship/client/src/main/java/pp/battleship/client/NetworkDialog.java b/Projekte/battleship/client/src/main/java/pp/battleship/client/NetworkDialog.java index fa7a7d3a..a396f553 100644 --- a/Projekte/battleship/client/src/main/java/pp/battleship/client/NetworkDialog.java +++ b/Projekte/battleship/client/src/main/java/pp/battleship/client/NetworkDialog.java @@ -134,7 +134,7 @@ private Object initNetwork() { private Object initServer() { try { server = new BattleshipServerClient(); - server.run(); + server.run(Integer.parseInt(port.getText())); return null; } catch (Exception e) { diff --git a/Projekte/battleship/client/src/main/java/pp/battleship/client/clienthost/BattleshipServerClient.java b/Projekte/battleship/client/src/main/java/pp/battleship/client/clienthost/BattleshipServerClient.java index 513656e6..f8319016 100644 --- a/Projekte/battleship/client/src/main/java/pp/battleship/client/clienthost/BattleshipServerClient.java +++ b/Projekte/battleship/client/src/main/java/pp/battleship/client/clienthost/BattleshipServerClient.java @@ -85,8 +85,8 @@ public boolean isReady() { /** * Starts the server and continuously processes incoming messages. */ - public void run() { - startServer(); + public void run(int port) { + startServer(port); while (true) processNextMessage(); } @@ -94,10 +94,10 @@ public void run() { /** * Starts the server by creating a network server on the specified port. */ - private void startServer() { + private void startServer(int port) { try { LOGGER.log(Level.INFO, "Starting server..."); //NON-NLS - myServer = Network.createServer(config.getPort()); + myServer = Network.createServer(port); initializeSerializables(); myServer.start(); registerListeners(); diff --git a/Projekte/battleship/model/src/main/java/pp/battleship/game/client/BattleState.java b/Projekte/battleship/model/src/main/java/pp/battleship/game/client/BattleState.java index 83ceb860..d88ab98a 100644 --- a/Projekte/battleship/model/src/main/java/pp/battleship/game/client/BattleState.java +++ b/Projekte/battleship/model/src/main/java/pp/battleship/game/client/BattleState.java @@ -30,7 +30,6 @@ class BattleState extends ClientState { */ public BattleState(ClientGameLogic logic, boolean myTurn) { super(logic); - System.out.println("battle state"); this.myTurn = myTurn; } diff --git a/Projekte/battleship/model/src/main/java/pp/battleship/game/client/ShootingState.java b/Projekte/battleship/model/src/main/java/pp/battleship/game/client/ShootingState.java index f26be169..75312b23 100644 --- a/Projekte/battleship/model/src/main/java/pp/battleship/game/client/ShootingState.java +++ b/Projekte/battleship/model/src/main/java/pp/battleship/game/client/ShootingState.java @@ -27,7 +27,6 @@ public class ShootingState extends ClientState { */ public ShootingState(ClientGameLogic logic, Shell shell, boolean myTurn, EffectMessage msg) { super(logic); - System.out.println("shooting state"); this.msg = msg; this.myTurn = myTurn; this.shell = shell; diff --git a/Projekte/battleship/model/src/main/java/pp/battleship/game/server/ServerGameLogic.java b/Projekte/battleship/model/src/main/java/pp/battleship/game/server/ServerGameLogic.java index d3f4b27d..c193f375 100644 --- a/Projekte/battleship/model/src/main/java/pp/battleship/game/server/ServerGameLogic.java +++ b/Projekte/battleship/model/src/main/java/pp/battleship/game/server/ServerGameLogic.java @@ -167,6 +167,7 @@ public void received(AnimationFinishedMessage msg, int from) { LOGGER.log(Level.ERROR, "animation finished not allowed in {0}", state); } else { + LOGGER.log(Level.DEBUG, "anim received from {0}", getPlayerById(from)); Player player = getPlayerById(from); if (!waitPlayers.add(player)) { LOGGER.log(Level.ERROR, "{0} already sent animation finished", player); //NON-NLS @@ -222,8 +223,11 @@ private boolean checkMap(List ships) { public void received(ShootMessage msg, int from) { if (state != ServerState.BATTLE) LOGGER.log(Level.ERROR, "shoot not allowed in {0}", state); //NON-NLS - else + else{ + setState(ServerState.ANIMATION); shoot(getPlayerById(from), msg.getPosition()); + } + } /** @@ -283,6 +287,5 @@ else if (selectedShip.isDestroyed()) { send(otherPlayer, EffectMessage.hit(false, pos)); } } - setState(ServerState.ANIMATION); } } diff --git a/Projekte/battleship/model/src/main/java/pp/battleship/game/singlemode/Copycat.java b/Projekte/battleship/model/src/main/java/pp/battleship/game/singlemode/Copycat.java index d7f11cbb..c5185f44 100644 --- a/Projekte/battleship/model/src/main/java/pp/battleship/game/singlemode/Copycat.java +++ b/Projekte/battleship/model/src/main/java/pp/battleship/game/singlemode/Copycat.java @@ -66,7 +66,7 @@ public void received(MapMessage msg, int from) { @Override public void received(AnimationFinishedMessage msg, int from) { - + copiedMessage = msg; } /** diff --git a/Projekte/battleship/model/src/main/java/pp/battleship/game/singlemode/RobotClient.java b/Projekte/battleship/model/src/main/java/pp/battleship/game/singlemode/RobotClient.java index d7831a71..405a1d91 100644 --- a/Projekte/battleship/model/src/main/java/pp/battleship/game/singlemode/RobotClient.java +++ b/Projekte/battleship/model/src/main/java/pp/battleship/game/singlemode/RobotClient.java @@ -1,6 +1,7 @@ package pp.battleship.game.singlemode; import pp.battleship.game.client.BattleshipClient; +import pp.battleship.message.client.AnimationFinishedMessage; import pp.battleship.message.client.MapMessage; import pp.battleship.message.client.ShootMessage; import pp.battleship.message.server.EffectMessage; @@ -71,6 +72,7 @@ public void run() { * Makes the RobotClient take a shot by sending a ShootMessage with the target position. */ private void robotShot() { + connection.sendRobotMessage(new ShootMessage(getShotPosition())); } @@ -121,6 +123,7 @@ public void received(StartBattleMessage msg) { @Override public void received(EffectMessage msg) { LOGGER.log(Level.INFO, "Received EffectMessage: {0}", msg); //NON-NLS + connection.sendRobotMessage(new AnimationFinishedMessage()); if (msg.isMyTurn()) shoot(); }