public abstract class Game extends java.lang.Object implements TastenReagierbar
Modifier and Type | Field and Description |
---|---|
AnimationsManager |
animationsManager
Der Animations-Manager.
|
Kamera |
cam
Die
Kamera des Spiels.Dieser kann ueber setzeFokus(Raum m)
ein bestimmtes Raum-Objekt immer im Zentrum zeigen. |
Manager |
manager
Der Tickermanager.
|
java.lang.String |
pfadtrenner
Dieser String ist immer das korrekte, Systemabhaengige Pfadtrenner-Literal, das ganz
einfach bei Pfadangaben verwendet werden kann:
String verzeichnis =
"meinOrdner" + "meinDarinLiegenderUnterordner" + "meineDatei.eaf"; |
Knoten |
statischeWurzel
Die statische Wurzel.
Objekte, die an diesem Knoten angemeldet werden, werden ebenfalls gezeichnet, jedoch mit einem essentiellen Unterschied bei Verschiebung der Kamera werden diese nicht verschoben gezeichnet, sondern bleiben weiter
(statisch) auf ihrer festen Position. |
Knoten |
wurzel
Der Wurzel-Knoten.
|
Constructor and Description |
---|
Game()
Parameterloser Alternativkonstruktor.
Hierbei wird automatisch ein Spielfenster der Groesse 500 auf 500 (kein Vollbild) erstellt, das bei Tastendruck auf "Escape" beendet wird. |
Game(int x,
int y)
Vereinfachter Konstruktor.
Hierbei gilt automatisch, dass das Fenster beim Tastendruck auf "Escape" beendet wird, sowie dass kein Vollbild aktiviert wird. Ist dies nicht gewuenscht, so muss der komplexere Konstruktor aufgerufen werden. |
Game(int x,
int y,
boolean vollbild)
Erstellt ein Spiel, bei dem automatisch beim Drücken von ESC alles beendet wird und ohne
Titel.
|
Game(int x,
int y,
java.lang.String titel)
Vereinfachter Konstruktor.
Hierbei gilt automatisch, dass das Fenster beim Tastendruck auf "Escape" beendet wird, sowie dass kein Vollbild aktiviert wird. Ist dies nicht gewuenscht, so muss der komplexere Konstruktor aufgerufen werden. |
Game(int x,
int y,
java.lang.String titel,
boolean vollbild)
Etwas vereinfachter Konstruktor.
Hierbei gilt automatisch, dass das Fenster beim Tastendruck auf "Escape" beendet wird. Ist dies nicht gewuenscht, so muss der komplexere Konstruktor aufgerufen werden. |
Game(int x,
int y,
java.lang.String titel,
boolean vollbild,
boolean exitOnEsc)
Konstruktor fuer Objekte der Klasse Game.
|
Game(int x,
int y,
java.lang.String titel,
boolean vollbild,
boolean exitOnEsc,
int fensterX,
int fensterY)
Groesster Konstruktor fuer Objekte der Klasse Game.
|
Modifier and Type | Method and Description |
---|---|
void |
beenden()
Diese Methode beendet das Spiel gaenzlich.
Das heisst, dass das Fenster geschlossen, alle belegten Ressourcen freigegeben und auch die virtuelle Maschine von JAVA beendet wird. Also beendet diese Methode die gesamte Applikation! |
java.lang.String |
eingabeFordern(java.lang.String nachricht)
Fordert vom Benutzer eine Texteingabe (maximal 40 Zeichen) durch ein neues Fenster.
Dieses Fenster muss erst wieder geschlossen werden, damit das Spielfenster wieder in den Vordergrund ruecken kann. |
void |
fensterFontSetzen(java.lang.String fontname)
Setzt den Font, der ab sofort von den Fenstern standartmaessig verwendet wird mit einer
Standartgroesse von 12.
|
void |
fensterFontSetzen(java.lang.String fontname,
int schriftgroesse)
Setzt den Font, der ab sofort von den Fenstern standartmaessig verwendet wird.
|
BoundingRechteck |
fensterGroesse()
Gibt ein BoundingRechteck zurueck, dass die Masse des Fensters beschreibt.
Die Hoehe und Breite geben die Hoehe und Breite des Fensters wieder. |
void |
fensterMaximieren()
Maximiert das Fenster.
Dadurch wird es - sofern es sich in der Taskleiste minimiert befindet - wieder maximiert. |
void |
fensterMinimieren()
Minimiert das Fenster.
Dadurch wird es in die Taskleiste hinein minimiert. |
boolean |
frage(java.lang.String frage)
Stellt eine einfache Frage, also eine Frage, auf die mit "Ja" oder "Nein" geantwortet werden
kann, in einem neuen Fenster.
Dieses Fenster muss erst wieder geschlossen werden, damit das Spielfenster wieder in den Vordergrund ruecken kann. |
void |
highscoreAnzeigen(java.lang.String[] namen,
int[] punkte)
Öffnet ein titelloses Fenster, das die Highscores des Spiels anzeigt.
|
void |
highscoreAnzeigen(java.lang.String[] namen,
int[] punkte,
java.lang.String fenstertitel)
Öffnet ein Fenster, das die Highscores des Spiels anzeigt.
|
void |
hintergrundSetzen(Raum m)
Setzt einen Hintergrund fuer das Spiel.
Das kann ein beliebiges Raum -Objekt sein, vorwiegend bieten sich jedoch Bilder an.Dieses Objekt wird dann immer im absoluten Hintergrund sein und wird auch weiter entfernt wirken, wenn Bewegungen stattfinden. |
void |
iconSetzen(Bild icon)
Setzt das übergebene Bild als Icon des Fensters
|
void |
kollisionsReagierbarAnmelden(KollisionsReagierbar reagierbar,
Raum r1,
Raum r2,
int code)
Meldet ein
KollisionsReagierbar -Interface an. |
boolean |
kopieren(java.lang.String von,
java.lang.String nach,
java.lang.String nameNeu)
Diese Methode kopiert eine beliebige Datei von einem Pfad in einen neuen.
|
void |
mausAnmelden(Maus maus)
Meldet ein Mausobjekt an.
Ab sofort wird die anzumeldende Maus im Fenster dargestellt und Klicks werden auf die Maus uebertragen. |
void |
mausAnmelden(Maus maus,
boolean listenerUebernehmen)
Meldet ein Mausobjekt an.
Ab sofort wird die anzumeldende Maus im Fenster dargestellt und Klicks werden auf die Maus uebertragen. |
void |
nachrichtSchicken(java.lang.String nachricht)
Schickt eine einfache Nachricht in einem Fenster nach draussen.
Dieses Fenster muss erst wieder geschlossen werden, damit das Spielfenster wieder in den Vordergrund ruecken kann. |
java.lang.String |
pfadAuswaehlen(java.lang.String... akzeptierteEndungen)
Öffnet einen Such-Dialog, der die Auswahl eines Pfades ermöglicht.
|
void |
reagieren(int code)
Die aus
TastenReagierbar implemetierte Methode zum Reagieren auf einen
einfachen, einmaligen Tastendruck. |
void |
rechenintensiveArbeitSetzen(boolean rechenintensiv)
Setzt, ob die gesamte Engine Alpha rechenintensiv, oder ressourcensparsam arbeiten soll.
|
void |
schliessen()
Beendet dieses Game auf softe weise:
- Das Fenster wird geschlossen - Die Physik wird beendet (alle bestehenden Raum-Objekte werden automatisch neutral - Alle Animationen werden beendet - Der ABER: -> Die virtuelle Maschine wird nicht beendet. |
void |
screenshot(java.lang.String pfad)
Macht vom aktuell sichtbaren Bereich (also dem von der Kamera derzeit erfassten Bereich)
einen Screenshot.
|
void |
screenshot(java.lang.String pfad,
BoundingRechteck ausschnitt)
Macht einen Screenshot von einem bestimmten Bildbereich und speichert diesen ab.
|
void |
screenshot(java.lang.String pfad,
int x,
int y,
int breite,
int hoehe)
Macht einen Screenshot von einem bestimmten Bildbereich und speichert diesen ab,
|
boolean |
sicherheitsFrage(java.lang.String frage)
Stellt eine Sicherheitsfrage, also eine Frage auf die mit "OK" oder "Abbrechen" geantwortet
werden kann, in einem neuen Fenster.
Dieses Fenster muss erst wieder geschlossen werden, damit das Spielfenster wieder in den Vordergrund ruecken kann. |
boolean |
tasteGedrueckt(int code)
Prüft, ob eine bestimmte Taste gerade jetzt heruntergedrückt wird.
|
void |
tastenLosgelassenReagierbarAnmelden(TastenLosgelassenReagierbar g)
Meldet ein
TastenLosgelassenReagierbar -Objekt an. |
void |
tastenReagierbarAnmelden(TastenReagierbar g)
Meldet ein "
TastenReagierbar "-Objekt an. |
abstract void |
tasteReagieren(int code)
Diese Methode wird von der Klasse automatisch aufgerufen, sobald eine Taste einfach gedrueckt
wurde.
Sie wird dann erst wieder aufgerufen, wenn die Taste erst losgelassen und dann wieder gedreuckt wurde. Sollte allerdings eine Methode vonnoeten sein, die immer wieder in Regelmaessigen abstaenden aufgerufen wird, solange die Taste heruntergedrueckt ist, so bietet sich dies im Interface TasteGedruecktReagierbar an. |
void |
tickerAbmelden(Ticker ticker)
Meldet einen (aktiven) Ticker ab.
|
void |
tickerAnmelden(Ticker ticker,
int intervall)
Meldet einen Ticker an.
|
void |
ueberblendeSetzen(boolean aktiv)
Setzt, ob das Spiel eine allueberstehende Ueberblende ausfuehren soll, die bis zum widerruf
alles ueberdeckt.
Diese ist niemals gaenzlich durchsichtig, da sie nur ueberblendet und nicht ueberdeckt. |
void |
ueberblendeSetzen(boolean aktiv,
Farbe farbe)
Setzt, ob das Spiel eine allueberstehende Ueberblende ausfuehren soll, die bis zum widerruf
alles ueberdeckt.
Diese ist niemals gaenzlich durchsichtig, da sie nur ueberblendet und nicht ueberdeckt. |
void |
warten(int millisekunden)
Dieser Methodenaufruf dauert eine bestimmte Zeit.
|
boolean |
zufallsBoolean()
Gibt ein zufälliges
boolean -Attribut zurück.Mit relativ zuverlässiger Sicherheit sind die Wahrscheinlichkeiten für false und
true gleich groß. |
int |
zufallsZahl(int obergrenze)
Gibt ein zufälliges
int -Attribut zwischen 0 und einer
festgelegten Obergrenze zurück.Mit relativ zuverlässiger Sicherheit sind die Wahrscheinlichkeiten für die Werte zwischen 0 und der Obergrenze gleich groß. |
public final Manager manager
public final AnimationsManager animationsManager
public final Knoten wurzel
Raum
-Objekte angemeldet werden, die auch (normal) gezeichnet werden sollen.public final Knoten statischeWurzel
Kamera
werden diese nicht verschoben gezeichnet, sondern bleiben weiter
(statisch) auf ihrer festen Position. Dies bietet sich zum Beispiel fuer eine
Punkte-Anzeige etc an.public final Kamera cam
Kamera
des Spiels.setzeFokus(Raum m)
ein bestimmtes Raum-Objekt immer im Zentrum zeigen. Es gibt auch weitere interessante
Methoden dieser Klasse.public final java.lang.String pfadtrenner
String verzeichnis =
"meinOrdner" + "meinDarinLiegenderUnterordner" + "meineDatei.eaf";
public Game(int x, int y, boolean vollbild)
x
- Die Breite des Fenstersy
- Die Hoehe des Fenstersvollbild
- Ob das Fenster ein echtes Vollbild sein soll.x
und y
beschreiben dann die Masse dieses Fensters, der
Bildschirm wird also an die gewuenschte X-Y-Groesse angepasst!!!public Game(int x, int y, java.lang.String titel, boolean vollbild, boolean exitOnEsc)
x
- Die Breite des Fenstersy
- Die Hoehe des Fensterstitel
- Der Titel des Spielfenstersvollbild
- Ob das Fenster ein echtes Vollbild sein soll.x
und y
beschreiben dann die Masse dieses Fensters, der
Bildschirm wird also an die gewuenschte X-Y-Groesse angepasst!!!exitOnEsc
- Ist dieser Wert true
, so wird das Spiel automatisch beendet, wenn die
"Escape"-Taste gedrueckt wurde. Dies bietet sich vor allem an, wenn das Spiel ein Vollbild
ist oder die Maus aufgrund der Verwendung einer Maus im Spiel nicht auf das "X"-Symbol des
Fensters geklickt werden kann, wodurch der Benutzer im Spiel "gefangen" waere und dies
ist etwas unbeschreiblich aergerliches fuer den Spielbenutzer!!!!!!!!!!!public Game(int x, int y, java.lang.String titel, boolean vollbild, boolean exitOnEsc, int fensterX, int fensterY)
x
- Die Breite des Fenstersy
- Die Hoehe des Fensterstitel
- Der Titel des Spielfenstersvollbild
- Ob das Fenster ein echtes Vollbild sein soll.x
und y
beschreiben dann die Masse dieses Fensters, der
Bildschirm wird also an die gewuenschte X-Y-Groesse angepasst!!!exitOnEsc
- Ist dieser Wert true
, so wird das Spiel automatisch beendet, wenn die
"Escape"-Taste gedrueckt wurde. Dies bietet sich vor allem an, wenn das Spiel ein Vollbild
ist oder die Maus aufgrund der Verwendung einer Maus im Spiel nicht auf das "X"-Symbol des
Fensters geklickt werden kann, wodurch der Benutzer im Spiel "gefangen" waere und dies
ist etwas unbeschreiblich aergerliches fuer den Spielbenutzer!!!!!!!!!!!fensterX
- Die X-Koordinate der linken oberen Ecke des Fensters auf dem ComputerbildschirmfensterY
- Die Y-Koordinate der linken oberen Ecke des Fensters auf dem Computerbildschirmpublic Game(int x, int y)
x
- Die Breite des Fenstersy
- Die Hoehe des Fenstserspublic Game(int x, int y, java.lang.String titel)
x
- Die Breite des Fenstersy
- Die Hoehe des Fenstserstitel
- Der Titel des Spielfensterspublic Game()
public Game(int x, int y, java.lang.String titel, boolean vollbild)
x
- Die Breite des Fenstersy
- Die Hoehe des Fenstserstitel
- Der Titel des Spielfenstersvollbild
- Ob das Fenster ein echtes Vollbild sein soll.x
und y
beschreiben dann die Masse dieses Fensters, der
Bildschirm wird also an die gewuenschte X-Y-Groesse angepasst!!!public void iconSetzen(Bild icon)
icon
- zu setzendes Iconpublic void reagieren(int code)
TastenReagierbar
implemetierte Methode zum Reagieren auf einen
einfachen, einmaligen Tastendruck.reagieren
in interface TastenReagierbar
code
- Der Code dieser Taste zu den Codes:Taste
public void beenden()
schliessen()
public abstract void tasteReagieren(int code)
TasteGedruecktReagierbar
an.code
- Code der gedrückten TasteTastenReagierbar
public java.lang.String eingabeFordern(java.lang.String nachricht)
nachricht
- Ein Text, der ebenfalls angezeigt wird und erlaeutern sollte, wozu die Eingabe dient, und
was die Eingabe sein sollte.null
.public boolean sicherheitsFrage(java.lang.String frage)
frage
- Die Frage, die im Fenster angezeigt wird.true
, wenn die Frage mit "OK" beantwortet wurde; false
,
wenn die Frage mit "Abbrechen" beantwortet oder das Fenster geschlossen wurde.public boolean frage(java.lang.String frage)
frage
- Die Frage, die im Fenster angezeigt wird.true
, wenn die Frage mit "Ja" beantwortet wurde; false
,
wenn die Frage mit "Nein" beantwortet oder das Fenster geschlossen wurde.public void nachrichtSchicken(java.lang.String nachricht)
nachricht
- Die Nachricht, die Angezeigt werden sollpublic void highscoreAnzeigen(java.lang.String[] namen, int[] punkte)
namen
- Die Namen der Liste als Array. Von Index 0 als dem besten bis zum schlechtesten auf
der Listepunkte
- Die Punktestaende der Liste als Array. Von Index 0 als dem besten bis zum
schlechtesten auf der ListehighscoreAnzeigen(String[], int[])
public void highscoreAnzeigen(java.lang.String[] namen, int[] punkte, java.lang.String fenstertitel)
namen
- Die Namen der Liste als Array. Von Index 0 als dem besten bis zum schlechtesten auf
der Listepunkte
- Die Punktestaende der Liste als Array. Von Index 0 als dem besten bis zum
schlechtesten auf der Listefenstertitel
- Der Titel des sich oeffnenden Fensters. Dieser Parameter kann weggelassen werden, hierfuer
gibt es eine alternative Methode, die diesen Titel nicht erwartet.public boolean zufallsBoolean()
boolean
-Attribut zurück.false
und
true
gleich groß.false
oder true
, mit gleich hoher Wahrscheinlichkeit.public int zufallsZahl(int obergrenze)
int
-Attribut zwischen 0
und einer
festgelegten Obergrenze zurück.0
und der Obergrenze gleich groß.obergrenze
- Die höchste Zahl, die vorkommen kann.public void schliessen()
public void warten(int millisekunden)
millisekunden
- Die Anzahl an Millisekunden, die dieser Methodenaufruf dauert. So lange "wartet" man also
durch den Aufruf dieser Methode.public void fensterFontSetzen(java.lang.String fontname)
fontname
- Der Name des zu verwendenden Fonts. Text
ist empfehlenswert!Text
public void fensterFontSetzen(java.lang.String fontname, int schriftgroesse)
fontname
- Der Name des zu verwendenden Fonts. Text
ist empfehlenswert!schriftgroesse
- Die Schriftgroesse, in der die texte dargestellt werden sollen.Text
public void fensterMinimieren()
public void fensterMaximieren()
public void tastenReagierbarAnmelden(TastenReagierbar g)
TastenReagierbar
"-Objekt an. Ab diesem Moment wird seine
"reagieren
"-Methode immer dann aufgerufen, wenn eine Taste heruntergedrueckt
wird.g
- Das anzumeldende TastenReagierbar
-Objektpublic boolean tasteGedrueckt(int code)
code
- der Code der zu prüfenden Taste.true
, falls die gewählte Taste gerade jetzt heruntergedrückt wird. Sonst
false
.public void tastenLosgelassenReagierbarAnmelden(TastenLosgelassenReagierbar g)
TastenLosgelassenReagierbar
-Objekt an. Ab diesem Moment wird seine
"tasteGedrueckt
"-Methode immer aufgerufen, wenn eine Taste losgelassen wird.g
- Das anzumeldende TastenLosgelassenReagierbar
-Objekt.public void tickerAnmelden(Ticker ticker, int intervall)
tick
-Methode
dieses Tickers regelmäßig und unerlässlich im angegebenen Intervall ausgeführt.ticker
- Der Ticker, dessen tick
-Methode ab sofort regelmäßig
ausgeführt werden soll.intervall
- Das Intervall (in Millisekunden), in dem die tick
-Methode
des angegebenen Tickers ausgeführt werden soll. Zwischen zwei
tick
-Aufrufen vergehen intervall
Millisekunden.tickerAbmelden(Ticker)
,
Ticker
public void tickerAbmelden(Ticker ticker)
tick
-Methode
des übergebenen Ticker-Objekts nicht mehr ausgeführt, bis der Ticker erneut angemeldet wird.ticker
- Der Ticker, dessen tick
-Methode ab sofort nicht mehr ausgeführt
werden soll. Ist dieser Ticker noch gar nicht angemeldet, wird eine Fehlermeldung
ausgegeben.tickerAnmelden(Ticker, int)
,
Ticker
public void kollisionsReagierbarAnmelden(KollisionsReagierbar reagierbar, Raum r1, Raum r2, int code)
KollisionsReagierbar
-Interface an. Ab sofort wird es mit dem
spezifizierten code
aufgerufen, sollten sich die Raum
-Objekte
r1
und r2
schneiden.reagierbar
- Das anzumeldende KollisionsReagierbar
-Interface, das ab sofort von Kollisionen
von r1
und r2
informiert werden soll.r1
- Ein Raum
-Objektr2
- Ein zweites Raum
-Objektcode
- Ein beliebiger Code. Dieser kann verwendet werden, um mit einem Interface mehrere
Kollisionen unterscheidbar zu behandeln. Er wird im Aufruf der
kollision(int)
als Parameter übergeben.public void mausAnmelden(Maus maus)
maus
- Die anzumeldende MausMaus
public void mausAnmelden(Maus maus, boolean listenerUebernehmen)
maus
- Die anzumeldende MauslistenerUebernehmen
- Ist dieser Wert true
, so uebernimmt die neue Maus alle Listener der alten
MausMaus
public BoundingRechteck fensterGroesse()
public void hintergrundSetzen(Raum m)
Raum
-Objekt sein, vorwiegend bieten sich jedoch Bilder an.m
- Das Raum-Objekt, das ab jetzt der Hintergrund sein wird.public void ueberblendeSetzen(boolean aktiv, Farbe farbe)
aktiv
- ob die Blende aktiviert oder deaktiviert werden sollfarbe
- Die neue Farbe der BlendeueberblendeSetzen(boolean)
public void ueberblendeSetzen(boolean aktiv)
aktiv
- ob die Blende aktiviert oder deaktiviert werden sollpublic void rechenintensiveArbeitSetzen(boolean rechenintensiv)
rechenintensiv
- Ist dieser Wert true
(Standard), so ist die Arbeit der Engine exakt und
rechenintensiv. Ist dieser Wert false
(fuer langsame Computer zu empfehlen -
aber immer erst testen!!!!), so ist die Arbeit ressourcensparender und ungenauer.public void screenshot(java.lang.String pfad)
pfad
- Der Pfad, in dem das Bild gespeichert werden soll. Ein Wert wie screenshot.jpg
speichert den Screenshot im Projektordner. Für eingabeabhängige Pfade kann
pfadAuswaehlen(String[])
benutzt werden.public void screenshot(java.lang.String pfad, BoundingRechteck ausschnitt)
pfad
- Der Pfad, in dem das Bild gespeichert werden soll. Ein Wert wie screenshot.jpg
speichert den Screenshot im Projektordner. Für eingabeabhängige Pfade kann
pfadAuswaehlen(String[])
benutzt werden.ausschnitt
- Der Ausschnitt aus der Zeichenebene, der als Bild gespeichert werden soll als
BoundingRechteck
.pfadAuswaehlen(java.lang.String[])
,
screenshot(java.lang.String, int, int, int, int)
public void screenshot(java.lang.String pfad, int x, int y, int breite, int hoehe)
pfad
- Der Pfad, in dem das Bild gespeichert werden soll. Ein Wert wie screenshot.jpg
speichert den Screenshot im Projektordner. Für eingabeabhängige Pfade kann
pfadAuswaehlen(String[])
benutzt werden.x
- Die X-Koordinate der oberen linken Ecke des Bildausschnitts.y
- Die Y-Koordinate der oberen linken Ecke des Bildausschnitts.breite
- Die gewuenschte Breite des Bildeshoehe
- Die gewuenschte Laenge des BildespfadAuswaehlen(java.lang.String[])
,
screenshot(java.lang.String, ea.BoundingRechteck)
public java.lang.String pfadAuswaehlen(java.lang.String... akzeptierteEndungen)
akzeptierteEndungen
- Eine Reihe beliebig vieler akzeptierter Endungen (Gross/Kleinschreibung vollkommen egal)pfadAuswaehlen("jpg", "bmp", "gif");
null
als Parameter gegeben, so sind saemtliche Dateien waehlbar.pfadAuswaehlen(null);
public boolean kopieren(java.lang.String von, java.lang.String nach, java.lang.String nameNeu)
von
- Das Verzeichnis der Datei, die kopiert werden sollnach
- Das Verzeichnis, in das die Datei kopiert werden sollnameNeu
- Der Name der neuen Datei, die entstehen soll (z.B. "neuedatei.pdf")true
, wenn das kopieren vollends erfolgreich war, sonst
false
.