Informatik

Münzen sammeln

Das Ziel

Es gibt etwas zu holen: Münzen, einen Punktestand und einen Ton beim Einsammeln.

So sieht das aus

Wie es gemacht ist

Berührungen

Muenze m = this.getTouchingSprite(Muenze.class);
if (m != null) {
    m.einsammeln();
    this.playSound("muenze");
    spiel.punkten();
}

getTouchingSprite liefert das berührte Objekt zurück – oder null, wenn gerade keines berührt wird. Deshalb die Abfrage: Ohne sie stürzt das Programm bei der ersten Bewegung ab, weil man einsammeln auf einem Nichts aufrufen würde.

null heißt: hier ist kein Objekt. Jede Methode, die ein Objekt zurückgeben kann, kann auch null liefern – und jedes Mal muss man damit rechnen. Der Fehler, das zu vergessen, hat einen eigenen Namen: NullPointerException.

Wer macht was

Die Münze weiß, wie sie verschwindet (einsammeln). Das Spiel weiß, wie gezählt wird (punkten). Bugs stellt nur fest, dass er etwas berührt, und sagt beiden Bescheid. Jede Klasse kümmert sich um ihre eigenen Daten – das ist der Kern der objektorientierten Programmierung.

Die eingesammelte Münze wird nur versteckt. Wandert sie links aus dem Bild, taucht sie rechts auf zufälliger Höhe wieder auf und wird mit show() wieder sichtbar.

Deine Aufgabe

a) Sammle ein paar Münzen ein. Steigt der Punktestand? Wird das Spiel schneller?

b) Bau eine zweite Münzsorte ein, die mehr zählt – zum Beispiel coin_silver mit drei Punkten. Tipp: punkten darf einen Parameter bekommen.

c) Lass die Münzen sich drehen: Sie sollen zwischen zwei Kostümen wechseln.

d) Zeig zusätzlich an, wie viele Münzen es insgesamt schon gab.

Tipp: Punkte mit Parameter
public void punkten(int wert) {
    punkte = punkte + wert;
}

Der Aufruf heißt dann spiel.punkten(3);. Damit die Münze weiß, wie viel sie wert ist, bekommt sie ein Attribut wert, das im Konstruktor gesetzt wird.

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

Zum Herunterladen

Projekt: Münzen sammeln

Selbsttest

Münzen sammeln

Teilbare URL erstellen

Abschnitte auswählen