Ziel des Tutorials

Dieses Tutorial ist eine Praxisübung. Du kannst du dein Verständnis der KlasseKnoten verbessern.


Die Aufgabe

Praktisch angewandt kann man das Knoten-System dann nutzen, wenn mehrere Abläufe (welcher Art auch immer: Bewegungen, Kollisionstests etc.) auf bestimmte Teile einer Grafikansammlung angewandt werden müssen.

Ein einfaches Beispiel ist die Nachbildung unseres Sonnensystems (vereinfacht).


Objekte

Übersicht über das Sonnensystem

Es gibt drei Objekte:

  • Die Sonne
  • Die Erde
  • Der Mond

Diese Objekte lassen sich gut durch Kreise darstellen.


Bewegung im Sonnensystem

Nun können wir verschiedene Bewegungsschemata für die einzelnen Himmelskörper und Himmelskörpergruppen (sprich: die Knoten) aufstellen:

Das ganze Sonnensystem ist in Bewegung


Die Erdumlaufbahn (Erde & Mond) dreht sich um die Sonne


Der Mond dreht sich um die Erde


Tipps zur Umsetzung

Die Erstellung der Himmelskörper als Kreise und das Einordnen in Knoten sollte kein Problem sein. Für die Drehungen schenke ich Dir zwei nette kleine Methoden, für den Fall, dass du noch nicht weißt, wie man Animationen realisiert:


Methode zum Drehen eines Raum-Objektes um ein anderes Raum-Objekt (in die spielsteuernde Klasse kopieren):

/**
 * Dreht ein Objekt immer wieder um ein bestimmtes anderes.
 * @param zentrum Das Raum-Objekt, um das sich das andere Objekt drehen soll.
 * @param drehobjekt Das Objekt, das sich drehen soll
 * @param umlaufzeit Zeit <b>in Millisekunden</b>, die eine Umdrehung dauern soll.
 */
public void dreheUm(Raum zentrum, Raum drehobjekt, int umlaufzeit) {
    animationsManager.kreisAnimation(drehobjekt, zentrum.zentrum(), umlaufzeit);
}


Methode zum Drehen eines Raum-Objektes um einen Fixpunkt (in die spielsteuernde Klasse kopieren):

/**
 * Dreht ein Objekt immer wieder um einen bestimmten Punkt.
 * @param zentrum Das zentrum der Drehung
 * @param drehobjekt Das Objekt, das sich drehen soll
 * @param umlaufzeit Zeit <b>in Millisekunden</b>, die eine Umdrehung dauern soll.
 */
public void dreheUm(Punkt zentrum, Raum drehobjekt, int umlaufzeit) {
    animationsManager.kreisAnimation(drehobjekt, zentrum, umlaufzeit);
}


Mit diesen zwei Methoden kannst Du ganz einfach ein Raum-Objekt um ein anderes (oder einen Fixpunkt) drehen. Denk daran, auch ein Knoten ist ein Raum-Objekt! Du kannst also ohne Probleme die Erdumlaufbahn mit dieser Methode um die Sonne drehen.


Die Lösung

Du findest online ein Beispiel-Projekt, das ein solches Sonnensystem umsetzt.

Viel Spaß bei der Herausforderung. Du kannst das Spiel natürlich noch weitertreiben, zum Beispiel durch:

  • Mehr Himmelskörper (vll. kriegt deine Erde einen zweiten Mond)
  • Einbauen von Interaktivität