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.
    • setExitOnEsc

      @API public static void setExitOnEsc(boolean value)
      Setzt, ob beim Drücken von Escape das Spiel beendet werden soll.
      Parameters:
      value - true, falls ja, sonst false.
    • getFrameSizeInPixels

      @API public static Vector getFrameSizeInPixels()
      Gibt die Fenstergröße in Pixel aus.
      Returns:
      Ein Vector-Objekt, dessen Höhe und Breite mit Fensterhöhe & -breite übereinstimmt.
    • start

      @API public static void start(int width, int height, Scene scene)
      Dies startet das Fenster und beginnt sämtliche internen Prozesse der Engine.
      Parameters:
      width - Die Breite des Zeichenbereichs in Pixel.
      height - Die Höhe des Zeichenbereichs in Pixel.
      scene - Szene, mit der das Spiel gestartet wird, z.B. das Menü.
    • start

      public static void start(Scene scene)
    • getImages

      public static ImagesContainer getImages()
      Stellt den Zugriff auf den Zwischenspeicher für Bild-Resourcen vom Datentyp BufferedImage bereit.
      Returns:
      Ein Zwischenspeicher für Bild-Resourcen vom Datentyp BufferedImage.
    • getSounds

      public static SoundsContainer getSounds()
      Stellt den Zugriff auf den Zwischenspeicher für Audio-Resourcen vom Datentyp Sound bereit.
      Returns:
      Ein Zwischenspeicher für Audio-Resourcen vom Datentyp Sound.
    • convertMousePosition

      @Internal public static Vector convertMousePosition(Scene scene, Point mousePosition)
    • addFrameUpdateListener

      public static FrameUpdateListener addFrameUpdateListener(FrameUpdateListener listener)
      Registiert einen statischen, d. h. globalen Beobachter, der auf Bildaktualisierungen reagiert.
      Parameters:
      listener - Der Beobachter, der auf Bildaktualisierungen reagiert.
      Returns:
      Derselbe Beobachter als als Eingabeparameter angegeben. Kann nützlich sein, wenn der Beobachter als Lambda-Ausdruck angegeben wird. Dieser Ausdruck kann dann mit dem Datentyp FrameUpdateListener einer lokalen Variablen bzw. einem Attribut zugeweisen 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.
    • addKeyListener

      public static void addKeyListener(KeyListener keyListener)
      Fügt einen statisch KeyListener hinzu, d. h. dieser KeyListener gilt global über das ganze Spiel und ist unabhängig von der aktuellen Szene. Der Game.KeyListener kann auf mehrere Arten implementiert werden:
      1. Als normale Klasse:
        
         class MyKeylistener implements KeyListener
         {
             @Override
             public void onKeyDown(KeyEvent e)
             {
                 // Code here
             }
         }
         obj.addKeyListener(new MyKeylistener());
         
      2. Als anonyme Klasse:
        
         obj.addKeyListener(new KeyListener()
         {
             @Override
             public void onKeyDown(KeyEvent e)
             {
                 // Code here
             }
         });
         
      3. Oder als Lambda-Ausdruck:
        
         obj.addKeyListener(e -> {
             // Code here
         });
         
      Parameters:
      keyListener - Ein Objekt der Klasse KeyListener.
    • removeKeyListener

      public static void removeKeyListener(KeyListener keyListener)
      Entfernt einen statischen KeyListener vom Objekt, d. h. einen KeyListener, der global für das ganze Spiele gilt.
      Parameters:
      keyListener - Ein Objekt der Klasse KeyListener.
    • 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.
    • 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:
    • setFrameSize

      @API public static void setFrameSize(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.
    • setFramePosition

      @API public static void setFramePosition(int x, int y)
      Setzt die Fenster-Position auf dem Bildschirm.

      Standard ist mittig.

      Parameters:
      x - X-Position
      y - Y-Position
    • exit

      @API public static void exit()
      Diese Methode beendet das Spiel.
      Das heißt, dass das Fenster geschlossen, alle belegten Ressourcen freigegeben und auch die virtuelle Maschine von Java beendet wird.
    • 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
    • getMousePositionInFrame

      @Internal public static Point getMousePositionInFrame()
    • getMousePositionInCurrentScene

      @API public static Vector getMousePositionInCurrentScene()
      Gibt die Position der Maus in der aktuell angezeigten Scene aus.
      Returns:
      Die Position der Maus in der aktuellen Scene (unter Einbezug von Kamerazoom und -verschiebung).
    • 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:
    • 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:
    • 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 Debugging am eigenen Spiel.
      See Also:
    • getJukebox

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

      @API public static void takeScreenshot(String filename)
      Rendert einen Screenshot des aktuellen Spielfensters und speichert das resultierende Bild in einer Datei.
      Parameters:
      filename - Der Name der Datei, in der der Screenshot gespeichert werden soll.