Bildschirme und Level
Ein richtiges Spiel beginnt mit einem Startbildschirm und endet mit „Gewonnen“ oder „Verloren“. Und wer gewonnen hat, will das nächste, schwerere Level spielen. Jede dieser Ansichten ist in Scratch for Java eine eigene Bühne.
Von Bühne zu Bühne
Das Programm startet jetzt mit dem Startbildschirm. Drückt man die
Leertaste, wechselt das Fenster zu einer neuen Welt:
Window.getInstance().transitionToStage(new Welt(naechstesLevel), 500);
Window.getInstance() liefert das eine Fenster des Programms,
transitionToStage blendet innerhalb von 500 Millisekunden zur neuen Bühne
über. Die alte Bühne mit allen ihren Figuren ist danach weg – jedes Level
beginnt mit einer frischen Welt.
Die Welt selbst prüft in run(), ob das Level vorbei ist:
- Gibt es keinen
VerfolgerDonutmehr, hat der Spieler gewonnen. - Gibt es keinen
SpielerDonutmehr, wurde er gefressen.
count(VerfolgerDonut.class) zählt dafür die Figuren einer Klasse auf der
Bühne. Nach dem Wechsel steht return, damit der Rest von run() nicht mehr
mit einem Spieler rechnet, den es vielleicht gar nicht mehr gibt.
Drei Bildschirme, eine Oberklasse
Start, Gewonnen und Verloren sehen fast gleich aus: ein Gitter,
ein paar Zeilen Text, Leertaste startet ein Level. Was gleich ist, steht in der
Oberklasse Bildschirm. Die Unterklassen unterscheiden sich nur im Text und
darin, welches Level als Nächstes kommt – das geben sie dem Konstruktor der
Oberklasse mit:
| Bildschirm | super(...) |
Leertaste startet |
|---|---|---|
Startbildschirm |
super(0) |
Level 0 |
Gewonnen |
super(pLevel + 1) |
das nächste Level |
Verloren |
super(0) |
wieder Level 0 |
Immer schwerer
Das Level steckt in der Welt und bestimmt zwei Dinge:
- Es gibt
5 * (level + 1)Verfolger: 5 in Level 0, 10 in Level 1, … - Ihre Stärke liegt zwischen 10 und
20 * (level + 1).
a) Verfolge den Weg des Levels: Wo wird es festgelegt, wenn man in Level 2
gewinnt, und wie kommt es in die neue Welt?
b) Ändere die Formeln so, dass die Zahl der Verfolger langsamer wächst, ihre Stärke aber schneller.
c) Ergänze einen Text in der Welt, der oben das aktuelle Level anzeigt.
d) Was passiert, wenn man auf dem Startbildschirm eine andere Taste als die Leertaste drückt? Wo steht das im Code?
Weiterspielen
Rekord. Merke dir das höchste erreichte Level und zeige es auf dem Startbildschirm an. Wo kann der Wert gespeichert werden, wenn jede Bühne beim Wechsel neu erzeugt wird?
Pause. Mit P soll das Spiel anhalten und ein Pausenbildschirm erscheinen. Mit P geht es weiter – und zwar in derselben Welt, nicht in einer neuen.
Dein eigenes Spiel. Nimm Donut IO als Ausgangspunkt für etwas Eigenes: Fische im Meer, Planeten im All, Schneebälle auf einem Hang. Was ist bei dir die Stärke, was das Futter, was die Verfolger?