====== Sprites ======
Sprites ([[https://dict.leo.org/englisch-deutsch/sprite|aus dem Englischen: Elfe, Kobold, Wicht]]) sind Bitmap-Grafiken, die direkt von der Grafikkarte auf den Bildschirm gezeichnet werden und daher den Hauptprozessor des Rechners kaum beanspruchen. Von vielen Betriebssystemen wird beispielsweise der Mauszeiger oder der Textcursor durch ein Sprite dargestellt, auch in vielen (v.a. zweidimensionalen) Computerspielen finden sie Verwendung.
* [[https://www.online-ide.de/spriteLibrary.html|Übersicht über alle in der Online-IDE eingebauten Sprites]]
===== Beispiel 1: Raumschiff und Smilies =====
Ein Sprite wird durch die Angabe der x- und y-Koordinate seines "Mittelpunktes", des Namens der Bilderfolge und des Index innerhalb dieser Folge instanziert.
new Sprite(400, 300, SpriteLibrary.Ship_1, 0);
etwa instanziert ein Sprite, das das erste (index == 0) Bild der Bilderfolge "Ship_1" darstellt.
===== Übersicht über die Bilderfolgen =====
[[https://www.online-ide.de/spriteLibrary.html|Einen Überblick über alle Bilderfolgen erhaltet Ihr hier.]]
===== Animation von Sprites =====
Es gibt Bilderfolgen, die - schnell hintereinander abgespielt - einen kleinen "Film" (Animation) ergeben. Diese Animationen kann man mit der Methode ''playAnimation'' abgespielt werden.
Sprite explosion = new Sprite(400, 300, SpriteLibrary.Explosion_1, 0);
explosion.playAnimation(0, 63, RepeatType.loop, 15);
Spielt die Bilder mit den Indizes 0 bis 63 (jeweils einschließlich) mit der Geschwindigkeit 15 Bilder pro Sekunde ab, wobei nach dem 63. Bild die Animation wieder von vorne begonnen wird (RepeatType.loop).
===== Kollision =====
Wie bei allen anderen Grafikobjekten kann auch bei Sprites mit er Methode ''collidesWith'' ausgewertet werden, ob ein Sprite mit einem anderen Objekt überlappt. Soll die Kollision mit vielen gleichartigen Objekten ausgewertet werden, so empfiehlt es sich aus Performancegründen, diese Objekte in einer Gruppe zusammenzufassen und die Kollision mithilfe der Methode ''getCollidingShapes'' der Gruppe zu suchen.
===== Tiled Sprites =====
{{ :api:documentation:spiele:pasted:20210621-180539.png?350}}
* Die Methode ''makeTiling(double width, double height)'' macht aus einem Sprite eine "Kachelfläche" der Breite ''width'' und der Höhe ''height'', indem das Sprite-Bild geeignet oft neben- und untereinander gezeichnet wird.
* Alle Methodenaufrufe des Sprites (z.B. ''move'', ''scale'', ...) beziehen sich auf die Kachelfläche als Ganzes.
* Möchte man die einzelnen Kachelbilder verändern, so erhält man mit der Methode ''getTileImage()'' ein Objekt, das einem geeignete Methoden ''move'' und ''scale'' hierzu bietet.
* Die Methode ''getTileImage().move(double dx, double dy)'' verschiebt die Bilddaten um die angegebene Verschiebung und fügt sie zyklisch in der gegenüberliegenden Richtung wieder an. Dadurch entsteht ein Scroll-Effekt. Starte am besten das nachfolgende Beispielprogramm, dann siehst Du sofort, was gemeint ist!