(letzte Änderung an dieser Seite: 09.06.2018)
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.
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:
gesammelteGoldmuenzen
wird um 1 erhöht. Nach 10 gesammelten Goldmuenzen ist der Wert von gesammelteGoldmuenzen
als 10 (wer hätte es gedacht).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.