(Physik der Engine)
(Physik der Engine)
Zeile 41: Zeile 41:
  
 
Du kannst Objekte der Engine Alpha mit wenigen Aktionen einer internen Physik unterwerfen. Sie unterliegen dann wahlweise der Schwerkraft oder prallen voneinander ab. Hierzu werden von einer gemeinsamen Oberklasse namens <code>EduActor</code> diverse Methoden zur Verfügung gestellt, über die dann alle Objekte verfügen. Wir verwenden hier beispielhaft:
 
Du kannst Objekte der Engine Alpha mit wenigen Aktionen einer internen Physik unterwerfen. Sie unterliegen dann wahlweise der Schwerkraft oder prallen voneinander ab. Hierzu werden von einer gemeinsamen Oberklasse namens <code>EduActor</code> diverse Methoden zur Verfügung gestellt, über die dann alle Objekte verfügen. Wir verwenden hier beispielhaft:
* <code>macheDynamisch()</code> : Unterwirft das Objekt der Schwerkraft
+
* <code>macheDynamisch()</code> : Unterwirft das Objekt der Schwerkraft.
 
* <code>macheStatisch()</code> : Lässt das Objekt wie eine "unendlich schwere Mauer" wirken. Dynamische Objekte prallen davon ab.
 
* <code>macheStatisch()</code> : Lässt das Objekt wie eine "unendlich schwere Mauer" wirken. Dynamische Objekte prallen davon ab.
 
* <code>macheSensor()</code> : Frisch erzeugte Objeke sind Senoren. Damit kann man "dynamisch" oder "statisch" wieder rückgängig machen.
 
* <code>macheSensor()</code> : Frisch erzeugte Objeke sind Senoren. Damit kann man "dynamisch" oder "statisch" wieder rückgängig machen.
* <code>setzeElastizitaet(double elastizitaet)</code> : setzt die Elastizität der Objekte. Sie verhalten sich dann wie "Gummibälle"
+
* <code>setzeElastizitaet(double elastizitaet)</code> : setzt die Elastizität der Objekte. Sie verhalten sich dann wie "Gummibälle".
* <code>setzeReibung(double reibungsKoeffizient)</code>
+
* <code>setzeReibung(double reibungsKoeffizient)</code> : Setzt den Reibungskoeffizienten der Objekte. Damit kann man "rutschen" oder "gleiten" beeinflussen.
 +
 
 +
=== Dynamischer Ball ===
 +
 
 +
Erzeuge ein Objekt der Klasse <code>RECHTECK</code> und nenne es Boden. Seine Breite soll 20 und seine Höhe 0.5 sein. Den Mittelpunkt setzt du auf (0|-8).
 +
Erzeuge außerdem ein Objekt der Klasse <code>KREIS</code> und nenne es Ball. Mache es dynamisch indem du seine Methode macheDynamisch() aufrufst.
 +
In BlueJ machst du eine Rechtsklick auf die rote Objektkarte und geht zu "geerbt von EduActor" und bei Bedarf weiter über "weitere Methoden" bis du sie findest.
 +
Der Ball unterliegt nun der Schwerkraft und fällt nach unten. Aber er ignoriert noch den Boden.

Version vom 5. Januar 2020, 17:45 Uhr


Dies ist ein Tutorial für die Edu-Variante der Engine Alpha 4.x. Eine Übersicht aller Edu-Tutorials siehst du hier.

Inhalt

In diesem Tutorial:

  • Erstellst du Grafik-Objekte von vorgegebenen Klassen
  • Veränderst du den Zustand der Objekte durch Methoden-Aufrufe

Zeichnen im Grafikfenster

Das Koordinatensystem ist mittig zentriert. Die x-Achse zeigt nach rechts und die y-Achse nach oben, so wie du es aus dem Mathematikunterricht kennst. Stelle dir das Grafikfenster vor wie ein zweidimensionaler Blick in die Welt. Stelle dir für 1 Längeneinheit immer 1 Meter vor, dann wird später auch die Physik funktionieren, wie du es vom Phsikunterricht her kennst :-)

in BlueJ interaktiv erstelltes Haus

Koordinatensystem zeigen oder verbergen

Das Koordinatensystem des Grafikfensters kann angezeigt oder ausgeblendet werden. Hierfür stellt die Klasse SPIEL eine Methode zeigeKoordinatensystem(boolean zeigen) zur Verfügung. rufe sie auf und übergib ihr den Wert true um das Ko-Sy zu zeigen. Übergib ihr den Wert false und das Ko-Sy wird verschwinden. true und false müssen klein geschrieben werden und stehen NICHT in Anführungszeichen geschreiben.

Wand

Erstelle in deiner IDE interaktiv ein Objekt der Klasse RECHTECK und nenne es 'Wand': In BlueJ klickst du dazu mit der rechten Maustaste auf die Klassenkarte von RECHTECK und wählst new RECHTECK(). Rufe interaktiv auf dem Objekt entsprechende Methoden auf, so dass die Wand größer wird, weiß ist und in der unteren Mitte des Grafikfensters liegt: In BlueJ klickst du mit der rechten Maustaste auf die rote Objektkarte des Objekts und wählst geeignete Methoden aus. Beachte bei eventuell nötigen Eingaben Texte (anders als Zahlen) in Anführungszeichen gesetzt werden müssen. Kommazahlen haben einen Dezimalpunkt (kein Komma).

Dach

Erstelle nun ein neues Objekt der Klasse DREIECK und nenne es Dach. Gelingt es dir, das Dach auf das Haus zu setzen und rot zu färben? Suche nach geeigneten Methoden ...

Anregung zum Experimentieren

  • Zeichne in dein Haus noch eine Türe und ein Fenster.
  • Stelle neben das Haus noch einen Baum.

Physik der Engine

Du kannst Objekte der Engine Alpha mit wenigen Aktionen einer internen Physik unterwerfen. Sie unterliegen dann wahlweise der Schwerkraft oder prallen voneinander ab. Hierzu werden von einer gemeinsamen Oberklasse namens EduActor diverse Methoden zur Verfügung gestellt, über die dann alle Objekte verfügen. Wir verwenden hier beispielhaft:

  • macheDynamisch() : Unterwirft das Objekt der Schwerkraft.
  • macheStatisch() : Lässt das Objekt wie eine "unendlich schwere Mauer" wirken. Dynamische Objekte prallen davon ab.
  • macheSensor() : Frisch erzeugte Objeke sind Senoren. Damit kann man "dynamisch" oder "statisch" wieder rückgängig machen.
  • setzeElastizitaet(double elastizitaet) : setzt die Elastizität der Objekte. Sie verhalten sich dann wie "Gummibälle".
  • setzeReibung(double reibungsKoeffizient) : Setzt den Reibungskoeffizienten der Objekte. Damit kann man "rutschen" oder "gleiten" beeinflussen.

Dynamischer Ball

Erzeuge ein Objekt der Klasse RECHTECK und nenne es Boden. Seine Breite soll 20 und seine Höhe 0.5 sein. Den Mittelpunkt setzt du auf (0|-8). Erzeuge außerdem ein Objekt der Klasse KREIS und nenne es Ball. Mache es dynamisch indem du seine Methode macheDynamisch() aufrufst. In BlueJ machst du eine Rechtsklick auf die rote Objektkarte und geht zu "geerbt von EduActor" und bei Bedarf weiter über "weitere Methoden" bis du sie findest. Der Ball unterliegt nun der Schwerkraft und fällt nach unten. Aber er ignoriert noch den Boden.