EOS 2
1.1.0
Einfache Objektbasierte Sprache
|
Spielobjekt. Mehr ...
Öffentliche Methoden | |
Sprite () | |
Sprite (int plane) | |
final Integer | getID () |
final int | hashCode () |
boolean | equals (Object obj) |
final int | compareTo (Sprite w) |
void | init (Game game) |
void | cleanup (Game game) |
void | render (Picture p) |
final void | update (long round, Game game) |
void | update (Game game) |
final void | sleep (int rounds) |
final void | sleep () |
final void | wakeup () |
boolean | processCollision (Sprite b, Game game) |
int | getPlane () |
Shape | getShape () |
Geschützte Attribute | |
Shape | shape |
Bounding Box des Sprites. Mehr ... | |
long | round = 0 |
Anzahl der vergangenen Runden seit Objekterzeugung. Mehr ... | |
Spielobjekt.
Die Klasse dient als Oberklasse für alle Elemente eines Spiels.
Aufrufsequenz init -> (update, processCollision)* | (render)* -> cleanup
Die Sprite#update(Game) Methode kann redefiniert werden, um Sprites zeitgesteuert zu verändern. Entweder weil eine Benutzereingabe erfolgt ist, weil genügend Runden vergangen sind oder einfach immer. Es wird garantiert, dass die Methode im Mittel im Takt aufgerufen wird. Also auf jedem Rechner gleich oft pro Sekunde. Standard ist 30 Aufrufe pro Sekunde. Über die Methoden Sprite#sleep(int) kann man den Aufruf der Sprite#update() Methode aussetzen.
Die Sprite#render(Picture) Methode kann redefiniert werden, um den Sprite darzustellen. Es ist nicht zu empfehlen hier Attribute zu ändern! Die Methode wird abhängig von der Rechenleistung des Rechners und der Grafikkarte, öfter oder weniger oft aufgerufen. Hier Attribute zu ändern, kann also unsinniges Verhalten erzeugen (Slowmotion, Zeitraffer etc.).
Benötigt man eine Kollisionsberechnung, muss man das Attribut shape sinnvoll befüllen. Es handelt sich hier um die Bounding Box des Sprites.
Die Gameengine überprüft zwischen zwei Runden, ob sich zwei Bounding Boxen überlappen. Ist dies der Fall wird processCollision(Sprite, Game) aufgerufen.
Hier prüft man mit welchem Sprite man kollidiert ist und reagiert entsprechend.
Definiert in Zeile 46 der Datei Sprite.java.
de.lathanda.eos.game.Sprite.Sprite | ( | ) |
Konstruktor
Definiert in Zeile 87 der Datei Sprite.java.
de.lathanda.eos.game.Sprite.Sprite | ( | int | plane | ) |
Definiert in Zeile 90 der Datei Sprite.java.
void de.lathanda.eos.game.Sprite.cleanup | ( | Game | game | ) |
Diese Methode wird nach dem Verlassen des Spiels aufgerufen. Unterklassen sollten Sie überschreiben, um Aufzuräumen.
game | Die Spielwelt |
Definiert in Zeile 159 der Datei Sprite.java.
final int de.lathanda.eos.game.Sprite.compareTo | ( | Sprite | w | ) |
boolean de.lathanda.eos.game.Sprite.equals | ( | Object | obj | ) |
Definiert in Zeile 115 der Datei Sprite.java.
final Integer de.lathanda.eos.game.Sprite.getID | ( | ) |
int de.lathanda.eos.game.Sprite.getPlane | ( | ) |
Definiert in Zeile 287 der Datei Sprite.java.
Shape de.lathanda.eos.game.Sprite.getShape | ( | ) |
Definiert in Zeile 290 der Datei Sprite.java.
final int de.lathanda.eos.game.Sprite.hashCode | ( | ) |
Hashwert für die Indizierung
Definiert in Zeile 107 der Datei Sprite.java.
void de.lathanda.eos.game.Sprite.init | ( | Game | game | ) |
Diese Methode wird vor dem Eintritt in das Spiel aufgerufen. Unterklassen sollten Sie überschreiben, um Code vor dem ersten update Aufruf auszuführen.
Definiert in Zeile 147 der Datei Sprite.java.
Eine Kollision zwischen diesem Objekt und dem Objekt b hat stattgefunden. Es soll die Kollision behandelt werden. Wird wahr zurückgeliefert wird die Kollision als erledigt betrachtet und b.processCollision(this) nicht mehr aufgerufen. Wird falsch zurück geliefert wird die Kollisionsbehandlung an das Objekt b weiter gereicht. Man sollte wahr zurück liefern, wenn b nicht mehr auf gerufen werden soll.
Eine Implementierung könnte zum Beispiel wie folgt aussehen...
Bei dieser Variante müsse die Klasse Bonus ebenfalls die Kollision behandeln. Man hätte aber auch folgendes schreiben können ...
Diesmal macht es Sinn wahr zurückzuliefern, da die Kollision schon fertig behandelt ist. Im Zweifel ist falsch aber die bessere Wahl.
b | mit diesem Objekt kollidiert |
game | Die Spielwelt |
Definiert in Zeile 283 der Datei Sprite.java.
void de.lathanda.eos.game.Sprite.render | ( | Picture | p | ) |
Der Sprite soll sich zeichnen, abhängig von seinen Attribute. Alle Längenangaben sind standardmäßig in mm. Das Koordinatensystem ist zentriert mit x nach rechts und y nach oben. Genaueres kann bei de.lathanda.eos.base.Picture nachgelesen werden.
Beim Zeichnen werden in der Regel viele Attribute gelesen, aber nicht verändert. Die Veränderung der Attribute erfolgt in Sprite#update(Game).
p | Grafikobjekt auf das gezeichnet werden soll. |
Definiert in Zeile 174 der Datei Sprite.java.
final void de.lathanda.eos.game.Sprite.sleep | ( | ) |
Lässt das Objekt für unbestimmte Zeit schlafen. Siehe wakeup()
Definiert in Zeile 230 der Datei Sprite.java.
final void de.lathanda.eos.game.Sprite.sleep | ( | int | rounds | ) |
Diese Methode lässt diesen Sprite einige Runden schlafen. Befinden wir uns in Runde 23 und rufen sleep(5) auf, wird update() das nächste mal in Runde 29 aufgerufen. Die Runden 24,25,26,27,28 werden verschlafen. Es wirkt nur der letzte Aufruf, die Werte werden nicht addiert.
rounds | Anzahl der Runden die geschlafen werden soll. |
Definiert in Zeile 223 der Datei Sprite.java.
void de.lathanda.eos.game.Sprite.update | ( | Game | game | ) |
Unterklassen müssen diese Methode überschreiben um zeitabhängig ihre Attributwert zu verändern. Etwa zur Simulation physikalischer Vorgänge mit der Methode kleiner Schritte.
Es gibt hier eine Trennung update() ändert die Werte, render() stellt sie dar.
Es wird versucht, dass die Methode immer im gleichen Zeitabstand aufgerufen wird. Wird dies durch nicht zu beeinflussende Randbedingungen, wie Betriebssystem und Rechnerlast verhindert, werden fehlende Intervalle beschleunigt nachgeholt.
Definiert in Zeile 211 der Datei Sprite.java.
final void de.lathanda.eos.game.Sprite.update | ( | long | round, |
Game | game | ||
) |
Diese Methode dient internen Zwecken.
round | Die aktuelle Runde |
game | Die Spielwelt |
Definiert in Zeile 187 der Datei Sprite.java.
final void de.lathanda.eos.game.Sprite.wakeup | ( | ) |
Hebt den Effekt von Sprite#sleep() und Sprite#sleep(int) auf
Definiert in Zeile 238 der Datei Sprite.java.
|
protected |
Anzahl der vergangenen Runden seit Objekterzeugung.
Definiert in Zeile 74 der Datei Sprite.java.
|
protected |
Bounding Box des Sprites.
Definiert in Zeile 60 der Datei Sprite.java.