TigerJython | xx für Gymnasien |
Die Verfolgung von Spielfiguren wird bei der Spielprogrammierung oft verwendet. Dabei können sich die Figuren im Gitter, d.h.. von Zelle zur Zelle (Beispiel 1) oder auf dem geraden Weg zum verfolgten Objekt bewegen (Beispiel 2).
Beispiel 1: Ein Hai verfolgt Nemo Der Nemo schwimmt horizontal hin und her und wird vom Hai verfolgt. Der Hai bewegt sich von Zelle zur Zelle jeweils in Richtung der aktuellen Nemo-Position.
Als Parameter erhält diese Methode die Position des verfolgten Objekts. |
# Gg7.py from gamegrid import * # --------------------- class Fish --------------------- class Fish(Actor): def __init__(self): Actor.__init__(self, "sprites/snemo.gif") def act(self): self.move() if self.getX() == 9: self.turn(180) self.setHorzMirror(True) if self.getX() == 0: self.turn(180) self.setHorzMirror(False) # --------------------- class Shark --------------------- class Shark(Actor): def __init__(self): Actor.__init__(self, True, "sprites/shark.gif") def act(self): if self.nbCycles % 5 == 0 and not nemo.isRemoved(): self.setDirection(self.getLocation(). getCompassDirectionTo(nemo.getLocation())) self.move() aNemo = getOneActorAt(self.getLocation(), Fish) if aNemo != None: aNemo.removeSelf() makeGameGrid(10, 10, 60, Color.red, "sprites/reef.gif") nemo = Fish() addActor(nemo, Location(0, 1)) shark = Shark() addActor(shark, Location(7, 9)) show() |
Erklärungen zum Programmcode:
if self.nbCykles % 5 == 0 : Der Hai bewegt sich nur jeden 5. Simulationszyklus | |
setDirection(self.getLocation().getCompassDirectionTo(nemo.getLocation())) Die Richtung des Hais wird auf eine der Kompass-Richtungen zum Nemo gesetzt |
Aufgaben: |
1) |
Erzeuge einen Actor Fly() (fly.gif ), welcher mit den Cursortasten bewegt werden kann. Die Fliege wird durch den Actor Frog (frog.gif) verfolgt. Erzeuge ein Spielfeld mit 20 horizontalen und 20 vertikalen Zellen der Grösse 30 und grauen Gitterliniern. Für die Verfolgung kannst du als Vorlage den Programmcode aus dem Beispiel 1 verwenden. Wenn der Frosch die Zelle, in der sich die Fliege befindet, erreicht hat, wird die Fliege gefressen. |