Class Controller
- Direct Known Subclasses:
Game
Diese Klasse ist die Hauptklasse der Engine und dient nicht nur zur Steuerung des Spiels. Über statische Attribute kann auch auf die Konfiguration und die verschiedenen Ressourcen zugegriffen werden.
Die Klasse hat ausschließlich statische Attribute und Methoden.
Die Klassen Game und Controller sind identisch.
Controller ist der neutralere Name und eignet sich besser für
Projekte, die kein Spiel darstellen (z.B. Projekte zur
Algorithmenvisualisierung oder Physik-Simulation).
- Since:
- 0.42.0
- Author:
- Michael Andonie, Niklas Keller, Josef Friedrich
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final ColorContainerEin Speicher für Farben des DatentypsColor.static final ColorSchemeContainerVerwaltet eine Sammlung von Farbschemata und ermöglicht deren Verwaltung und Abruf anhand von Namen.static final ConfigurationBietet Zugriff auf das Konfigurationsobjekt der Engine.static final DialogLauncherÖffnet verschiedene Dialoge.static final FontContainerEin Speicher für Schriftarten des DatentypsFont.static final ImageContainerEin Speicher für Bilder des DatentypsBufferedImage.static final SoundContainerEin Speicher für Klänge des DatentypsSound. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedDer geschützte Konstruktor verhindert, dass Instanzen von dieser Klasse gemacht werden. -
Method Summary
Modifier and TypeMethodDescriptionstatic FrameUpdateListeneraddFrameUpdateListener(FrameUpdateListener listener) Registriert einen statischen, d. h. globalen Beobachter, der auf Bildaktualisierungen reagiert.static voidaddKeyStrokeListener(KeyStrokeListener listener) Fügt einen statischKeyStrokeListenerhinzu, d. h. dieser KeyStrokeListener gilt global über das ganze Spiel und ist unabhängig von der aktuellen Szene.static voidaddMouseClickListener(MouseClickListener listener) static voidaddMouseScrollListener(MouseScrollListener listener) static voidaddSceneLaunchListener(SceneLaunchListener listener) static voiddebug()Aktiviert den Entwicklungsmodus.static voiddebug(boolean value) Setzt, ob die Engine im Debug-Modus ausgeführt werden soll.static DefaultListenerGibt die momentan registrierten, grundlegenden Maus- und Tastatur-Steuermöglichkeiten zurück.static voiddefaultControl(DefaultListener control) Registriert grundlegende Maus- und Tastatur-Steuermöglichkeiten.static voidexit()Beendet das Spiel.static voidinstantMode(boolean instantMode) Aktiviert oder deaktiviert den Instant-Modus.static booleanisDebug()Gibt an, ob die Engine gerade im Debug-Modus ausgeführt wird.static booleanisKeyPressed(int keyCode) Gibt an, ob eine bestimmte Taste derzeit gedrückt ist.static booleanGibt an, ob die Engine gerade läuft.static voidstatic VectorGibt die Position der Maus in der aktuellen Szene als Vektor in Meter relativ zum Koordinatensystem zurück.static voidSchaltet die Bildschirmaufnahme (in Form von Einzelbildern) ein oder aus.static voidrecordScreen(double duration) static voidMeldet die grundlegenden Maus- und Tastatur-Steuermöglichkeiten ab.static voidremoveFrameUpdateListener(FrameUpdateListener listener) Meldet einen statischen, d. h. globalen Beobachter ab, der auf Bildaktualisierungen reagiert.static voidremoveKeyStrokeListener(KeyStrokeListener listener) Entfernt einen statischenKeyStrokeListenervom Objekt, d. h.static voidremoveMouseClickListener(MouseClickListener listener) static voidremoveMouseScrollListener(MouseScrollListener listener) static voidremoveSceneLaunchListener(SceneLaunchListener listener) static RenderPanelGibt die Zeichenfläche, in der alle Figuren eingezeichnet werden, zurück.static Scenescene()Gibt die gerade aktive Szene zurück.static Scenestart()Startet das Spiel in einem Fenster mit den Standard-Abmessungen (800x600Pixel falls nicht anderweitig konfiguriert) und der Begrüßungsanimation.static SceneStartet das Spiel in einem Fenster mit den Standard-Abmessungen (800x600Pixel falls nicht anderweitig konfiguriert).static SceneStartet das Spiel in einem Fenster mit den Standard-Abmessungen (800x600Pixel falls nicht anderweitig konfiguriert).static SceneStartet das Spiel in einem Fenster mit der angegebenen Breite, Höhe und Pixelvervielfältigung.static SceneGibt die gerade aktive Szene zurück und startet diese Szene, falls sie noch nicht gestartet wurde.static SceneWenn das Spiel noch nicht läuft, wird das Spiel gestartet, ansonsten wird zur gegeben Szene gewechselt.static voidSpeichert ein Bildschirmfoto des aktuellen Spielfensters in den Ordner~/engine-pi.static voidSetzt den Titel des Spielfensters.static voidSchaltet je nach Zustand den Debug-Modus an oder aus.static voidtransitionToScene(Scene scene) Wechselt die aktuelle Szene.static Framewindow()Gibt das Spielfenster zurück.static voidwindowDimension(int windowWidth, int windowHeight) Setzt die Abmessung, also die Breite und die Höhe, des Fensters in Pixel.static voidwindowPosition(int x, int y) Setzt das Spielfenster an eine neue Position.static voidwindowPosition(Direction direction) Setzt das Spielfenster an eine neue Position.static VectorGibt die Fenstergröße in Pixel aus.static voidwindowSize(int width, int height) Setzt die Größe des Engine-Fensters.
-
Field Details
-
config
Bietet Zugriff auf das Konfigurationsobjekt der Engine.Dieses statische Attribut kann über einen statischen Import eingebunden werden:
import static pi.Controller.config;- Since:
- 0.42.0
-
colors
Ein Speicher für Farben des DatentypsColor.Dieses statische Attribut kann über einen statischen Import eingebunden werden:
import static pi.Controller.colors;- Since:
- 0.42.0
-
colorScheme
Verwaltet eine Sammlung von Farbschemata und ermöglicht deren Verwaltung und Abruf anhand von Namen.Dieses statische Attribut kann über einen statischen Import eingebunden werden:
import static pi.Controller.colorScheme;- Since:
- 0.42.0
-
fonts
Ein Speicher für Schriftarten des DatentypsFont.Dieses statische Attribut kann über einen statischen Import eingebunden werden:
import static pi.Controller.fonts;- Since:
- 0.42.0
-
images
Ein Speicher für Bilder des DatentypsBufferedImage.Dieses statische Attribut kann über einen statischen Import eingebunden werden:
import static pi.Controller.images;- Since:
- 0.42.0
-
sounds
Ein Speicher für Klänge des DatentypsSound.Dieses statische Attribut kann über einen statischen Import eingebunden werden:
import static pi.Controller.sounds;- Since:
- 0.42.0
-
dialog
Öffnet verschiedene Dialoge.
-
-
Constructor Details
-
Controller
protected Controller()Der geschützte Konstruktor verhindert, dass Instanzen von dieser Klasse gemacht werden. Die Klassen, hat ausschließlich statischen Attributen und Methoden.- Throws:
UnsupportedOperationException
-
-
Method Details
-
title
Setzt den Titel des Spielfensters.- Parameters:
title- Titel des Spielfensters.
-
start
Startet das Spiel in einem Fenster mit der angegebenen Breite, Höhe und Pixelvervielfältigung.- Parameters:
scene- Die Szene, mit der das Spiel gestartet wird.width- Die Breite des Zeichenbereichs in Pixel.height- Die Höhe des Zeichenbereichs in Pixel.- Returns:
- Die Szene, mit der das Spiel gestartet wurde.
-
start
Startet das Spiel in einem Fenster mit den Standard-Abmessungen (800x600Pixel falls nicht anderweitig konfiguriert). Es wird automatische eine Szene erzeugt und diese zur weiteren Verwendung an eine Lambda-Funktion übergeben.Controller.start((scene) -> { Line line = new Line(1, 1, 4, 5); line.setColor("grün"); scene.add(line); });- Parameters:
sceneConsumer- Eine Lamda-Funktion, die als Eingabe-Parameter die erzeugte Szene erhält.- Returns:
- Die Szene, mit der das Spiel gestartet wurde.
-
start
Startet das Spiel in einem Fenster mit den Standard-Abmessungen (800x600Pixel falls nicht anderweitig konfiguriert).- Parameters:
scene- Die Szene, mit der das Spiel gestartet wird.- Returns:
- Die Szene, mit der das Spiel gestartet wurde.
-
start
Startet das Spiel in einem Fenster mit den Standard-Abmessungen (800x600Pixel falls nicht anderweitig konfiguriert) und der Begrüßungsanimation.- Returns:
- Die erzeugte Szene, mit der das Spiel gestartet wurde.
- See Also:
-
MainAnimation
-
startSafe
Wenn das Spiel noch nicht läuft, wird das Spiel gestartet, ansonsten wird zur gegeben Szene gewechselt.- Since:
- 0.40.0
-
transitionToScene
Wechselt die aktuelle Szene.- Parameters:
scene- Die Szene, zu der gewechselt werden soll. Wirdnullübergeben, wird eine neue Szene erstellt.
-
defaultControl
Gibt die momentan registrierten, grundlegenden Maus- und Tastatur-Steuermöglichkeiten zurück.- Returns:
- Die registrierten, grundlegenden Maus- und Tastatur-Steuermöglichkeiten.
-
defaultControl
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. -
addFrameUpdateListener
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
FrameUpdateListenereiner lokalen Variablen bzw. einem Attribut zugewiesen werden und später zum Abmelden verwendet werden.
-
removeFrameUpdateListener
Meldet einen statischen, d. h. globalen Beobachter ab, der auf Bildaktualisierungen reagiert.- Parameters:
listener- Der Beobachter, der auf Bildaktualisierungen reagiert.
-
addKeyStrokeListener
Fügt einen statischKeyStrokeListenerhinzu, d. h. dieser KeyStrokeListener gilt global über das ganze Spiel und ist unabhängig von der aktuellen Szene.Der
KeyStrokeListenerkann auf mehrere Arten implementiert werden:- Als normale Klasse:
class MyKeyStrokelistener implements KeyStrokeListener { @Override public void onKeyDown(KeyEvent e) { // Code here } } obj.addKeyStrokeListener(new MyKeyStrokelistener()); - Als anonyme Klasse:
obj.addKeyStrokeListener(new KeyStrokeListener() { @Override public void onKeyDown(KeyEvent e) { // Code here } }); - Oder als Lambda-Ausdruck:
obj.addKeyStrokeListener(e -> { // Code here });
- Parameters:
listener- Ein Objekt der KlasseKeyStrokeListener.- See Also:
- Als normale Klasse:
-
removeKeyStrokeListener
Entfernt einen statischenKeyStrokeListenervom Objekt, d. h. einen KeyStrokeListener, der global für das ganze Spiel gilt.- Parameters:
listener- Ein Objekt der KlasseKeyStrokeListener.- See Also:
-
addMouseClickListener
-
removeMouseClickListener
-
addMouseScrollListener
-
removeMouseScrollListener
-
addSceneLaunchListener
-
removeSceneLaunchListener
-
scene
Gibt die gerade aktive Szene zurück.Falls noch keine Szene existiert, wird eine neue Szene erstellt.
- Returns:
- Die gerade aktive Szene.
-
startedScene
Gibt die gerade aktive Szene zurück und startet diese Szene, falls sie noch nicht gestartet wurde.Falls noch keine Szene existiert, wird eine neue Szene erstellt.
- Returns:
- Die gerade aktive Szene.
- Since:
- 0.42.0
-
isKeyPressed
Gibt an, ob eine bestimmte Taste derzeit gedrü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, sonstfalse.- See Also:
-
isRunning
Gibt an, ob die Engine gerade läuft. Die Engine läuft, sobald es ein sichtbares Fenster gibt. Dieses läuft, sobaldstart(Scene)ausgeführt wurde.- Returns:
true, wenn das Spiel läuft, sonstfalse.
-
windowSize
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:
-
windowSize
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:
-
windowPosition
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:
-
windowPosition
Setzt das Spielfenster an eine neue Position.- Parameters:
direction- Wo das Spielfeld auf dem Bildschirm angezeigt werden sollen.Direction.UP: oben mittigDirection.UP_RIGHT: oben rechtsDirection.RIGHT: rechts mittigDirection.DOWN_RIGHT: unten rechtsDirection.DOWN: unten mittigDirection.DOWN_LEFT: unten linksDirection.LEFT: linksDirection.UP_LEFT: oben linksDirection.NONE: mittig
-
exit
Beendet das Spiel.Das Fenster wird geschlossen, alle belegten Ressourcen werden freigegeben und die virtuelle Maschine wird beendet.
-
renderPanel
Gibt die Zeichenfläche, in der alle Figuren eingezeichnet werden, zurück.- Returns:
- Die Zeichenfläche, in der alle Figuren eingezeichnet werden.
- Since:
- 0.38.0
-
window
Gibt das Spielfenster zurück.- Returns:
- Das Spielfenster.
- Since:
- 0.42.0
-
mousePosition
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:
-
debug
Setzt, ob die Engine im Debug-Modus ausgeführt werden soll.- Parameters:
value- ist dieser Werttrue, 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
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 Wertfalse. - See Also:
-
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. -
debug
Aktiviert den Entwicklungsmodus.- Since:
- 0.27.0
-
takeScreenshot
Speichert ein Bildschirmfoto des aktuellen Spielfensters in den Ordner~/engine-pi. -
recordScreen
Schaltet die Bildschirmaufnahme (in Form von Einzelbildern) ein oder aus. -
recordScreen
- Parameters:
duration- Die Dauer der Videoaufnahme in Sekunden.- Since:
- 0.42.0
-
instantMode
Aktiviert oder deaktiviert den Instant-Modus.Im sogenannten Instant-Modus werden die erzeugten Figuren sofort einer Szene hinzugefügt und diese Szene wird dann umgehend gestartet.
Der Instant-Modus der Engine Pi startet ein Spiel, ohne dass viel Code geschrieben werden muss.
- Parameters:
instantMode- Der Aktivierungsstatus des Instant-Modus, alsotruefalls der Instant-Modus aktiviert werden soll, sonstfalse.- Since:
- 0.42.0
- See Also:
-
windowDimension
Setzt die Abmessung, also die Breite und die Höhe, des Fensters in Pixel.- Parameters:
windowWidth- Die Breite des Fensters in Pixel.windowHeight- Die Höhe des Fensters in Pixel.- Since:
- 0.42.0
-
main
-