Skip to content

L11_VogelhausAdvanced

Jirka Dell'Oro-Friedl edited this page Jan 17, 2023 · 1 revision

Aufgabe

Spendiere deinen Vögeln nun ein wenig mehr Intelligenz und sinnvolles Verhalten. Jeder Vogel, gleich welcher Art, soll zufällig ins Bild hineinfliegen, auf dem Boden unter dem Vogelhaus oder am Vogelhaus landen, dort etwas herumpicken und sich dann ein neues Anflugziel suchen, wo er wieder etwas verweilt und so weiter. Anflugziele können also das Vogelhaus sein, der Boden unter dem Vogelhaus, Orte außerhalb des Bildes oder weitere, die Du selbst wählst, wie zum Beispiel die Nase des Schneemanns.

Ein Nutzeri soll nun zudem mit den Vögeln interagieren können. Per Klick oder Touch kann es Vögel vom Himmel holen, wenn es gut trifft. Die gleiche Interaktion auf dem Hintergrund aber erzeugt einen neuen Vogel an der Position, der sofort seinem üblichen Vogelgeschäft nachgeht.

Konzeption

Überlege, welche Informationen und Fähigkeiten ein Vogel nun zusätzlich braucht und was er sich merken muss. Auf was muss er reagieren? Wie kommt er von einem Punkt zum anderen, wie merkt er, dass er angekommen ist? Wann und warum fliegt er wieder weg? Erfasse dies in einer Erweiterung deines Klassendiagramms und entwirf die Algorithmen in den Erweiterungen deiner Aktivitätsdiagramme.

Produktion

Erweitere deinen Code entsprechend. Implementiere dabei auch die passenden Sichtbarkeitsmodifikatoren sowohl bei den neuen, wie auch den bestehenden Programmteilen. Verwende, wo geeignet, Aufzählungstypen. die Schlüsselworte abstract und static sowie Zugriffsfunktionen.

Hinweis

Halte dich nicht lange mit dem gezielten Flug zu einer Position auf. Eine sehr simple Methode ist es, bei jeder Bildwiederholung durch Subtraktion der aktuellen Position von der Zielposition einen Vektor zu berechnen, und dann die aktuelle Position um einen Bruchteil dieses Vektors zu verändern. Das ergibt eine schon fast organisch wirkende Bewegung, da das Objekt seine Startposition mit großer Geschwindigkeit verlässt und seine Zielposition stetig langsamer werdend ansteuert. Beachte aber, dass es die Zielposition nie ganz erreicht, da es sich immer nur um einen Bruchteil des Weges dorthin fortbewegt. Vergleiche Achillesparadoxon

Clone this wiki locally