Informatik

Alles bewegt sich

Das Ziel

Bugs bleibt stehen, die Welt zieht an ihm vorbei – und zwar endlos. Genau so machen es alle Jump-and-Run-Spiele.

So sieht das aus

Wie es gemacht ist

Jedes Sprite hat eine Methode run. Sie wird etwa 60-mal pro Sekunde aufgerufen – einmal für jedes Bild. Was darin steht, passiert also ständig:

public void run() {
    this.changeX(-spiel.getGeschwindigkeit());
 
    if (this.getX() < -450) {
        this.changeX(BunnyHop.PLATTFORMEN * BunnyHop.BREITE);
    }
}

Zeile 1 schiebt die Plattform ein Stück nach links. Die if-Abfrage prüft, ob sie links aus dem Bild gewandert ist, und schiebt sie dann um die ganze Weltbreite nach rechts – dorthin, wo gerade Platz frei geworden ist.

Es entstehen keine neuen Plattformen. Es sind immer dieselben neun, sie werden nur immer wieder nach hinten gestellt. Das nennt man Recycling – es spart Speicher und ist der übliche Trick bei endlosen Spielwelten.

Die Plattform kennt das Spiel: Im Konstruktor bekommt sie es übergeben und merkt es sich im Attribut spiel. So kann sie jederzeit spiel.getGeschwindigkeit() fragen. Diese Verbindung zwischen zwei Klassen heißt Assoziation.

Deine Aufgabe

a) Starte das Programm. Zieht der Boden gleichmäßig vorbei, ohne Lücke?

b) Ändere die Geschwindigkeit auf 1 und auf 10. Was fällt dir bei 10 auf?

c) Ersetz in der if-Abfrage die −450 durch −400. Beobachte den linken Rand genau. Was passiert und warum?

d) Lass die Welt rückwärts laufen.

Tipp 1: Warum −450 und nicht −400?

Der Bildrand liegt bei −400. Eine Plattform ist 100 Pixel breit, ihr Mittelpunkt also noch 50 Pixel im Bild, wenn ihre rechte Kante gerade verschwindet.

Erst bei −450 ist sie ganz draußen. Wer früher umsetzt, tut das vor den Augen der Spielerin.

Tipp 2: Rückwärts

changeX mit einer positiven Zahl schiebt nach rechts. Dann muss auch die if-Abfrage auf die andere Seite schauen: if (this.getX() > 450).

Eine mögliche Lösung. Erfrage das Passwort bei deiner Lehrkraft oder sieh auf der Seite Lösungspasswörter nach.

Zum Herunterladen

Projekt: Alles bewegt sich

Selbsttest

Alles bewegt sich

Teilbare URL erstellen

Abschnitte auswählen