java.lang.Object
de.pirckheimer_gymnasium.engine_pi.Game

public final class Game extends Object
Diese Klasse gibt Zugriff auf das aktuelle Spiel.
Author:
Michael Andonie, Niklas Keller
  • Constructor Details

    • Game

      public Game()
  • Method Details

    • setTitle

      @API public static void setTitle(String title)
      Setzt den Titel des Spielfensters.
      Parameters:
      title - Titel des Spielfensters.
    • start

      @API public static Scene start(int width, int height, Scene scene)
      Startet das Spiel in einem Fenster mit der angegebenen Breite und Höhe.
      Parameters:
      width - Die Breite des Zeichenbereichs in Pixel.
      height - Die Höhe des Zeichenbereichs in Pixel.
      scene - Die Szene, mit der das Spiel gestartet wird.
    • start

      @API public static Scene start(Scene scene)
      Startet das Spiel in einem Fenster mit den Abmessungen 800x600 Pixel.
      Parameters:
      scene - Die Szene, mit der das Spiel gestartet wird.
    • start

      @API public static Scene start()
      Startet das Spiel in einem Fenster mit den Abmessungen 800x600 Pixel und erzeugt eine neue leere Szene.
      Returns:
      Die erzeugte Szene, mit der das Spiel gestartet wurde.
    • transitionToScene

      @API public static void transitionToScene(Scene scene)
      Wechselt die aktuelle Szene.
      Parameters:
      scene - Die Szene, zu der gewechselt werden soll. Wird null übergeben, wird eine neue Szene erstellt.
    • getDefaultControl

      public static DefaultListener getDefaultControl()
      Gibt die momentan registrierten, grundlegenden Maus- und Tastatur-Steuermöglichkeiten zurück.
      Returns:
      Die registrierten, grundlegenden Maus- und Tastatur-Steuermöglichkeiten.
    • setDefaultControl

      public static void setDefaultControl(DefaultListener control)
      Registriert grundlegende Maus- und Tastatur-Steuermöglichkeiten.
      Parameters:
      control - Die grundlegenden Maus- und Tastatur-Steuermöglichkeiten.
    • removeDefaultControl

      public static void removeDefaultControl()
      Meldet die grundlegenden Maus- und Tastatur-Steuermöglichkeiten ab.
      See Also:
    • addFrameUpdateListener

      public static FrameUpdateListener addFrameUpdateListener(FrameUpdateListener listener)
      Registriert einen statischen, d. h. globalen Beobachter, der auf Bildaktualisierungen reagiert.
      Parameters:
      listener - Der Beobachter, der auf Bildaktualisierungen reagiert.
      Returns:
      Der Rückgabewert ist mit dem Eingabeparameter identisch. Dieser Wert kann dann mit dem Datentyp FrameUpdateListener einer lokalen Variablen bzw. einem Attribut zugewiesen werden und später zum Abmelden verwendet werden.
    • removeFrameUpdateListener

      public static void removeFrameUpdateListener(FrameUpdateListener listener)
      Meldet einen statischen, d. h. globalen Beobachter ab, der auf Bildaktualisierungen reagiert.
      Parameters:
      listener - Der Beobachter, der auf Bildaktualisierungen reagiert.
    • addKeyStrokeListener

      public static void addKeyStrokeListener(KeyStrokeListener listener)
      Fügt einen statisch KeyStrokeListener hinzu, d. h. dieser KeyStrokeListener gilt global über das ganze Spiel und ist unabhängig von der aktuellen Szene.

      Der KeyStrokeListener kann auf mehrere Arten implementiert werden:

      1. Als normale Klasse:
        
         class MyKeyStrokelistener implements KeyStrokeListener
         {
             @Override
             public void onKeyDown(KeyEvent e)
             {
                 // Code here
             }
         }
         obj.addKeyStrokeListener(new MyKeyStrokelistener());
         
      2. Als anonyme Klasse:
        
         obj.addKeyStrokeListener(new KeyStrokeListener()
         {
             @Override
             public void onKeyDown(KeyEvent e)
             {
                 // Code here
             }
         });
         
      3. Oder als Lambda-Ausdruck:
        
         obj.addKeyStrokeListener(e -> {
             // Code here
         });
         
      Parameters:
      listener - Ein Objekt der Klasse KeyStrokeListener.
      See Also:
    • removeKeyStrokeListener

      public static void removeKeyStrokeListener(KeyStrokeListener listener)
      Entfernt einen statischen KeyStrokeListener vom Objekt, d. h. einen KeyStrokeListener, der global für das ganze Spiel gilt.
      Parameters:
      listener - Ein Objekt der Klasse KeyStrokeListener.
      See Also:
    • addMouseClickListener

      public static void addMouseClickListener(MouseClickListener listener)
    • removeMouseClickListener

      public static void removeMouseClickListener(MouseClickListener listener)
    • addMouseScrollListener

      public static void addMouseScrollListener(MouseScrollListener listener)
    • removeMouseScrollListener

      public static void removeMouseScrollListener(MouseScrollListener listener)
    • addSceneLaunchListener

      public static void addSceneLaunchListener(SceneLaunchListener listener)
    • removeSceneLaunchListener

      public static void removeSceneLaunchListener(SceneLaunchListener listener)
    • getActiveScene

      @API public static Scene getActiveScene()
      Gibt die gerade aktive Szene an.
      Returns:
      Die gerade aktive Szene. Wurde das Spiel noch nicht gestartet, ist die Rückgabe null.
      See Also:
    • isKeyPressed

      @API public static boolean isKeyPressed(int keyCode)
      Gibt an, ob eine bestimmte Taste derzeit heruntergedrückt ist.
      Parameters:
      keyCode - Die zu testende Taste als Key-Code (also z.B. KeyEvent.VK_D).
      Returns:
      true, wenn die zu testende Taste gerade heruntergedrückt ist, sonst false.
      See Also:
    • isRunning

      @API public static boolean isRunning()
      Gibt an, ob gerade die Engine läuft. Die Engine läuft, sobald es ein sichtbares Fenster gibt. Dieses läuft, sobald start(int, int, Scene) ausgeführt wurde.
      Returns:
      true, wenn das Spiel läuft, sonst false.
      See Also:
    • setWindowSize

      @API public static void setWindowSize(int width, int height)
      Setzt die Größe des Engine-Fensters.
      Parameters:
      width - Die neue Breite des Engine-Fensters in Pixel.
      height - Die neue Höhe des Engine-Fensters in Pixel.
      See Also:
    • getWindowSize

      @API public static Vector getWindowSize()
      Gibt die Fenstergröße in Pixel aus.
      Returns:
      Ein Vektor-Objekt, dessen Höhe und Breite mit der Fensterhöhe und -breite übereinstimmt.
      See Also:
    • setWindowPosition

      @API public static void setWindowPosition(int x, int y)
      Setzt das Spielfenster an eine neue Position.

      Standardmäßig ist das Fenster mittig positioniert. Die Parameter x und y beziehen sich auf die linke obere Ecke der neuen Fenster-Position.

      Parameters:
      x - Die x-Koordinate der linken oberen Ecke des Fensters in Pixel.
      y - Die y-Koordinate der linken oberen Ecke des Fensters in Pixel.
      See Also:
    • exit

      @API public static void exit()
      Beendet das Spiel.

      Das Fenster wird geschlossen, alle belegten Ressourcen werden freigegeben und die virtuelle Maschine wird beendet.

    • showMessage

      @API public static void showMessage(String message, String title)
      Gibt eine Nachricht in einem modalen Dialogfenster aus. Der Dialog ist über JOptionPane implementiert.
      Parameters:
      message - Der Inhalt der Botschaft im Dialogfenster.
      title - Der Titel des Dialogfensters.
    • requestStringInput

      @API public static String requestStringInput(String message, String title)
      Öffnet ein modales Dialogfenster, in dem der Nutzer zur Eingabe von Text in einer Zeile aufgerufen wird. Der Dialog ist über JOptionPane implementiert.
      Parameters:
      message - Der Inhalt der Botschaft im Dialogfenster.
      title - Der Titel des Dialogfensters.
      Returns:
      Die Eingabe des Nutzers. Ist null, wenn der Nutzer den Dialog abgebrochen hat.
    • requestYesNo

      @API public static boolean requestYesNo(String message, String title)
      Öffnet ein modales Dialogfenster mit Ja/Nein-Buttons. Der Dialog ist über JOptionPane implementiert.
      Parameters:
      message - Der Inhalt der Botschaft im Dialogfenster.
      title - Der Titel des Dialogfensters.
      Returns:
      Die Eingabe des Nutzers:
      • Ja → true
      • Nein → false
      • Abbruch (= Dialog manuell schließen) → false
    • requestOkCancel

      @API public static boolean requestOkCancel(String message, String title)
      Öffnet ein modales Dialogfenster mit OK/Abbrechen-Buttons. Der Dialog ist über JOptionPane implementiert.
      Parameters:
      message - Der Inhalt der Botschaft im Dialogfenster.
      title - Der Titel des Dialogfensters.
      Returns:
      Die Eingabe des Nutzers:
      • OK → true
      • Abbrechen → false
      • Abbruch (= Dialog manuell schließen) → false
    • convertMousePosition

      @Internal public static Vector convertMousePosition(Scene scene, Point mousePosition)
      Finde die Position des Mausklicks auf der Zeichenebene. Die Position wird relativ zum Ursprung des RenderPanel-Canvas angegeben. Die Mausklick-Position muss mit dem Zoom-Wert verrechnet werden.
    • getMousePositionInFrame

      @Internal public static Point getMousePositionInFrame()
    • getMousePosition

      @API public static Vector getMousePosition()
      Gibt die Position der Maus in der aktuellen Szene als Vektor in Meter relativ zum Koordinatensystem zurück.

      Der Positions-Vektor ist in der Einheit Meter angegeben und bezieht sich auf einen Punkt des zu Grunde liegenden Koordinatensystems.

      Returns:
      Die Position der Maus in der aktuellen Szene als Vektor in Meter.
      See Also:
    • setDebug

      @API public static void setDebug(boolean value)
      Setzt, ob die Engine im Debug-Modus ausgeführt werden soll.
      Parameters:
      value - ist dieser Wert true, wird die Engine ab sofort im Debug-Modus ausgeführt. Hierdurch werden mehr Informationen beim Ausführen der Engine angegeben, zum Beispiel ein grafisches Raster und mehr Logging-Informationen. Dies ist hilfreich für das Debugging des eigenen Spiels.
      See Also:
    • isDebug

      @API public static boolean isDebug()
      Gibt an, ob die Engine gerade im Debug-Modus ausgeführt wird.
      Returns:
      ist dieser Wert true, wird die Engine gerade im Debug-Modus ausgeführt. Sonst ist der Wert false.
      See Also:
    • toggleDebug

      public static void toggleDebug()
      Schaltet je nach Zustand den Debug-Modus an oder aus. Ist der Debug-Modus an, wird er ausgeschaltet, ist er aus so wird er angeschaltet.
    • setRenderActors

      @API public static void setRenderActors(boolean value)
      Setzt, ob die Figuren gezeichnet werden sollen.
      See Also:
    • getRenderActors

      @API public static boolean getRenderActors()
      Gibt an, ob die Figuren gezeichnet werden sollen.
      See Also:
    • toggleRenderActors

      public static void toggleRenderActors()
      See Also:
    • isVerbose

      @API public static boolean isVerbose()
      Gibt an, ob die laufende Instanz der Engine gerade verbose Output gibt.
      Returns:
      ist dieser Wert true, werden extrem ausführliche Logging-Informationen gespeichert. Sonst ist der Wert false.
      See Also:
    • setVerbose

      @API public static void setVerbose(boolean value)
      Setzt, ob die aktuell laufende Instanz der Engine verbose Output geben soll.
      Parameters:
      value - ist dieser Wert true, so wird ein äußerst ausführliches Log über die Funktionalität der Engine geführt. Dies ist hauptsächlich für das Debugging an der Engine selbst notwendig.
      See Also:
    • getJukebox

      public static Jukebox getJukebox()
      Gibt die statische, d. h. globale Instanz der Jukebox zurück, die Geräusche und Musik abspielen kann.
      Returns:
      Eine Instanz der Jukebox.
    • takeScreenshot

      @API public static void takeScreenshot()
      Speichert ein Bildschirmfoto des aktuellen Spielfensters in den Ordner ~/engine-pi.