Inhaltsverzeichnis

Beispiel 2: Fliegende Rechtecke

Starte das Programm und regle die Geschwindigkeit langsam hoch!

1. Grafikausgabe

Die auf dieser Website verwendete Java-Entwicklungsumgebung beinhaltet eine Grafikbibliothek, mit der bspw. einfach Spiele programmiert werden können. Sie basiert auf dem Open Source Projekt PisiJS, ist aber deutlich einfacher zu handhaben. Für dieses Programmierbeispiel reicht es, zwei Dinge zu kennen:

a) Erzeugen des Grafikbereiches ("Welt")
new World(800, 600);

erzeugt im Ausgabe-Bereich rechts ein kleines „Grafikfenster“. Seine Größe orientiert sich immer an der Größe des Ausgabe-Bereichs. Die Grafik wird dabei immer so transformiert dass die linke obere Ecke die Koordinaten (0, 0) hat, die rechte untere Ecke - im Beispiel oben - die Koordinaten (800, 600). Dass die positive y-Achse nach unten zeigt, die y-Koordinaten also nach unten hin immer größer werden - ist bei Computersystemen üblich.

b) Zeichnen eines Rechtecks

Die Anweisung

new Rectangle(100, 50, 600, 400);

erzeugt ein Rechteck-Objekt und zeichnet es in den Grafikbereich. Das Rechteck ist initial achsenparallel ausgerichtet, wobei die Parameter des Konstruktors new Rectangle(left, top, width, height) folgende Bedeutung haben:

Beispiel

Im folgenden zeichnen wir ein Rechteck auf den Bildschirm, färben es rot und drehen es um 70° gegen den Uhrzeigersinn:

2. Erweitern der Klasse Rectangle

Wir definieren jetzt eine Unterklasse FlyingRectangle der Klasse Rectangle und setzen seine Größe und Position im Konstruktor. Zudem geben wir ihm eine zufällige Farbe:

3. Animation

In der Grafikbibliothek von LearnJ besitzt jedes graphische Objekt eine Methode act(), die vom System 30-mal pro Sekunde aufgerufen wird. Die Idee dazu kommt aus Greenfoot. Wenn wir diese Methode in der Klasse FlyingRectangle implementieren, überschreiben wir damit die gleichnamige Methode der Oberklasse Rectangle, so dass ab jetzt unsere Methode 30-mal pro Sekunde aufgerufen wird. Wir können unser Rechteck so beispielsweise ganz einfach drehen lassen:

4. Fliegen!

Um das Rechteck „fliegen“ zu lassen, muss es jederzeit seine eigene Geschwindigkeit kennen. Wir fügen der Klasse FlyingRectangle daher die Attribute vx und vy hinzu, die Geschwindigkeitskomponenten in x- und y-Richtung. Im Konstruktor initialisieren wir sie mit Zufallswerten.
Jetzt müssen wir das Rechteck in der Methode act() nur noch um vx in x-Richtung und vy in y-Richtung vorwärtsbewegen. Zudem erzeugen wir noch eine Art Gravitation, indem wir zu vy alle 1/30 s den Wert 0.4 addieren.

Bewegungsgleichungen

Position und Geschwindigkeit werden also gemäß folgender Gleichungen 30-mal in der Sekunde neu berechnet: