From a33d4225475ca3fc76e8bd527ea0f6b616a0f2c8 Mon Sep 17 00:00:00 2001 From: Luca Puderbach Date: Mon, 18 Nov 2024 08:14:05 +0100 Subject: [PATCH] =?UTF-8?q?Protoyp=20W=C3=BCrfel=20eingef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/pp/monopoly/client/gui/Toolbar.java | 30 +++++++++++++++++-- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/Projekte/monopoly/client/src/main/java/pp/monopoly/client/gui/Toolbar.java b/Projekte/monopoly/client/src/main/java/pp/monopoly/client/gui/Toolbar.java index c205e80..e0de88c 100644 --- a/Projekte/monopoly/client/src/main/java/pp/monopoly/client/gui/Toolbar.java +++ b/Projekte/monopoly/client/src/main/java/pp/monopoly/client/gui/Toolbar.java @@ -1,7 +1,10 @@ package pp.monopoly.client.gui; +import java.util.Random; + import com.jme3.math.Vector3f; import com.jme3.scene.Geometry; +import com.simsilica.lemur.Axis; import com.simsilica.lemur.Button; import com.simsilica.lemur.Container; import com.simsilica.lemur.component.SpringGridLayout; @@ -17,10 +20,11 @@ public class Toolbar { private final MonopolyApp app; private final Container toolbarContainer; private final Geometry cube; // Referenz auf den Würfel - private final float boardLimit = 0.95f; // Grenzen des Bretts (leicht angepasst) + private final float boardLimit = 0.95f; // Grenzen des Bretts private final float stepSize = 0.18f; // Schrittgröße pro Bewegung private int currentPosition = 0; // Aktuelle Position auf dem Spielfeld private final int positionsPerSide = 10; // Anzahl der Positionen pro Seite + private final Random random = new Random(); // Zufallsgenerator für den Würfelwurf /** * Konstruktor für die Toolbar. @@ -33,7 +37,7 @@ public class Toolbar { this.cube = cube; // Erstelle die Toolbar - toolbarContainer = new Container(new SpringGridLayout()); + toolbarContainer = new Container(new SpringGridLayout(Axis.X, Axis.Y)); // Setze die Position am unteren Rand und die Breite toolbarContainer.setLocalTranslation( @@ -56,6 +60,7 @@ public class Toolbar { private void initializeButtons() { addButton("Vorwärts", 1); // Bewegung nach vorne addButton("Rückwärts", -1); // Bewegung nach hinten + addDiceRollButton(); // Würfel-Button } /** @@ -71,10 +76,29 @@ public class Toolbar { toolbarContainer.addChild(button); } + /** + * Fügt den Würfel-Button hinzu, der die Figur entsprechend der gewürfelten Zahl bewegt. + */ + private void addDiceRollButton() { + Button diceButton = new Button("Würfeln"); + diceButton.setPreferredSize(new Vector3f(150, 50, 0)); // Größe des Buttons + diceButton.addClickCommands(source -> rollDice()); + toolbarContainer.addChild(diceButton); + } + + /** + * Simuliert einen Würfelwurf und bewegt die Figur entsprechend. + */ + private void rollDice() { + int diceRoll = random.nextInt(6) + 1; // Zahl zwischen 1 und 6 + System.out.println("Gewürfelt: " + diceRoll); + moveCube(diceRoll); // Bewege die Figur um die gewürfelte Zahl + } + /** * Bewegt den Würfel basierend auf der aktuellen Position auf dem Brett. * - * @param step Schrittweite (+1 für vorwärts, -1 für rückwärts) + * @param step Schrittweite (+1 für vorwärts, -1 für rückwärts oder andere Werte) */ private void moveCube(int step) { currentPosition = (currentPosition + step + 4 * positionsPerSide) % (4 * positionsPerSide);