Jython HomeDruckenJava-Online

Animierte Actors


In vielen Spielen werden Spielfiguren nicht nur bewegt, sondern sie müssen während der Bewegung auch ihr Erscheinungsbild ändern. Der Benutzer muss den Eindruck haben, dass die Spielfiguren essen, laufen, schwimmen usw. Um dies möglichst einfach zu realisieren, können einem Actor mehrere Sprites zugeordnet werden, von denen jeweils nur eines sichtbar ist. Die Anzahl der Sprites wird beim Erzeugen des Actors als Parameter angegeben. Die einzelnen Sprites müssen mit einer Indexnummer gespeichert sein.

Beispiel 1: Dem Actor pacman werden zwei Sprites pacman_0.gif und pacman_1.gif zugeordnet, die abwechselnd sichtbar sind.

pacman_0.gif
pacman_1.gif

 

 
Ausführen mit Webstart
# Gg4.py

from gamegrid import *

# ------------- class Pacman ---------------------------
class Pacman(Actor):
     def __init__(self):
         Actor.__init__(self, "sprites/pacman.gif", 2)
     def act(self):
          self.move()
          self.showNextSprite()
          if self.getX() == 9:
              self.turn(90)
              self.setHorzMirror(True)
          if self.getX() == 0:
              self.turn(270)
              self.setHorzMirror(False)             
                  
# ---------- main ---------------------------------  
makeGameGrid(10, 10, 60, Color.red)
paki = Pacman()
addActor(paki, Location(0, 0))
show()
doRun()
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)

 

Erklärungen zum Programmcode:

(self, "sprites/pacman.gif", 2): Die Anzahl der Sprites wird beim Erzeugen des Actors als Parameter angegeben. Steht im Pfad des Sprites packman.gif, so müssen die 2 Bilder als packman_0.gif und packman_1.gif im Verzeichnis sprites gespeichert werden
showNextSprite() Da nur zwei Sprites vorhanden sind, werden die beiden Sprites abwechselnd sichtbar

 

Beispiel 2: Dem Actor Head sind drei verschiedene Sprites head_0.png, head_1.png und head_2.png zugeordnet, die periodisch der Reihe nach angezeigt werden. Mit einem GameGrid mit der Zellengrösse 1 Pixel erreicht man fliessende Figurenbewegungen.

getX() gibt die aktuelle Koordinate der Mittelpunktes des Bildes zurück. Bei der Fenstergrösse 600x600 Pixel muss der Actor rechts bei 500 und links bei 95 umkehren.

 
Ausführen mit Webstart
# Gg4a.py

from gamegrid import *

# ------------- class Head ---------------------------
class Head(Actor):
    def __init__(self):
        Actor.__init__(self, "sprites/head.png", 3)

    def act(self):     
        self.move()         
        self.showNextSprite()
        if (self.getX() > 500) or (self.getX() < 95):
            self.turn(180)        
                  
# ---------- main ----------------------------  
makeGameGrid(600, 600, 1, Color.lightgray)
addActor(Head(), Location(135, 180))
addActor(Head(), Location(300, 450))
show()
doRun()
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)


Dieses Programm verwendet Sprites aus der Programmcodedistribution zum Buch "Brackeen, Developing Games in Java".