From d472759a1c94dce52bf606a8eef04ba1da31c235 Mon Sep 17 00:00:00 2001 From: Lorenz Hohmann Date: Sat, 15 Jan 2022 15:34:18 +0100 Subject: [PATCH] Implemented logic after ai made move and player made move --- .../de/tims/fleetstorm/gui/GameLogic.java | 44 ++++++++++++------- .../de/tims/fleetstorm/gui/LogicTest.java | 1 - 2 files changed, 28 insertions(+), 17 deletions(-) diff --git a/src/main/java/de/tims/fleetstorm/gui/GameLogic.java b/src/main/java/de/tims/fleetstorm/gui/GameLogic.java index bd98e85..aacf1db 100644 --- a/src/main/java/de/tims/fleetstorm/gui/GameLogic.java +++ b/src/main/java/de/tims/fleetstorm/gui/GameLogic.java @@ -201,11 +201,15 @@ public class GameLogic extends JPanel { int coordX = coords[0]; int coordY = coords[1]; - boolean shotSuccess = enemyMatchfield.getField(coordX, coordY).shoot(); - gui.updateField(playerMove, enemyMatchfield); + Coordinate chosenField = enemyMatchfield.getField(coordX, coordY); + + boolean shotSuccess = chosenField.shoot(); + gui.updateField(enemyMatchfield); + + if (shotSuccess && chosenField.getState() != Coordinate.HIT) { + nextMove(false); + } -// if (!shotSuccess) -// nextMove(); } }); } @@ -257,6 +261,13 @@ public class GameLogic extends JPanel { return enemy5Ship; } + private JLabel getXLabel() { + JLabel x = new JLabel("x"); + x.setForeground(Color.WHITE); + + return x; + } + private int[] getCoordinateFromLabel(JPanel panel) { String panelName = panel.getName(); String[] panelNameSplit = panelName.split(":"); @@ -265,7 +276,7 @@ public class GameLogic extends JPanel { return new int[] { coordX, coordY }; } - private void updateField(boolean playerMove, Matchfield matchfield) { + private void updateField(Matchfield matchfield) { for (JPanel coordinatePanel : this.fields) { int[] coords = this.getCoordinateFromLabel(coordinatePanel); int coordX = coords[0]; @@ -287,7 +298,7 @@ public class GameLogic extends JPanel { break; case Coordinate.HIT: coordinatePanel.setBackground(new Color(91, 58, 41)); - coordinatePanel.add(new JLabel("x")); + coordinatePanel.add(this.getXLabel()); break; } @@ -297,6 +308,7 @@ public class GameLogic extends JPanel { // set game infos if (this.playerMove) { + System.out.println("own update"); if (this.gameState == GameLogic.PREPARATION) { this.getMatchfieldValue().setText("Eigenes"); this.getStateValue().setText("Vorbereiten..."); @@ -305,8 +317,9 @@ public class GameLogic extends JPanel { this.getStateValue().setText("Du bist am Zug"); } } else { + System.out.println("enemy update"); this.getMatchfieldValue().setText("Eigenes"); - this.getStateValue().setText("Dein Gegner ist am Zug"); + this.getStateValue().setText("Gegner am Zug"); } } @@ -328,6 +341,7 @@ public class GameLogic extends JPanel { public void start() { this.gameState = GameLogic.PREPARATION; + this.playerMove = true; // create player matchfield this.matchfield = new Matchfield(matchfieldSize); @@ -348,7 +362,7 @@ public class GameLogic extends JPanel { this.aiLogic.setMatchfield(this.matchfield); // show player own matchfield - gui.updateField(this.playerMove, this.matchfield); + gui.updateField(this.matchfield); try { Thread.sleep(3000); @@ -365,10 +379,10 @@ public class GameLogic extends JPanel { this.playerMove = playerMove; if (this.playerMove) { - gui.updateField(this.playerMove, this.enemyMatchfield); + gui.updateField(this.enemyMatchfield); // waiting for mouse click event.... } else { - gui.updateField(this.playerMove, this.matchfield); + gui.updateField(this.matchfield); try { Thread.sleep(1000); @@ -378,7 +392,9 @@ public class GameLogic extends JPanel { Coordinate aiChosenField = this.aiLogic.chooseField(); aiChosenField.shoot(); - gui.updateField(this.playerMove, this.matchfield); + gui.updateField(this.matchfield); + + boolean aiHasNextMove = aiChosenField.getState() == Coordinate.HIT; try { Thread.sleep(2000); @@ -386,7 +402,7 @@ public class GameLogic extends JPanel { e.printStackTrace(); } -// this.nextMove(); + this.nextMove(aiHasNextMove); } } @@ -398,8 +414,4 @@ public class GameLogic extends JPanel { public boolean isPlayerMove() { return playerMove; } - - public static void setGui(GameLogic gui) { - GameLogic.gui = gui; - } } diff --git a/src/test/java/de/tims/fleetstorm/gui/LogicTest.java b/src/test/java/de/tims/fleetstorm/gui/LogicTest.java index fc6490d..87786d4 100644 --- a/src/test/java/de/tims/fleetstorm/gui/LogicTest.java +++ b/src/test/java/de/tims/fleetstorm/gui/LogicTest.java @@ -11,7 +11,6 @@ class LogicTest { @BeforeEach void setup() { - GameLogic.setGui(new GameLogic(0, 0, 0)); guiLogic.start(); }