Informatik

Verfolger

Bisher ist das Spiel friedlich. Jetzt kommen Gegner dazu: VerfolgerDonuts, die irgendwo in der Welt starten und auf den Spieler zurollen. Ist ein Verfolger stärker, frisst er dich – ist er schwächer, frisst du ihn.

Eine Methode für alle

Der Verfolger bewegt sich genauso wie der Spieler – nur nicht zur Maus, sondern zum Spieler. Statt die vier Zeilen Vektorrechnung zu kopieren, stehen sie jetzt als Methode bewegeZu(Vector2 pZiel) in der Oberklasse Donut. Beide Unterklassen benutzen sie, jede mit ihrem eigenen Ziel:

Klasse run()
SpielerDonut this.bewegeZu(this.getMouse());
VerfolgerDonut this.bewegeZu(beute.getPosition());

Woher kennt der Verfolger den Spieler? Er bekommt ihn im Konstruktor übergeben und merkt ihn sich im Attribut beute. Das ist eine Assoziation: Der Verfolger kennt den Spieler, der Spieler aber nicht den Verfolger.

classDiagram
    Sprite <|-- Donut
    Donut <|-- SpielerDonut
    Donut <|-- VerfolgerDonut
    VerfolgerDonut --> SpielerDonut : beute
    class Donut {
        -staerke: int
        #tempo: double
        +getStaerke() int
        +setStaerke(pStaerke: int)
        +bewegeZu(pZiel: Vector2)
        +run()
    }
    class SpielerDonut {
        +run()
    }
    class VerfolgerDonut {
        +run()
    }

Die Gegner starten weit verstreut: irgendwo zwischen −2000 und 2000 in x-Richtung und −3000 und 3000 in y-Richtung. Auch hier sorgt eine fußgesteuerte Schleife dafür, dass keiner direkt auf dem Spieler entsteht.

a) Gib dem VerfolgerDonut ein eigenes Tempo, zum Beispiel 0.5. Wo setzt du den Wert, damit nur Verfolger langsamer sind?

b) Warum darf tempo in Donut nicht private sein? Probiere es aus.

c) Ändere ANZAHL_GEGNER auf 20. Ist das Spiel noch zu gewinnen?

d) Wird der Spieler gefressen, läuft das Spiel einfach weiter. Was passiert mit den Verfolgern? Erkläre es mit dem Attribut beute.

Tipp zu b)

tempo wird in bewegeZu gelesen, also in der Klasse Donut selbst. Wer außerdem darauf zugreifen will, steht in Aufgabe a).

Weiterspielen

Fluchttiere. Baue eine dritte Unterklasse FluchtDonut, die sich vom Spieler weg bewegt. Mit Vektoren ist das eine Kleinigkeit: Welcher Pfeil zeigt vom Spieler weg?

Kluge Verfolger. Ein Verfolger, der schwächer ist als der Spieler, sollte lieber fliehen als angreifen. Lass ihn je nach Stärke die Richtung wählen.

Verfolger

Teilbare URL erstellen

Abschnitte auswählen