From decef526da748eccd380a48b50a347b370b0bc96 Mon Sep 17 00:00:00 2001 From: Joshua Date: Sat, 14 Dec 2024 15:29:45 +0100 Subject: [PATCH] Fixed ship rotation method. Added pulsating Effect for "kontextText" --- src/BoardDisplay.java | 8 +++++--- src/GameBoard.java | 33 ++++++++++++++++++++++++++++++--- 2 files changed, 35 insertions(+), 6 deletions(-) diff --git a/src/BoardDisplay.java b/src/BoardDisplay.java index c20347e..4941f7f 100644 --- a/src/BoardDisplay.java +++ b/src/BoardDisplay.java @@ -14,7 +14,7 @@ public class BoardDisplay extends JPanel { private List ships; private Ship currentShip; private Player player; - private boolean horizontal = true; + private boolean vertical = false; /** * Konstruktor der startLocalGame. @@ -74,7 +74,9 @@ public class BoardDisplay extends JPanel { togglePlacementDirection(); // Ausrichtung ändern } else if (SwingUtilities.isLeftMouseButton(e)) { Point o = new Point(x, y); + currentShip.setHorizontal(vertical); handleFieldClick(o); // Linksklick -> Schiff platzieren + vertical = false; // TODO nur nach auswahl von neuem Modul wieder auf false setzten } } }); @@ -157,8 +159,8 @@ public class BoardDisplay extends JPanel { * Wechselt die Platzierungsrichtung zwischen horizontal und vertikal. */ private void togglePlacementDirection() { - horizontal = !horizontal; - String direction = horizontal ? "horizontal" : "vertikal"; + vertical = !vertical; + String direction = vertical ? "vertikal" : "horizontal"; System.out.println("Platzierungsrichtung geändert zu: " + direction); } diff --git a/src/GameBoard.java b/src/GameBoard.java index e9e65c7..3e90032 100644 --- a/src/GameBoard.java +++ b/src/GameBoard.java @@ -9,7 +9,7 @@ import java.awt.event.MouseAdapter; import java.util.List; -// TODO wenn rechtklick auf board dann schiff rotation ändern UND Readybutton farbe Readybutton kontexttext und Spielernamen anzeigen +// TODO Readybutton farbe Readybutton kontexttext und Spielernamen anzeigen /** * Das GameBoard dient als Panel, in dem das tatsächliche Spiel stattfindet. * Der Benutzer kann hier seine Schiffe platzieren, das Spiel starten etc. @@ -25,8 +25,7 @@ public class GameBoard extends JPanel { // Labels JLabel frameTitle = new JLabel("GameBoard"); - JLabel kontextText = new JLabel("Beispielhafter Kontext-Text"); - //kontextText.setFont(new Font("Roboto", Font.BOLD, 24)); //TODO setFont fixen + JLabel kontextText = new JLabel("Bitte Schiffe setzten"); JButton backButton = new JButton(backButtonIcon); // Eigene ModulButtons @@ -57,6 +56,31 @@ public class GameBoard extends JPanel { } } + // Timer für pulsierenden Effekt + Timer timer = new Timer(10, new ActionListener() { + private int grayValue = 50; // Start-Grauwert (0 = Schwarz, 255 = Weiß) + private boolean increasing = false; // Richtung des Pulsierens + + @Override + public void actionPerformed(ActionEvent e) { + // Grauwert aktualisieren + kontextText.setForeground(new Color(grayValue, grayValue, grayValue)); + + // Grauwert erhöhen oder verringern + if (increasing) { + grayValue++; + if (grayValue >= 90) { + increasing = false; // Richtung ändern + } + } else { + grayValue--; + if (grayValue <= 0) { + increasing = true; // Richtung ändern + } + } + } + }); + /** * TODO Funktion beschreiben etc. * @param frame @@ -78,6 +102,7 @@ public class GameBoard extends JPanel { JPanel headerPanel = new JPanel(); headerPanel.setLayout(new BorderLayout()); headerPanel.add(kontextText, BorderLayout.WEST); + kontextText.setFont(new Font("Roboto", Font.BOLD, 30)); //TODO setFont fixen headerPanel.add(backButton, BorderLayout.EAST); JPanel leftButtonsPanel = new JPanel(); @@ -147,5 +172,7 @@ public class GameBoard extends JPanel { add(rightButtonsPanel, BorderLayout.EAST); add(headerPanel, BorderLayout.NORTH); add(centerPanel, BorderLayout.CENTER); + + timer.start(); } }