Zähler für Punkte, Kollisionen etc. in Greenfoot 3 bauen

Bei fast allen Spielen stoßen Objekte zusammen: das Wurfgeschoss mit dem Gegner, der Feuerball mit Ihnen (wenn Sie nicht rechtzeitig ausweichen), die Spielfigur mit der Goldmünze usw. Oft spielt der Punktestand eine Rolle: Wie viel Tore hat man geschossen, wie viele Powerups gegessen, wie viele Gegner hat man getroffen oder wie viele Fässer sind einem auf den Kopf gefallen. Hat man 10.000 Punkte erreicht oder 100 Goldmünzen eingesammelt, ist das Spiel gewonnen.

Einfacher Zähler

Legen wir uns zuerst eine Variable an, mit der wir die Punkte, die Zusammenstöße o.ä. zählen. Da wir auf diesen Wert gerne in der gesamten Klasse zugreifen möchten, deklarieren wir ein Attribut. Also drücken wir oben in „Fields“ auf die Taste v (für Variable) und schreiben:

private int anzahlPunkte = 0

oder

private int gesammelteGoldmuenzen = 0

Grundsätzlich können Sie fast immer eine isTouching(…)-Abfrage verwenden, etwa in der act()-Methode Ihrer Spielfigur:

if(this.isTouching(Goldmuenze.class))
    this.gesammelteGoldmuenzen = this.gesammelteGoldmuenzen + 1
    this.removeTouching(Goldmuenze.class)

Erklärung:

  • Wenn this (also das aktuelle Objekt, in dessen Klasse Sie gerade programmieren, in unserem Beispiel Ihre Spielfigur) ein Objekt einer bestimmten Klasse berührt (z.B. ein Objekt der Klasse Goldmuenze), dann geschieht Folgendes:
  • Der Wert des Attributs gesammelteGoldmuenzen wird um 1 erhöht. Nach 10 gesammelten Goldmuenzen ist der Wert von gesammelteGoldmuenzen als 10 (wer hätte es gedacht).
  • Die Goldmuenze verschwindet von der Welt. Die Actor-Methode removeTouching(Klassenname.class) entfernt ein Objekt der angegebenen Klasse, das gerade berührt wird. this (die Spielfigur) entfernt also die Goldmünze, die sie gerade berührt.

Achtung: Wenn Sie die letzte Zeile (removeTouching …) weglassen, dann kommt es zu einem unerwünschten Effekt: Da die act()-Methode wieder und wieder durchläuft, wird Ihre Spielfigur die Goldmünze einige act()-Zyklen lang berühren, selbst wenn sie sich schnell bewegt. Einmal über eine Goldmünze fahren führt also dazu, dass der Wert von gesammelteGoldmuenzen sich gleich mal um 10 oder noch mehr erhöht.

PDF erzeugen