Animierte Bilder / Kostümwechsel¶
Lernziele
- Animierte Bilder
- Kostümwechsel
Einführung¶
Um ein Sprite-Bild zu animieren, müssen wir, ähnlich wie in Scratch, die Bilder in einem bestimmten Rhythmus ständig wechseln. Dazu müssen die Bilder (also die verschiedenen Kostüme) zuerst geladen werden, damit der Kostümwechsel durchführt werden kann.
Kostümwechsel - Animation¶
Mit Pygame geschieht das in den folgenden Schritten (=> Hier die Vorlage zum Downloaden):
-
Wir laden die Bilder mit Hilfe einer globalen Funktion
load_images(). In dieser Funktion werden die Bilder geladen und in eine Listeanimationals Pygame-Bilder gespeichert. Mehr Informationen zur Funktionload_images()findest du im Code selber, als Kommentare. -
Finde im Code die Stelle, wo die Funktion
load_images()aufgerufen wird. Der Aufruf sieht in unserem Beispiel so aus:res/Pfad zum Ordner, wo die Bilder drin sind.wheelist der Name der Bilder ohne die Nummerierung..gifist der Dateityp der Bilder, also das Bildformat.6ist die Anzahl der Bilder, wobei die Nummerierung bei Null beginnt.100,100ist die Bildgrösse, auf die Pygames das Originalbild skaliert.
-
Nachdem alle Bilder mit der Funktion
load_images()geladen worden sind, wird die Liste, in der alle Pygame-Bilder drin, sind vom Sprite als Attributself.animationgespeichert. -
Als Nächstes soll das erste Bild angezeigt werden:
-
Die Kostüme haben bei Pygames keine Nummern wie bei Scratch. Deswegen definieren wir einen eigenen Zähler für die Kostüme:
self.costume = 0. -
Nun kommt der letzte Schritt: Die Kostüme müssen regelmässig gewechselt werden.
Da der Kostümwechsel eine Fähigkeit ist, welche unsere
PlayerObjekte haben sollen, verwenden wir dazu eine Funktion, die in der Klasse, d.h. im Bauplan selber definiert wird. Die sieht wie folgt aus:def update(self): self.costume = (self.costume + 1 ) % len(self.animation) self.image = self.animation[self.costume]- Wenn sie aufgerufen wird,
dann wird die Variable
self.costumeum eins erhöht und Modulo "Anzahl Bilder" gerechnet, damit sie nur bis "Anzahl Bilder - 1" zählt und dann wieder von vorne beginnt. - Danach ziehen wir das entsprechende Kostüm aus der Liste an.
- Wenn sie aufgerufen wird,
dann wird die Variable
-
Als Letztes muss die soeben definierte Funktion regelmässig aufgerufen werden. D.h. der Aufruf muss in der Hauptschleife erfolgen. Der Funktionsname
update()ist ein speziell reservierter Name bei den Sprites. Mit dem Befehlall_sprites.update()werden von allen Sprites in dieser Gruppe die Funktionenupdate()automatisch aufgerufen.
Weitere Aufgaben¶
Nun sollst du selber eine neue Klasse erstellen, welche ebenfalls aus Objekten besteht, deren Kostüme ständig geändert werden.
-
Erstelle eine neue Klasse
Coin. Benutze die KlassePlayerals Vorlage. -
Die Kostüme kannst die HIER herunterladen. Speichere sie im "res" Ordner.
-
Implementiere den Kostümwechsel und teste es, indem du ein Objekt der Klasse
Coinerstellst und es irgendwo auf dem Bildschirm darstellst. -
(s) Plaziere das Münzobjekt dort, wo sich die Maus befindet, das Fenster darf es aber nicht verlassen.


