Protoyp Würfel eingefügt

This commit is contained in:
Luca Puderbach 2024-11-18 08:14:05 +01:00
parent 20949b641e
commit a33d422547

View File

@ -1,7 +1,10 @@
package pp.monopoly.client.gui; package pp.monopoly.client.gui;
import java.util.Random;
import com.jme3.math.Vector3f; import com.jme3.math.Vector3f;
import com.jme3.scene.Geometry; import com.jme3.scene.Geometry;
import com.simsilica.lemur.Axis;
import com.simsilica.lemur.Button; import com.simsilica.lemur.Button;
import com.simsilica.lemur.Container; import com.simsilica.lemur.Container;
import com.simsilica.lemur.component.SpringGridLayout; import com.simsilica.lemur.component.SpringGridLayout;
@ -17,10 +20,11 @@ public class Toolbar {
private final MonopolyApp app; private final MonopolyApp app;
private final Container toolbarContainer; private final Container toolbarContainer;
private final Geometry cube; // Referenz auf den Würfel 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 final float stepSize = 0.18f; // Schrittgröße pro Bewegung
private int currentPosition = 0; // Aktuelle Position auf dem Spielfeld private int currentPosition = 0; // Aktuelle Position auf dem Spielfeld
private final int positionsPerSide = 10; // Anzahl der Positionen pro Seite 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. * Konstruktor für die Toolbar.
@ -33,7 +37,7 @@ public class Toolbar {
this.cube = cube; this.cube = cube;
// Erstelle die Toolbar // 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 // Setze die Position am unteren Rand und die Breite
toolbarContainer.setLocalTranslation( toolbarContainer.setLocalTranslation(
@ -56,6 +60,7 @@ public class Toolbar {
private void initializeButtons() { private void initializeButtons() {
addButton("Vorwärts", 1); // Bewegung nach vorne addButton("Vorwärts", 1); // Bewegung nach vorne
addButton("Rückwärts", -1); // Bewegung nach hinten addButton("Rückwärts", -1); // Bewegung nach hinten
addDiceRollButton(); // Würfel-Button
} }
/** /**
@ -71,10 +76,29 @@ public class Toolbar {
toolbarContainer.addChild(button); 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. * 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) { private void moveCube(int step) {
currentPosition = (currentPosition + step + 4 * positionsPerSide) % (4 * positionsPerSide); currentPosition = (currentPosition + step + 4 * positionsPerSide) % (4 * positionsPerSide);