![]()
DU LERNST HIER... |
dass die Interaktion zwischen den Spielfiguren bei der Game-Programmierung von grosser Wichtigkeit sind. Bei den Kollisionen im Gitter überprüfst du, ob sich mehrere Actors in der gleichen Gitterzelle befinden. Die Methode getActorsAt() gibt alle Actors, die sich in einer bestimmten Zelle befinden in einer Liste zurück. Befindet sich in einer Zelle nur ein oder kein Actor, kannst du die Methode getOneActorAt() verwenden, welche den Actor oder None zurückgibt, wenn kein Actor in der Zelle ist. |
MUSTERBEISPIELE |
| Beispiel1: Der Pacman schlickt Pillen |
Programm: # Gg5.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.tryToEat() self.showNextSprite() if self.getX() == 9: self.turn(90) self.setHorzMirror(True) if self.getX() == 0: self.turn(270) self.setHorzMirror(False) def tryToEat(self): self.show(0) actor = getOneActorAt(self.getLocation(), Pill) if actor != None: actor.hide() self.show(1) # ------------- class Pill --------------------------- class Pill(Actor): def __init__(self): Actor.__init__(self, "sprites/pill_0.gif") # ---------------- main ------------------------------ makeGameGrid(10, 10, 60, Color.red, False) paki = Pacman() addActor(paki, Location(0, 0)) for i in range(20): addActor(Pill(), getRandomEmptyLocation()) show() doRun() |
MERKE DIR... |
| Mit actor = getOneActorAt(self.getLocation, Pill) kannst du überprüfen, ob sich eine Pille an der aktuellen Position befindet. Wenn ja (if (actor != None): gibt True zurück), lässt du sie mit actor.hide() verschwinden. |
ZUM SELBST LÖSEN |
|
![]()