klassen2:inheritance:flyingrectangle:start
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
— | klassen2:inheritance:flyingrectangle:start [2024/08/31 10:03] (aktuell) – angelegt - Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Beispiel 2: Fliegende Rechtecke ====== | ||
+ | Starte das Programm und regle die Geschwindigkeit langsam hoch! | ||
+ | < | ||
+ | |||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | new World(800, 800); | ||
+ | while(true) { | ||
+ | new FlyingRectangle(); | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | class FlyingRectangle extends Rectangle { | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | super(360, 760 - 40, 80, 80); | ||
+ | setFillColor(Math.round(Math.random() *(256 *256 * 256 - 1)), Math.random()*0.8+0.2); | ||
+ | |||
+ | vx = Math.random() * 10 - 5; | ||
+ | vy = Math.random() * (-20) - 6; | ||
+ | |||
+ | } | ||
+ | |||
+ | | ||
+ | move(vx, vy); | ||
+ | vy = vy + 0.2; | ||
+ | if(getCenterY() > 900) { | ||
+ | | ||
+ | } | ||
+ | } | ||
+ | |||
+ | |||
+ | }</ | ||
+ | |||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== 1. Grafikausgabe ==== | ||
+ | Die auf dieser Website verwendete Java-Entwicklungsumgebung beinhaltet eine Grafikbibliothek, | ||
+ | |||
+ | == a) Erzeugen des Grafikbereiches (" | ||
+ | <code learnj> | ||
+ | new World(800, 600); | ||
+ | </ | ||
+ | erzeugt im Ausgabe-Bereich rechts ein kleines " | ||
+ | == b) Zeichnen eines Rechtecks == | ||
+ | Die Anweisung | ||
+ | <code learnj> | ||
+ | new Rectangle(100, | ||
+ | </ | ||
+ | erzeugt ein Rechteck-Objekt und zeichnet es in den Grafikbereich. Das Rechteck ist initial achsenparallel ausgerichtet, | ||
+ | * (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: | ||
+ | < | ||
+ | |||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | new World(800, 800); | ||
+ | Rectangle r = new Rectangle(50, | ||
+ | r.setFillColor(Color.red); | ||
+ | r.rotate(70); | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== 2. Erweitern der Klasse Rectangle ==== | ||
+ | Wir definieren jetzt eine Unterklasse '' | ||
+ | < | ||
+ | |||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | new World(800, 800); | ||
+ | new FlyingRectangle(); | ||
+ | |||
+ | class FlyingRectangle extends Rectangle { | ||
+ | |||
+ | | ||
+ | // Rufe den Konstruktor der Oberklasse auf und setze Position und Größe: left: 360, top: 720, width: 80, height: 80 | ||
+ | super(360, 720, 80, 80); | ||
+ | | ||
+ | // setze eine zufällige Farbe und Durchsichtigkeit | ||
+ | setFillColor(Math.round(Math.random() *(256 *256 * 256 - 1)), Math.random()*0.8+0.2); | ||
+ | } | ||
+ | |||
+ | }</ | ||
+ | |||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | ==== 3. Animation ==== | ||
+ | In der Grafikbibliothek von LearnJ besitzt jedes graphische Objekt eine Methode '' | ||
+ | |||
+ | < | ||
+ | |||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | new World(800, 800); | ||
+ | new FlyingRectangle(); | ||
+ | |||
+ | class FlyingRectangle extends Rectangle { | ||
+ | |||
+ | | ||
+ | // Rufe den Konstruktor der Oberklasse auf und setze Position und Größe: left: 360, top: 720, width: 80, height: 80 | ||
+ | super(360, 720, 80, 80); | ||
+ | | ||
+ | // setze eine zufällige Farbe und Durchsichtigkeit | ||
+ | setFillColor(Math.round(Math.random() *(256 *256 * 256 - 1)), Math.random()*0.8+0.2); | ||
+ | } | ||
+ | |||
+ | | ||
+ | rotate(4); | ||
+ | } | ||
+ | |||
+ | }</ | ||
+ | |||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | ==== 4. Fliegen! ==== | ||
+ | Um das Rechteck " | ||
+ | Jetzt müssen wir das Rechteck in der Methode '' | ||
+ | |||
+ | === Bewegungsgleichungen === | ||
+ | Position und Geschwindigkeit werden also gemäß folgender Gleichungen 30-mal in der Sekunde neu berechnet: | ||
+ | {{ : | ||
+ | |||
+ | < | ||
+ | |||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | new World(800, 800); | ||
+ | while(true) { | ||
+ | new FlyingRectangle(); | ||
+ | } | ||
+ | |||
+ | class FlyingRectangle extends Rectangle { | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | super(360, 760 - 40, 80, 80); | ||
+ | setFillColor(Math.round(Math.random() *(256 *256 * 256 - 1)), Math.random()*0.8+0.2); | ||
+ | |||
+ | vx = Math.random() * 10 - 5; // Anfangsgeschwindigkeit in x-Richtung | ||
+ | vy = Math.random() * (-20) - 6; // Anfangsgeschwindigkeit in y-Richtung | ||
+ | |||
+ | } | ||
+ | |||
+ | // Die folgende Methode act wird vom System 30-mal pro Sekunde aufgerufen: | ||
+ | | ||
+ | move(vx, vy); // Vorwärtsbewegen des Rechtecks | ||
+ | vy = vy + 0.4; // Gravitation | ||
+ | if(getCenterY() > 900) { | ||
+ | | ||
+ | } | ||
+ | } | ||
+ | }</ | ||
+ | |||
+ | </ | ||
+ | |||
+ | </ | ||
klassen2/inheritance/flyingrectangle/start.txt · Zuletzt geändert: 2024/08/31 10:03 von 127.0.0.1