Lernpfad:Objektorientierte Programmierung mit Processing/4: Unterschied zwischen den Versionen

keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
{{NNavigation}}
{{NNavigation}}


Die Sonne scheint. Nun wird es Zeit die Erde zu "erschaffen".
Die Sonne scheint. Nun wird es Zeit, die Erde zu "erschaffen".


Wir erstellen eine neue Klasse <code>Planet</code>, mit der wir später auch weitere Planeten anlegen können. Welche Eigenschaften braucht ein Planet? Seine Position ist abhängig von dem Stern (der Sonne), um die er kreist. Daher legen wir eine Entfernung und eine Geschwindigkeit für den Planeten fest, mit der er um die Sonne kreist. Außerdem kennt er das <code>Sun</code>-Objekt, dass in seinem Rotationszentrum liegt.
Wir erstellen eine neue Klasse <code>Planet</code>, mit der wir später auch weitere Planeten anlegen können. Welche Eigenschaften braucht ein Planet? Seine Position ist abhängig von dem Stern (der Sonne), um die er kreist. Daher legen wir eine Entfernung und eine Geschwindigkeit für den Planeten fest, mit der er um die Sonne kreist. Außerdem kennt er das <code>Sun</code>-Objekt, das in seinem Rotationszentrum liegt.


{{Aufgabe:Start}}
{{Aufgabe:Start|Icon=Processing_icon.png}}
# Erstelle einen neuen Tab / eine neue Klasse "Planet".
# Erstelle einen neuen Tab "Planet".
# Erstelle im neuen Tab eine Klasse <code>Planet</code> mit den Eigenschaften <code>String name</code>, <code>float distance</code>, <code>float angle</code>, <code>float speed</code>, <code>float x</code> und <code>float y</code>.
# Erstelle im neuen Tab eine Klasse <code>Planet</code> mit den Eigenschaften <code>String name</code>, <code>float distance</code>, <code>float angle</code>, <code>float speed</code>, <code>float x</code> und <code>float y</code>.
# Erstelle einen ''Konstruktor'' für die Klasse, der als Parameter den Namen, die Sonne, die Entfernung und die Geschwindigkeit übergeben bekommt. Die Eigenschaften <code>angle</code>, <code>x</code> und <code>y</code> werden zunächst auf <code>0.0</code> gesetzt.
# Erstelle einen ''Konstruktor'' für die Klasse, der als Parameter den Namen, die Sonne, die Entfernung und die Geschwindigkeit übergeben bekommt. Die Eigenschaften <code>angle</code>, <code>x</code> und <code>y</code> werden zunächst auf <code>0.0</code> gesetzt.
Zeile 64: Zeile 64:
{{Lösung:End}}
{{Lösung:End}}


Die Position des Planeten wird relativ zur Sonne bestimmt. (Unsere Sonne ist bei <math>(0|0)</math>, aber ggf. gibt es andere Sonnen, die andere Koordinaten haben.) Die berechnete Position aus Entfernung und Rotationswinkel muss daher um die Position der Sonne verschoben werden (auf die Du z.B. mit <code>sun.getX()</code> zugreifen kannst).
Die Position des Planeten wird relativ zur Sonne bestimmt. (Unsere Sonne ist bei <math>(0|0)</math>, aber ggf. gibt es andere Sonnen, die andere Koordinaten haben.) Die berechnete Position aus Entfernung und Rotationswinkel muss daher um die Position der Sonne verschoben werden (auf die du z.B. mit <code>sun.getX()</code> zugreifen kannst).


{{Aufgabe:Start}}
{{Aufgabe:Start|Icon=Processing_icon.png}}
# Implementiere ''Getter'' für <code>x</code> und <code>y</code>, die die absolute Position des Planeten berechnen und zurückgeben.
# Implementiere ''Getter'' für <code>x</code> und <code>y</code>, die ''die absolute Position'' (relativ zur Sonne) des Planeten berechnen und zurückgeben.
# Implementiere nun (analog zu <code>Sun</code>) eine <code>draw</code>-Methode, die unseren (blauen) Planeten an seine absoluten Koordinaten zeichnet.
# Implementiere nun (analog zu <code>Sun</code>) eine <code>draw</code>-Methode, die unseren (blauen) Planeten an seine absoluten Koordinaten zeichnet. (Tipp: In der [https://processing.org/reference/fill_.html Referenz zum <code>fill</code>-Befehl] wird erklärt, wie du Farben nutzen kannst.)
{{Aufgabe:End}}
{{Aufgabe:End}}
{{Lösung:Start|Lösung zu 1}}
{{Lösung:Start|Lösung zu 1}}
Zeile 90: Zeile 90:
</syntaxhighlight>
</syntaxhighlight>
{{Lösung:End}}
{{Lösung:End}}
Jetzt müssen wir nur noch das Hauptprogramm so modifizieren, dass der Planet angezeigt wird:
<syntaxhighlight lang="Java">
Sun sun = new Sun();
Planet earth = new Planet("Earth", sun, 120.0, -.01);
void setup() {
  size(800, 600);
}
void draw() {
  // width und height sind die Breite / Höhe des Programmfensters.
  // Du könntest hier auch einfach 400 und 300 benutzen.
  translate(width/2, height/2);
  background(0);
 
  sun.draw();
  earth.draw();
}
</syntaxhighlight>
Oh nein! Unser schöner Planet ist in der Sonne verglüht. Wir sollten schnell die Position der Erde anpassen, damit das nicht wieder passiert.
8.581

Bearbeitungen