Skip to content

L09_EntenteichClasses

Jirka Dell'Oro-Friedl edited this page May 7, 2024 · 7 revisions

Aufgabe

Über die folgenden Lektionen hinweg soll ein animiertes und interaktives Bild entstehen, welches eine belebte Szene darstellt, in der man Enten und andere Wasservögel am Teich beobachten und ihr Verhalten studieren kann. Dabei noch weitere unbelebte Objekte, im Vordergrund eine Wiese, auf der die Enten laufen und fressen, im Hintergrund etwas Landschaft mit Bäumen und vielleicht Häusern, in der Ferne ein paar Wolken etc. Zentral natürlich der Teich, auf dem die Enten schwimmen und auch so weit untertauchen, dass nur die Schwanzfedern noch herausragen. Später sollen die Bildelemente auch animiert werden, insbesondere natürlich die Vögel, und zum Schluss die Betrachteris mit dem Bild auch interagieren können.

Teil 1

Zunächst soll lediglich ein unbewegtes Bild von einem objektorientierten Programm gezeichnet werden. Im Hintergrund sollen sich der Himmel mit Wolken und Sonne, Berge, Bäume und/oder andere Objekte befinden, im Vordergrund der Landeplatz. Dazu ist eine Menge (mindestens 10) von Vögeln unterschiedlicher Art und Kolorierung in unterschiedlichen Situationen (vgl. oben) zu sehen. Als Letztes sollen noch ein paar Fluginsekten ganz in den Vordergrund gestreut werden. Identifiziere Motive, für die es sich anbietet Klassen anzulegen, insbesondere solche, die später animiert oder interaktiv werden sollen.

Die Größe des Bildes soll für dein Smartphone optimiert sein, sich per CSS aber auch an andere Bildschirme anpassen.

Konzeption

Erstelle eine Konzeptzeichnung für das Gesamtbild, aus der sich schon viele Maße in Pixel entnehmen lassen. Erstelle weiterhin Detailzeichnungen für die Motive, für die Du Klassen entwirfst, und markiere auch deren lokalen Ursprungskoordinaten. Erstelle für jede Klasse ein kleines Blockdiagramm, in dem Du den Namen der Klasse, alle erforderlichen Attribute mit Datentypen und die Methoden mit Typ des Rückgabewertes und ggf. der Parameterliste einträgst. Allerdings werden die Parameterlisten jetzt zum größten Teil sehr klein, da die Objektmethoden direkt auf die Objekteigenschaften zugreifen können! Achte darauf, dass eine Klasse nur eine Instanz und nicht ganze Gruppen beschreibt.

Produktion

Implementiere die Klassen in eigenen Dateien. Implementiere die Methoden zum Zeichnen als Objektmethoden in den Klassen. Das Hauptprogramm soll den Hintergrund zeichnen, dann Objekte der Klassen erstellen und schließlich deren Zeichenmethoden aufrufen.

Teil 2

Belebe deinen Ententeich durch Animation!
Die Insekten sollen einfach zufällig über das Bild fliegen. Einige Vögel schwimmen auf dem Teich herum, manche tauchen ab und auf, andere laufen auf dem Boden herum und so weiter. Zu jeder Zeit sollen mindesten zehn Vögel zu sehen sein, es können aber ohne große Programmänderung auch mehr werden.

Konzeption

Erstelle Aktivitätsdiagramme für die Bewegungsmethoden der Objekte!

Produktion

Implementiere die Methoden zum Bewegen als Objektmethoden in den Klassen. Das Hauptprogramm soll nun bei Empfang eines Zeitsignals den Hintergrund restaurieren, dann die Bewegungsmethoden aller beweglichen Objekte aufrufen sowie deren Zeichenmethoden. Spätestens jetzt sollten die Objekte in Arrays gespeichert sein, sodass das Hauptprogramm dabei mit Hilfe von Schleifen darüber iterieren kann.

Optimierung

Der Hintergrund mit stillstehenden Objekten soll nur einmal bei Programmstart gezeichnet und dann gespeichert werden (siehe Hinweise unten). Hiermit kannst Du bei jedem Animationsframe den Hintergrund restaurieren ohne dass jedesmal aufwendige Zeichenbefehle abgearbeitet werden müssen nur um wieder den gleichen Hintergrund zu erzeugen.

Recherchehinweise

  • getImageData
  • putImageData
Clone this wiki locally