Benutzer-Werkzeuge

Webseiten-Werkzeuge


api:documentation:spiele:collision

Dies ist eine alte Version des Dokuments!


Kollisionserkennung

Um zu erkennen, ob ein graphisches Objekt A mit einem anderen graphischen Objekt einer bestimmten Art oder aus einer vorgegebenen Liste kollidiert, müssen letzere Objekte in einem Array, einer Liste, einer Group oder ähnlichem gespeichert sein und ein Attribut von A auf dieses Array/diese Liste/diese Group zeigen. Da diese Form der Aggregation oft erst spät im Unterricht thematisiert wird, aber trotzdem wünschenswert ist, schon früh ansprechende Spiele oder Beispielprogramme zu erstellen, unterstützt die Online-IDE verschiedene Konzepte der Kollisionserkennung, die im Folgenden dargestellt werden.

collidesWith(Shape otherShape)

Falls Referenzen a, b der Objekte zur Verfügung stehen, deren Kollision überprüft werden soll, kann einfach a.collidesWith(b) ausgewertet werden.

Tipp:
a und/oder b können auch Referenzen auf Group-Objekte sein, die wiederum viele andere Objekte enthalten.

T[] getCollidingShapes(Group<T> g)

Fortgeschrittene Schüler/-innen werden die graphischen Objekte sicher zu Gruppen kombinieren, z.B.

Group<Sprite> enemies = new Group<>();
Group<Circle> stars = new Group<>();
// usw. ...

Die Methode a.getCollidingShapes(Group<T> g) prüft die Kollision von a mit jedem einzelnen graphischen Objekt von g und gibt ein Array aller Objekte aus g zurück, die mit a kollidieren.

Tipp:
Ist ein Objekt o in einer Group g enthalten und wird o.destroy aufgerufen, so meldet o das vor seinem „Ableben“ an g, was zur Folge hat, dass o automatisch aus g entfernt wird. Das funktioniert aber nur mit Group, nicht bspw. mit ArrayList.

collidesWithAnyShape()

collidesWithFillColor

getFirstCollidingShape

getFirstCollidingSprite(int imageIndex)

api/documentation/spiele/collision.1769605291.txt.gz · Zuletzt geändert: von martin