Turtlegrafik für Smartphones und Tablets

Entwicklungsprojekt PHBern  
HomeOnline-Editor startenDruckenAndroid GamesJava-Online

Farben verwenden

Mit der Android-Turtlegrafik ist der Umgang mit Farben sehr einfach. Farben können bei folgenden Aufrufen zum Beispiel auf rot geändert werden:

  • Turtle-Farbe: new Turtle(RED) oder setTurtleColor(RED)
  • Hintergund-Farbe: clean(RED) oder clean(RED) falls auch alle Turtles verschwinden sollen
  • Stiftfarbe: setPenColor(RED)

Die Farben BLACK, BLUE, CYAN, DKGRAY, GREEN, GRAY, LTGRAY, MAGENTA, RED, WHITE, YELLOW und TRANSPARENT können direkt verwendet werden. Um andere Farben zu verwenden, muss die Android-Klasse Color importiert werden (import android.graphics.Color). Eine beliebige Farbe wird durch ihren RGB-Wert definiert (z. Bsp. setPenColor(Color.rgb(20, 80, 0)). Beim Füllen von Flächen wird die aktuelle Stiftfarbe verwendet.

Im folgenden Beispiel verwenden Wir die Farben zum Zeichnen der Schweizerflacke.

Source mit Online-Compiler bearbeiten

App installieren auf Smartphone oder Tablet

QR-Code

Sources downloaden (Tu5.zip)

// Tu5.java

package app.tu5;

import turtle.*;

public class Tu5 extends Playground
{
  public void main()
  {
    st();
    setSpeed(10);
    clean(RED);
    setPos(-50, 50);
    for (int = 0; k < 4; k++)
    {
      for (int = 0; i < 3; i++)
      {
        fd(90);
        rt(90);
      }
      lt(180);
    }
    fill(0, 0);
  }
}
 

Erklärungen zum Programmcode:

setSpeed(10) Setzt die Geschwindigkeit, mit der sich Turtle bewegt auf 10. Die Geschwindigkeit kann Werte zwischen 0 und 10 annehmen. Standard ist 5.
setSpeed(MAXSPEED) ist am schnellsten
clean(RED) Der Hintergrund wird rot
fill() Die geschlossene Fläche, in der sich die Turtle befindet, wird mit der Stiftfarbe gefüllt. In unserem Fall mit der Standard-Stiftfarbe weiss


Gefüllte Figuren

Im ersten Beispiel haben wir die Methode fill() bereits verwendet. Dabei wird die Fläche mit dem sogenannten Flood-Fill Algorithmus gefüllt. Dabei wird vorausgesetzt, dass sich die Turtle in einem geschlossenen Gebiet befindet, welches die Hintergrundfarbe besitzt. Das Gebiet wird mit der aktuellen Stiftfarbe gefüllt. Das heisst, die Figur wird nachträglich gefüllt. In vielen Fällen ist es sinnvoll, dass die Turtle während ihrer Bewegung das Gebiet füllt. Dazu stehen drei weitere Füll-Methoden zur Verfügung:

  • fillToPoint(x, y)
    Der Punkt wird festgelegt, bevor die Turtle mit dem Zeichnen beginnt. Danach wird bei jeder Turtlebewegung die Fläche zwischen der Turtle-Spur und dem Punkt gefüllt. In unserem Beispiel wird der gelbe Stern auf diese Art gefärbt
  • fillToHorizontal(y)
    Die horizontale Linie wird durch die y-Koordinate festgelegt. Danach wird die Fläche zwischen der Turtle-Spur und der horizontalen Linie fortlaufend gefärbt. In unserem Beispiel wird die grüne Fläche auf diese Art gefüllt
  • fillToVertical(x)
    Die vertikale Linie wird durch die x-Koordinate festgelegt. Danach wird die Fläche zwischen der Turtle-Spur und der vertikalen Linie fortlaufend gefüllt. In unserem Beispiel wird die rote Fläche auf diese Art gefärbt.

Source mit Online-Compiler bearbeiten

QR-Code

App installieren auf Smartphone oder Tablet

Sources downloaden (Tu5a.zip)

// Tu5a.java

package app.tu5a;

import turtle.*;

public class Tu5a extends Playground
{
  public void main()
  {
    st();
    setSpeed(8);
    setPenColor(YELLOW);
    fillToPoint(-75, 75);
    setPos(-100, 100);
    for (int = 0; i < 6; i++)
      fd(50).rt(140).fd(50).lt(80);  
    
    setPenColor(GREEN);
    fillToHorizontal(-150);
    setPos(-100-100);
    for (int = 0; i < 5; i++)
      rt(30).fd(50);
    
    setPenColor(RED);
    fillToVertical(100);
    setPos(150, 150);
    setHeading(225);
    fd(180);
  }
}
 

Erklärungen zum Programmcode:

setPenColor(YELLOW) Setzt die Stiftfarbe und damit auch die Füllfarbe auf gelb
fillToPoint(-75, 75) Die Figur wird vom Punkt mit den gegebenen Koordinaten gefüllt. In unserem Beispiel liegt der Punkt am Rand der Sternfigur
fillToHorizontal(-150) Die Fläche zwischen der Turtle-Spur und der horizontalen Linie mit y = -150, wird gefüllt
fillToVertical(100) Die Fläche zwischen der Turtle-Spur und der vertikalen Linie mit x = 100, wird gefüllt