From f97cbd778d40319c48561e8509d719183d9b5a01 Mon Sep 17 00:00:00 2001 From: Luca Puderbach Date: Mon, 18 Nov 2024 09:09:05 +0100 Subject: [PATCH] =?UTF-8?q?Hintergrund=20+=20Felder=20ID=20hinzugef=C3=BCg?= =?UTF-8?q?t?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pp/monopoly/client/gui/TestWorld.java | 80 +++++++------------ .../java/pp/monopoly/client/gui/Toolbar.java | 30 ++++++- 2 files changed, 60 insertions(+), 50 deletions(-) diff --git a/Projekte/monopoly/client/src/main/java/pp/monopoly/client/gui/TestWorld.java b/Projekte/monopoly/client/src/main/java/pp/monopoly/client/gui/TestWorld.java index f08c9e2..50a2a23 100644 --- a/Projekte/monopoly/client/src/main/java/pp/monopoly/client/gui/TestWorld.java +++ b/Projekte/monopoly/client/src/main/java/pp/monopoly/client/gui/TestWorld.java @@ -1,7 +1,5 @@ package pp.monopoly.client.gui; -import com.jme3.font.BitmapFont; -import com.jme3.font.BitmapText; import com.jme3.material.Material; import com.jme3.math.ColorRGBA; import com.jme3.math.Vector3f; @@ -12,14 +10,14 @@ import com.jme3.texture.Texture; import pp.monopoly.client.MonopolyApp; /** - * TestWorld zeigt eine einfache Szene mit einem texturierten Quadrat und einem Würfel. + * TestWorld zeigt eine einfache Szene mit einem texturierten Quadrat. * Die Kamera wird durch den CameraController gesteuert. */ public class TestWorld { private final MonopolyApp app; private CameraController cameraController; // Steuert die Kamera - private Toolbar toolbar; // Toolbar-Instanz + private Geometry cube; // Spielfigur /** * Konstruktor für TestWorld. @@ -37,18 +35,21 @@ public class TestWorld { app.getGuiNode().detachAllChildren(); // Entferne GUI app.getRootNode().detachAllChildren(); // Entferne andere Szenenobjekte + setSkyColor(); // Setze den Himmel auf hellblau createBoard(); // Erstelle das Spielfeld - Geometry cube = createCube(); // Erstelle den Würfel und speichere ihn - toolbar = new Toolbar(app, cube); // Erstelle die Toolbar und übergebe den Würfel + createCube(); // Füge den Würfel hinzu - // Übergib die Kamerasteuerung an CameraController + // Erstelle den CameraController cameraController = new CameraController( - app.getCamera(), // Die Kamera der App - Vector3f.ZERO, // Fokus auf die Mitte des Spielfelds - 3, // Radius des Kreises - 2, // Höhe der Kamera - 0.05f // Geschwindigkeit der Bewegung + app.getCamera(), // Die Kamera der App + Vector3f.ZERO, // Fokus auf die Mitte des Spielfelds + 5, // Radius des Kreises + 3, // Höhe der Kamera + 0.5f // Geschwindigkeit der Bewegung ); + + // Füge die Toolbar hinzu + new Toolbar(app, cube); } /** @@ -62,6 +63,13 @@ public class TestWorld { } } + /** + * Setzt die Hintergrundfarbe der Szene auf hellblau. + */ + private void setSkyColor() { + app.getViewPort().setBackgroundColor(new ColorRGBA(0.5f, 0.7f, 1.0f, 1.0f)); // Hellblauer Himmel + } + /** * Erstelle das Spielfeld. */ @@ -80,46 +88,20 @@ public class TestWorld { } /** - * Füge einen kleinen blauen 3D-Würfel hinzu und zeige seine Koordinaten an. + * Erstellt den Würfel (Spielfigur) in der Szene. */ - private Geometry createCube() { - // Erstelle einen kleinen 3D-Würfel - Box cube = new Box(0.04f, 0.04f, 0.04f); // Sehr kleine Kantenlänge - Geometry cubeGeom = new Geometry("PlayerPiece", cube); - - // Erstelle ein Material mit einer blauen Farbe - Material cubeMat = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md"); - cubeMat.setColor("Color", ColorRGBA.Blue); // Blaue Farbe - cubeGeom.setMaterial(cubeMat); - - // Positioniere den Würfel - cubeGeom.setLocalTranslation(0.9f, 0.01f, -0.9f); - - // Füge den Würfel zur Szene hinzu - app.getRootNode().attachChild(cubeGeom); - - return cubeGeom; // Rückgabe des Würfels - } + private void createCube() { + Box box = new Box(0.05f, 0.05f, 0.05f); // Kleinere Größe für Spielfigur + cube = new Geometry("Cube", box); - /** - * Zeige die Koordinaten des Würfels im GUI an. - * - * @param position Die Position des Würfels - */ - private void displayCubeCoordinates(Vector3f position) { - // Lade die Schriftart - BitmapFont font = app.getAssetManager().loadFont("Interface/Fonts/Default.fnt"); - BitmapText coordinatesText = new BitmapText(font); + // Setze das Material für den Würfel + Material mat = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md"); + mat.setColor("Color", ColorRGBA.Blue); // Blau gefärbter Würfel + cube.setMaterial(mat); - // Setze den Text mit den Koordinaten - coordinatesText.setText(String.format("Würfel Koordinaten: X=%.2f, Y=%.2f, Z=%.2f", - position.x, position.y, position.z)); + // Setze den Startpunkt des Würfels + cube.setLocalTranslation(0.8999999f, 0.1f, -0.9f); - // Positioniere den Text auf dem Bildschirm - coordinatesText.setLocalTranslation(10, app.getCamera().getHeight() - 10, 0); // X, Y (oben links) - coordinatesText.setSize(font.getCharSet().getRenderedSize() * 1.5f); // Schriftgröße - - // Füge den Text zum GUI-Node hinzu - app.getGuiNode().attachChild(coordinatesText); + app.getRootNode().attachChild(cube); } } 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 e0de88c..5a9a3f0 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 @@ -2,6 +2,7 @@ package pp.monopoly.client.gui; import java.util.Random; +import com.jme3.font.BitmapText; import com.jme3.math.Vector3f; import com.jme3.scene.Geometry; import com.simsilica.lemur.Axis; @@ -20,6 +21,7 @@ public class Toolbar { private final MonopolyApp app; private final Container toolbarContainer; private final Geometry cube; // Referenz auf den Würfel + private final BitmapText positionText; // Anzeige für die aktuelle Position 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 @@ -52,6 +54,10 @@ public class Toolbar { // Füge die Toolbar zur GUI hinzu app.getGuiNode().attachChild(toolbarContainer); + + // Erstelle die Position-Anzeige + positionText = createPositionDisplay(); + updatePositionDisplay(); // Initialisiere die Anzeige mit der Startposition } /** @@ -104,7 +110,8 @@ public class Toolbar { currentPosition = (currentPosition + step + 4 * positionsPerSide) % (4 * positionsPerSide); Vector3f newPosition = calculatePosition(currentPosition); cube.setLocalTranslation(newPosition); - System.out.println("Würfelposition: " + newPosition); + updatePositionDisplay(); // Aktualisiere die Positionsanzeige + System.out.println("Würfelposition: " + newPosition + " (Feld-ID: " + currentPosition + ")"); } /** @@ -131,10 +138,31 @@ public class Toolbar { } } + /** + * Erstellt die Anzeige für die aktuelle Position. + * + * @return Das BitmapText-Objekt für die Anzeige + */ + private BitmapText createPositionDisplay() { + BitmapText text = new BitmapText(app.getAssetManager().loadFont("Interface/Fonts/Default.fnt"), false); + text.setSize(20); // Schriftgröße + text.setLocalTranslation(10, app.getCamera().getHeight() - 10, 0); // Oben links + app.getGuiNode().attachChild(text); + return text; + } + + /** + * Aktualisiert die Anzeige für die aktuelle Position. + */ + private void updatePositionDisplay() { + positionText.setText("Feld-ID: " + currentPosition); + } + /** * Entfernt die Toolbar. */ public void remove() { app.getGuiNode().detachChild(toolbarContainer); + app.getGuiNode().detachChild(positionText); } }