From f51dd69dea61e519d058d048ad0b09a78dc77d2b Mon Sep 17 00:00:00 2001 From: Lorenz Hohmann Date: Sat, 15 Jan 2022 15:08:11 +0100 Subject: [PATCH] Added shoot() function to panel click for general game loop --- .../de/tims/fleetstorm/gui/GameLogic.java | 53 ++++++++++++++----- 1 file changed, 41 insertions(+), 12 deletions(-) diff --git a/src/main/java/de/tims/fleetstorm/gui/GameLogic.java b/src/main/java/de/tims/fleetstorm/gui/GameLogic.java index 9225309..293e2b2 100644 --- a/src/main/java/de/tims/fleetstorm/gui/GameLogic.java +++ b/src/main/java/de/tims/fleetstorm/gui/GameLogic.java @@ -33,7 +33,7 @@ public class GameLogic extends JPanel { // GUI stuff private ArrayList fields; private JLabel matchfieldValue; - private JLabel moveValue; + private JLabel stateValue; private JLabel own2Ship; private JLabel own3Ship; private JLabel own4Ship; @@ -172,11 +172,11 @@ public class GameLogic extends JPanel { matchfieldValue = new JLabel("-"); gameInfoContentPanel.add(matchfieldValue); - JLabel moveLabel = new JLabel("Am Zug"); - gameInfoContentPanel.add(moveLabel); + JLabel stateLabel = new JLabel("Status"); + gameInfoContentPanel.add(stateLabel); - moveValue = new JLabel("-"); - gameInfoContentPanel.add(moveValue); + stateValue = new JLabel("-"); + gameInfoContentPanel.add(stateValue); for (int x = 0; x < 10; x++) { for (int y = 0; y < 10; y++) { @@ -201,7 +201,11 @@ public class GameLogic extends JPanel { int coordX = coords[0]; int coordY = coords[1]; - // TODO add shoot function + boolean shotSuccess = enemyMatchfield.getField(coordX, coordY).shoot(); + gui.updateField(playerMove, enemyMatchfield); + + if (!shotSuccess) + nextMove(); } }); } @@ -217,8 +221,8 @@ public class GameLogic extends JPanel { return matchfieldValue; } - public JLabel getMoveValue() { - return moveValue; + public JLabel getStateValue() { + return stateValue; } public JLabel getOwn2Ship() { @@ -282,7 +286,7 @@ public class GameLogic extends JPanel { coordinatePanel.setBackground(new Color(0, 94, 184)); break; case Coordinate.HIT: - coordinatePanel.setBackground(new Color(0, 94, 184)); + coordinatePanel.setBackground(new Color(91, 58, 41)); coordinatePanel.add(new JLabel("x")); break; } @@ -293,11 +297,16 @@ public class GameLogic extends JPanel { // set game infos if (this.playerMove) { - this.getMatchfieldValue().setText("Gegner"); - this.getMoveValue().setText("Du"); + if (this.gameState == GameLogic.PREPARATION) { + this.getMatchfieldValue().setText("Eigenes"); + this.getStateValue().setText("Vorbereiten..."); + } else { + this.getMatchfieldValue().setText("Gegner"); + this.getStateValue().setText("Du bist am Zug"); + } } else { this.getMatchfieldValue().setText("Eigenes"); - this.getMoveValue().setText("Gegner"); + this.getStateValue().setText("Dein Gegner ist am Zug"); } } @@ -349,6 +358,7 @@ public class GameLogic extends JPanel { } // enter game loop + this.gameState = GameLogic.RUNNING; this.nextMove(); } @@ -357,8 +367,27 @@ public class GameLogic extends JPanel { if (this.playerMove) { gui.updateField(this.playerMove, this.enemyMatchfield); + // waiting for mouse click event.... } else { gui.updateField(this.playerMove, this.matchfield); + + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + Coordinate aiChosenField = this.aiLogic.chooseField(); + aiChosenField.shoot(); + gui.updateField(this.playerMove, this.matchfield); + + try { + Thread.sleep(2000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + this.nextMove(); } }