Turtle-Grafik mit Java

Forschungsprojekt PHBern  
HomeOnline-Editor startenDruckenAndroid TurtlegrafikJava-Online

if - else - Struktur (Selektion)


Programmverzweigungen auf Grund von bestimmten Bedingungen gehören zu den Grundstrukturen jeder Programmiersprache. Die Anweisungen nach if werden nur dann ausgeführt, wenn die Bedingung wahr ist, sonst werden die Anweisungen nach else ausgeführt. Im if-Ausdruck werden üblicherweise die Vergleichsoperatoren >, >= , < , <= , == , != verwendet.

Im ersten Beispiel werden mit Hilfe einer for-Schleife 20 Stufen gezeichnet. Die Farbe der Stufen wird mit einer if-else-Struktur bestimmt. Ist die Stufenzahl gerade, wird eine rote Stiftfarbe gewählt, sonst eine grüne.

Beispiel zeigen

Beispiel im Online-Editor bearbeiten

 

//Tu5.java

import ch.aplu.turtle.*;
import java.awt.Color;

class Tu5
{
  Turtle joe = new Turtle();

  Tu5()
  {
    joe.setPos(-200-200);
    joe.setLineWidth(5);
    for (int = 0; i < 10; i++)
    {
      if (i % == 0)
        joe.setPenColor(Color.red);
      else
        joe.setPenColor(Color.green);  
      
      joe.fd(40).rt(90).fd(40).lt(90);
    }
  }

  public static void main(String[] args)
  {
    new Tu5();
  }
}
 

Erklärungen zum Programmcode:
setPos(-200, -200)
Die Turtle wird an die Position mit der x-Koordinate - 200 und der y-Koordinate - 200 gesetzt
setLineWidth(5)
Die Strichdicke wird auf 5 gesetzt. Standardwert ist 1

if (i % 2 == 0)

Überprüft, ob eine Zahl gerade oder ungerade ist. % ist die sogenannte Modulooperation. Diese gibt den Rest nach der Ganzzahldivision an. Wenn der Rest nach der Division durch 2 gleich 0 ist, ist die Zahl gerade, sonst ungerade

joe.fd(20).rt(90).fd(20).lt(90)

Zur Abkürzung können mehrere Turtlemethoden verkettet hintereinander aufgerufen werden


if - Struktur

Oft ist der else-Teil überflüssig Das Programm verzweigt in den if-Block, falls die Bedingung erfüllt ist.

In diesem Beispiel bewegt sich die Turtle in einer Wiederholstruktur vorwärts und dreht um 90° nach rechts. Dabei wird die Schrittlänge nach jedem Schleifendurchgang um 2 vergrössert. Falls die die Schrittlänge gleich 140 ist, wechselt die Stiftfarbe auf grün. Die aktuelle Schrittlänge kann in der Statusbar ausgeschrieben werden.

Beispiel zeigen

Beispiel im Online-Editor bearbeiten


 

//Tu6.java

import ch.aplu.turtle.*;
import java.awt.Color;

class Tu6
{
  Turtle = new Turtle();

  Tu6()
  {
    t.addStatusBar(20);
    t.speed(-1);
    t.setPenColor(Color.red);
    for (int = 4; s < 200; s = + 2)
    {
      if (s == 140)
        t.setPenColor(Color.green);
      t.forward(s);
      t.right(90);
      t.setStatusText("Size: " + s);
    }
  }

  public static void main(String[] args)
  {
    new Tu6();
  }
}
 

Erklärungen zum Programmcode:
addStatusBar(20) Erzeugt eine 20 Pixel hohe Statusbar, in der während der Programmausführung Informationen ausgeschrieben werden können
setStatusText("Size: " + s) Ersetzt den vorhandenen Text durch einen neuen
if (s == 140)
    setPenColor(Color.green)
Nach der if-Bedingung folgt nur eine einzige Anweisung. Es sind daher keine Blockklammern notwendig

 

if - else if - else Struktur (mehrfache Auswahl)


Es können auch mehrere Bedingungen nacheinander überprüft werden. In unserem Beispiel zeichnet die Turtle in einer Wiederholstruktur Strecken in drei Farben.

Beispiel zeigen


Beispiel im Online-Editor bearbeiten

 

//Tu7.java

import ch.aplu.turtle.*;
import java.awt.Color;

class Tu7
{
  Turtle joe = new Turtle();

  Tu7()
  {
    joe.hideTurtle();
    joe.clear(Color.black);
    joe.setLineWidth(4);
    for (int = 0; i < 120; i++)
    {
      if (i % == 0)     
        joe.setPenColor(Color.red);       
      else
        if (i % == 1)
          joe.setPenColor(Color.green);
        else
          joe.setPenColor(Color.magenta);
 
      joe.forward(150);
      joe.back(150);
      joe.left(3);  
    }
  }

  public static void main(String[] args)
  {
    new Tu7();
  }
}
 


Erklärungen zum Programmcode:
joe.hideTurtle() Turtle wird unsichtbar, das Zeichnen erfolgt schneller
joe.clear(Color.black)
Das ganze Turtle-Fenster wird mit der schwarzen Farbe gefüllt
if (i % 3 == 0)     
    joe.setPenColor(Color.red);       
else
    if (i % 3 == 1)
        joe.setPenColor(Color.green);
    else
        joe.setPenColor(Color.magenta);
Falls der Rest nach der Division durch 3 gleich 0 ist, wird die Stiftfarbe auf rot gesetzt. Anderfalls wird überprüft, ob der Rest nach der Division durch 3 gleich 1 ist. Trifft dieses zu, wird die Stiftfarbe auf grün gesetz, sonst wird die Stiftfarbe auf magenta gesetzt.


Aufgaben