Sprites bzw. transparente Grafiken darstellen


Was wäre ein Spiel ohne bewegte Grafik? - Wahrscheinlich ein recht langweiliges Spiel. Grafiken laden - ok, bewegen - auch kein Problem, doch was ist mit dem Hintergrund? Die Lösung heißt SPRITE.

Ein Sprite ist nichts weiter als eine Grafik, die sich über einen Hintergrund bewegen lässt, ohne ihn dabei zu zerstören. Doch wie schafft man das? Eigentlich ist das Verfahren ganz simpel. Jeder der schon mal was von AND, OR, XOR usw. gehört hat (und das sollte man bei Programmierern voraussetzen) kann sich jetzt wohl schon denken was gemeint ist. Der Trick ist, vom eigentlichen Bild eine Art Negativ zu erstellen und dann beide Bilder, logisch verknüpft, nacheinander abzubilden.

Nehmen wir an wir möchten auf einem bunten Untergrund wie diesem...



...folgendes Bild mit Hilfe der PUT Anweisung abbilden...



...dann sieht das Ergebnis wahrscheinlich so aus - nicht so toll...



...natürlich kann man so etwas niemanden in einem Spiel zumuten.


Also sorgen wir dafür, daß der Hintergrund nicht durch den Rand unserer Grafik zerstört wird. Wir legen uns eine Kopie dieses Bildes an und machen daraus eine "Negativ"-Maske. Jeder Punkt unseres Bildes der später sichbar sein soll wird schwarz dargestellt. Jeder Punkt an dem der Hintergrund "durchscheint", welcher also transparent wird, bekommt die Farbe weiß. Das sieht dann so aus...



...wenn wir nun die Maske mit einer AND-Verknüpfung "putten" und darüber das eigentliche Bild mit einer XOR-Verknüpfung, dann haben wir es eigentlich schon geschafft. Der Syntax der Anweisungen sieht dann so aus...

PUT (Xpos, Ypos),FeldNeg(n),AND
PUT (Xpos, Ypos),FeldPos(n),XOR



Wollen wir nun den Sprite bewegen, müssen wir noch den Hintergrund nach jeder Bewegung wiederherstellen. Wie all das zusammen geht zeigt folgendes kleines Beispielprogramm. Beispiel