Ingo, der Stachelmann
Das Ziel
Jetzt kann man verlieren. Ingo läuft Bugs entgegen; eine Berührung beendet das Spiel – und mit r geht es von vorn los.
So sieht das aus
Wie es gemacht ist
Die Bühne merkt sich in vorbei, ob das Spiel läuft. Dieses eine Attribut wirkt an
drei Stellen:
| Stelle | Wirkung |
|---|---|
getGeschwindigkeit |
liefert 0 – die ganze Welt bleibt stehen |
Spieler.run |
zeigt das Kostüm verletzt und macht sonst nichts mehr |
whenKeyPressed |
nur jetzt startet r ein neues Spiel |
Das Spiel hat zwei Zustände: läuft und vorbei. Ein einziges Attribut entscheidet, welcher gilt, und alle anderen Klassen fragen danach. Wer den Zustand an mehreren Stellen speichert, bekommt früher oder später Widersprüche.
Der Neustart baut die Bühne einfach neu auf:
Window.getInstance().setStage(new BunnyHop());
Alle Objekte sind damit frisch – kein Aufräumen von Hand nötig.
Deine Aufgabe
a) Lauf absichtlich in Ingo hinein. Bleibt wirklich alles stehen?
b) Ingo steht im Weg, sobald er auftaucht. Sorg dafür, dass zwischen zwei Ingos immer genug Platz zum Landen bleibt.
c) Gib Bugs drei Leben statt einem. Erst beim dritten Treffer ist Schluss.
d) Lass Ingo laufen, statt nur zu stehen: Er hat die Kostüme spikeMan_walk1 und
spikeMan_walk2.
Tipp 1: Abstand
this.setX(450 + this.pickRandom(0, 300)); setzt Ingo an eine zufällige Stelle
rechts. Je größer die zweite Zahl, desto größer die möglichen Abstände. Für einen
Mindestabstand addierst du eine feste Zahl dazu.
Tipp 2: Leben
Ein Treffer darf nicht in jedem Bild zählen – sonst sind alle drei Leben in einer
Zwanzigstelsekunde weg. Nach einem Treffer braucht Bugs eine kurze Zeit der
Unverwundbarkeit. this.getTimer("treffer").everyMillis(1500) hilft dabei.