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:
- (left, top): Koordinaten der linken oberen Ecke
- width, heigth: Breite und Höhe des Rechtecks
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.