Zur Hauptnavigation springen [Alt]+[0] Zum Seiteninhalt springen [Alt]+[1]

Aufgaben

  1. Lies dir das Blatt „Infos zu Methoden in Java“ durch, wenn du es noch nicht bei den Übungen zur Zählschleife gemacht hast.

Bei der optischen Täuschung von oben möchten wir einfach etwas ausführen lassen (das Zeichnen eines Quadrates mit zwei Punkten), es gibt also keinen Rückgabewert. Um ein Quadrat zeichnen zu können, brauchen wir die Position (Koordinaten der linken oberen Ecke), die Hintergrundfarbe und die Information, ob die Kreise links oder rechts liegen.

Die benötigten Typen hast du schon kennen gelernt: int für eine ganze Zahl (auch Farben werden durch ganze Zahlen dargestellt) und boolean für die Wahrheitswerte true und false.

Der Rahmen unserer Methode sieht also folgendermaßen aus:

Rahmen der Methode

(Die Variablen werden in der Entwicklungsumgebung übrigens unterkringelt, weil sie in der Methode noch nicht genutzt wurden.)

  1. Speichere eine neue Datei unter „wellen1“ ab.

  2. Schreibe dann zunächst den Rahmen der setup()-Methode.

  3. Schreibe den Rahmen der eigenen Methode „zeichneQuadrat“ (s.o.).

  4. Noch sind beide Methoden leer.

  5. Überlege dir mit deiner Sitznachbarin / deinem Sitznachbarn, was in der Methode „zeichneQuadrat“ passieren soll.

Habt ihr es herausgefunden? Dann holt euch das nächste Blatt.

Es soll ein Quadrat an der vorgegebenen Position mit der vorgegebenen Farbe (weiß oder schwarz) gezeichnet werden.

In dem Quadrat sollen zwei kleine Kreise in der jeweils anderen Farbe entweder links oder rechts gezeichnet werden. Je nachdem, ob true (für links) oder false (für rechts) übergeben wird.

Um ein Quadrat zeichnen zu können, fehlt uns noch die Seitenlänge.

  1. Deklariert und initialisiert eine globale Variable s für die Seitenlänge.

Euer Code sollte bisher etwa so aussehen:

Code

Bevor wir in der Methode zeichneQuadrat() ein Quadrat zeichnen lassen, müssen wir die Füllfarbe festlegen.

Dann wird die Methode für das Zeichnen eines Rechtecks mit den nötigen Werten aufgerufen.

Code

  1. Ergänze dein Programm entsprechend.

Jetzt fehlen noch die beiden kleinen Kreise auf der linken oder rechten Seite. Auf welcher Seite sie gezeichnet werden sollen, legt der Übergabeparameter links fest. Beim Aufruf der Methode wird entweder true oder false übergeben. Welche Farbe sie haben, hängt von der Farbe des Quadrates ab.

  1. Ergänze den folgenden Satz für unsere Abbildung: „Falls die Farbe des Quadrates weiß ist, ist die Füllfarbe der Kreise …, sonst … .“

  2. Ergänze den folgenden Satz: „Falls die Variable links den Wert true besitzt, dann …, sonst … .“

  3. Welche Kontrollstruktur brauchst du hier jeweils?

Wir brauchen eine Verzweigung.

Zur Erinnerung:

Abbildung aus MIT App Inventor

Abbildung aus MIT App Inventor von Massachusetts Institute of Technology [CC-BY-SA-3.0]

Falls die Bedingung erfüllt ist (hier: Variable links besitzt den Wahrheitswert true), wird ausgeführt, was hinter then steht, falls nicht, das was hinter else steht.

Verzweigung

Eine Verzweigung in Java sieht folgendermaßen aus:

Verzweigung

In unserem Fall:

Code

oder

Code

Achtung

Für eine Zuweisung genügt ein einfaches Gleichheitszeichen. Möchte man in der Bedingung aber auf Gleichheit überprüfen wie hier, so muss man zwei Gleichheitszeichen schreiben.

  1. Schreibe zunächst in deine Methode zeichneQuadrat(…) die erste Verzweigung zur Farbauswahl der kleinen Kreise. Vergleiche, wenn nötig, mit der ausliegenden Lösung.

  2. Für die zweite Verzweigung, die sich um das Zeichnen der Kreise kümmern soll, ist eine Skizze (auf Papier) sehr hilfreich. Fertige eine solche Skizze eines Quadrates mit zwei kleinen Kreisen innerhalb an. Überlege dir dabei, welche Werte die Methode ellipse() jeweils übergeben bekommen muss. Nutze des Modus ellipseMode(CORNERS)1

  3. Schreibe jetzt mithilfe deiner Skizze die Verzweigung, in der die beiden kleinen Kreise gezeichnet werden. (In der vorliegenden Lösung wurde als Kreisdurchmesser ein Viertel der Seitenlänge des Quadrates gewählt und der Einfachheit halber wurden die Kreise zunächst direkt an den Quadratrand gesetzt.)

  4. Teste dein Programm, indem du in der setup()-Methode zunächst die Größe des Fensters (z.B. 600 auf 400 Pixel) einstellst und dann die Methode „zeichneQuadrat()“ mit verschiedenen Werten aufrufst.

  5. Vergleiche deinen Programmcode mit der ausliegenden Lösung.

  6. Schreibe jetzt den Rahmen der Methode alleQuadrate(), in der dann die optische Täuschung gezeichnet werden soll.

  7. Nutze eine Zählschleife, um die erste Reihe von Quadraten zu zeichnen. Achte darauf, dass von Quadrat zu Quadrat die Füllfarbe wechselt, die Position der Kreise aber gleich bleibt. Nutze dazu eine Variable aktuellefarbe vom Typ int.

  8. Programmiere auch das Zeichnen der zweiten, dritten und vierten Reihe.

  9. Vergleiche mit der ausliegenden Lösung.

  10. ***** Hast du eine Idee, wie wir alle Reihen mithilfe einer verschachtelten Zählschleife zeichnen lassen können? Besprich dich mit deiner Sitznachbarin / deinem Sitznachbarn und probiert eure Ideen aus.

 

Weitere Aufgaben:

  1. Programmiert das Zeichnen der grünen Trennlinien zwischen den Reihen.

  2. Führt eine Variable a für den Abstand der Kreise zum Quadratrand ein und sucht einen Wert, für den die optische Täuschung am wirkungsvollsten ist.

  3. Verändert euer Programm so, dass die optische Täuschung Abstand zu den Rändern hat.

  4. Wir haben mehrere Male den Wechsel der Farbe von schwarz auf weiß und umgekehrt benutzt. Schreibe eine Methode „farbwechsel“, der man die Farbe schwarz (0) oder weiß (255) übergeben kann und die die jeweils andere Farbe zurückgibt.

  5. Nutze die Methode überall dort in deinem Programm, wo ein Farbwechsel stattfindet.

  6. Teste dein Programm und vergleiche dann mit der ausliegenden Lösung.

 

1 ellipse(x,y,b,h) – (x1|y1) linke obere u. (x2|y2) rechte untere Ecke des umschließenden Rechtecks

 

 

Weitere optische Täuschungen: Herunterladen [odt][541 KB]

Weitere optische Täuschungen: Herunterladen [pdf][526 KB]

 

Weiter zu Mögliche Lösungen