EOS 2  1.1.0
Einfache Objektbasierte Sprache
Öffentliche Methoden | Geschützte Attribute | Aufstellung aller Elemente
de.lathanda.eos.game.Sprite Klassenreferenzabstract

Spielobjekt. Mehr ...

Klassendiagramm für de.lathanda.eos.game.Sprite:
Inheritance graph
[Legende]

Ö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 ...
 

Ausführliche Beschreibung

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.

Autor
Lathanda

Definiert in Zeile 46 der Datei Sprite.java.

Beschreibung der Konstruktoren und Destruktoren

◆ Sprite() [1/2]

de.lathanda.eos.game.Sprite.Sprite ( )

Konstruktor

Definiert in Zeile 87 der Datei Sprite.java.

◆ Sprite() [2/2]

de.lathanda.eos.game.Sprite.Sprite ( int  plane)

Definiert in Zeile 90 der Datei Sprite.java.

Dokumentation der Elementfunktionen

◆ cleanup()

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.

  • abhängige Sprites entfernen
  • Resourcenfreigeben (Bilder, Fenster, Dateien etc.)
Parameter
gameDie Spielwelt

Definiert in Zeile 159 der Datei Sprite.java.

◆ compareTo()

final int de.lathanda.eos.game.Sprite.compareTo ( Sprite  w)

Vergleichoperator für Sortierung

Parameter
w

Definiert in Zeile 134 der Datei Sprite.java.

◆ equals()

boolean de.lathanda.eos.game.Sprite.equals ( Object  obj)

Definiert in Zeile 115 der Datei Sprite.java.

◆ getID()

final Integer de.lathanda.eos.game.Sprite.getID ( )

Frägt die ID ab

Rückgabe
Die ID des Objekts

Definiert in Zeile 99 der Datei Sprite.java.

◆ getPlane()

int de.lathanda.eos.game.Sprite.getPlane ( )

Definiert in Zeile 287 der Datei Sprite.java.

◆ getShape()

Shape de.lathanda.eos.game.Sprite.getShape ( )

Definiert in Zeile 290 der Datei Sprite.java.

◆ hashCode()

final int de.lathanda.eos.game.Sprite.hashCode ( )

Hashwert für die Indizierung

Definiert in Zeile 107 der Datei Sprite.java.

◆ init()

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.

◆ processCollision()

boolean de.lathanda.eos.game.Sprite.processCollision ( Sprite  b,
Game  game 
)

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

if (b instanceof Bonus) {
punkt = punkt + 100;
}
if (b instanceof Niete) {
punkte = punkte - 300;
}
return false;

Bei dieser Variante müsse die Klasse Bonus ebenfalls die Kollision behandeln. Man hätte aber auch folgendes schreiben können ...

if (b instanceof Bonus) {
punkt = punkt + 100;
game.removeSprite(b);
return true;
}
if (b instanceof Niete) {
punkte = punkte - 300;
game.removeSprite(b);
return true;
}
return false;

Diesmal macht es Sinn wahr zurückzuliefern, da die Kollision schon fertig behandelt ist. Im Zweifel ist falsch aber die bessere Wahl.

Parameter
bmit diesem Objekt kollidiert
gameDie Spielwelt
Rückgabe
wahr, wenn die Kollision komplett behandelt wurde.

Definiert in Zeile 283 der Datei Sprite.java.

◆ render()

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).

Parameter
pGrafikobjekt auf das gezeichnet werden soll.

Definiert in Zeile 174 der Datei Sprite.java.

◆ sleep() [1/2]

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.

◆ sleep() [2/2]

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.

Parameter
roundsAnzahl der Runden die geschlafen werden soll.

Definiert in Zeile 223 der Datei Sprite.java.

◆ update() [1/2]

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.

◆ update() [2/2]

final void de.lathanda.eos.game.Sprite.update ( long  round,
Game  game 
)

Diese Methode dient internen Zwecken.

Parameter
roundDie aktuelle Runde
gameDie Spielwelt

Definiert in Zeile 187 der Datei Sprite.java.

◆ wakeup()

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.

Dokumentation der Datenelemente

◆ round

long de.lathanda.eos.game.Sprite.round = 0
protected

Anzahl der vergangenen Runden seit Objekterzeugung.

Definiert in Zeile 74 der Datei Sprite.java.

◆ shape

Shape de.lathanda.eos.game.Sprite.shape
protected

Bounding Box des Sprites.

Definiert in Zeile 60 der Datei Sprite.java.


Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Datei:
Impressum