TigerJython xx
für Gymnasien

Farben verwenden


Die Farben können mit folgenden Befehlen gewählt werden:

setColor("farbe") : Farbe der Turtle
setPenColor("farbe") : Stiftfarbe
setFillColor("farbe") : Füllfarbe
setPenWidth(pixel) : Dicke der Linien

Die Turtlefarbe kann auch mit dem Befehl makeTurtle() geändert werden- Falls die Klammer leer ist, hat Turte die Farbe "cyan".
makeTurtle("red") erzeugt eine rote Turtle.

Als Farbnamen kann man die sogenannten X11-Farben verwenden. Das sind einige dutzend Farbnamen, die man im Internet unter http://cng.seas.rochester.edu/CNG/docs/x11color.html finden kann. Einige übliche Namen: black, blue, browsn, cyan, dkgray, green, gray, ltgray, magenta, navy, orange, pink, red, sky blue, turquoise, white, yellow. Für Färben von Flächen stehen mehrere Befehle zur Verfügung. Die nachfolgenden Beispiele zeigen typische Situationen für ihre Verwendung


  Geschlossene Flächen füllen

Mit dem Befehl fill() wird die geschlossenen Fläche, in der sich die Turtle befindet, mit der vorher festgelegten gefüllt. fill(x, y) füllt die geschlossene Fläche, in der sich der Punkt mit den Koordinaten (x, y) befindet. Falls man keine Füllfarbe angibt, wird die Fläche mit der Standardfarbe blau gefüllt.

Beispiel 1: Schweizerfahne zeichnen

Die Turtle zeichnet zuerst mit einer 8 Pixel dicken roten Linie einen Kreuz. Dann wird auch die Füllfarbe auf Rot gesetzt und das geschlossene Gebiet ausserhalb des Kreuzes mit dem Befehl fill(-60, 60) rot gefärbt.

Wenn man die Zeile fill(-60, 60) deaktiviert und die Zeile fill(0, 0) aktiviert, wird die Fläche des Kreuzes gefärbt.

# Tu4.py

from gturtle import *

makeTurtle("red")
setPos(-50, 50)
setPenColor("red")
setPenWidth(8)
repeat 4:
    repeat 3:
        forward(100)
        right(90)
    left(180)
setFillColor("red")
fill(-60, 60)
#fill(0, 0)
hideTurtle()
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)
 

Erklärungen zum Programmcode:

makeTurtle("red") : erzeugt eine rote Turtle (fall Klamme leer, hat die Turtle die Farbe "cyan")
setPenColor("red") : setzt die Stiftfarbe auf rot
setPenWidth(8) : setzt die Stiftdicke auf 8 Pixel
setFillColor("red") : setzt die Füllfarbe auf rot
fill(-60, 60) : füllt die Fläche, in der sich der Punkt (-60, 60) befindet
hideTurtle() versteckt die Turtle

 

  Weitere Füllbefehle

Die Flächen können auch fortlaufend während des Zeichnens mit der Stiftfarbe gefärbt werden. Dazu stehen folgende Befehle zur Verfügung:

fillToPoint(x, y)
Am Punkt (x, y) wird sozusagen ein Gummiband befestigt, das die Turtle mitzieht. Dabei werden alle Punkte, über die sich das Gummiband bewegt fortlaufend eingefärbt

fillToHorizontal(y)
Füllt fortlaufend die Flächen zwischen der Turtlespur und der waagrechten Linie (y = konstant)

fillToVertical(x)
Füllt fortlaufend die Flächen zwischen der Turtlespur und der senkrechten Linie (x = konstant)

 

 
Beispiel 2: Fortlaufendes Füllen der Figuren mit der Stiftfarbe

# Tu4a.py

from gturtle import *

makeTurtle()
speed(-1)
setPenColor("yellow")
setPos(-150, 100)
fillToPoint(-100, 75)
repeat 6:
    fd(60).rt(140).fd(60).lt(80)  
    
setPenColor("green")
rt(30)
setPos(-180, -150)
fillToHorizontal(-100)     
repeat 3:
    fd(120).rt(120).fd(120).lt(120)
    
setPenColor("red")
fillToVertical(100)
home() 
rt(45)
fd(250)
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)

Erklärungen zum Programmcode:

Der Befehl fillToPoint()muss vor dem Zeichnen der Figur erfolgen
fd(60).rt(140).fd(60).lt(80) Die Turtle-Befehle können nacheinander, getrennt mit Punkt verwendet werden
home() versetzt die Turtle wird an die Position (0, 0) mit der Richtung nach oben

 

  Gefüllte Pfade

Für das Füllen von Flächen können auch die Befehle startPath() und fillPath() verwendet werden.

startPath()
Das Erfassen eines Pfades wird mit dem Befehl startPath() eingeleitet.

fillPath()
Der Endpunkt des Pfades wird mit dem Anfangspunkt verbunden und die eingeschlossenen Flächen werden mit der Füllfarbe gefüllt.

Beispiel 3: Pfad zeichnen und Flächen füllen
Ein Pfad besteht hier aus einer Sternfigur.

 
# Tu4b.py

from gturtle import *

makeTurtle()

setFillColor("magenta")
startPath()
repeat 5:
    forward(160)
    left(144)
fillPath()
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)

Erklärungen zum Programmcode:

Der Befehl startPath() muss vor dem Zeichnen des Pfades stehen
fillPath() steht am Schluss des Pfades. Danach wird die Figur gefüllt

 


Aufgaben: Serie 4

 

  Zeichne folgende Figuren:

1)

2)

 

3)

4)


5)

Verwende die Funktionen
startPath() und fillPath(),
um die nebenstehende Figur zu zeichnen

(Farbname: "darkviolet")


6)

Auch bei dieser Aufgabe kannst du die Befehle
startPath() und fillPath() verwenden.

 


7)

Ergänze das Programm so, dass 20 schwarz gefüllte Quadrate mit einem dicken, roten Rand gezeichnet werden.

from gturtle import *

makeTurtle()
hideTurtle()
repeat 20:
    repeat 4:
        forward(100)
        left(90)
    right(18)
 
 

 


  ZUSATZSTOFF

  Farben mit RGB-Farbkomponenten bestimmen

Im RGB-Modell werden die Farben mit ihrem Rot-, Grün- und Blauanteil definiert. makeColor(r, g, b) setzt diese Farbanteile zu einer Farbe zusammen.

Beispiel 4: Kreise mit selbstdefinierten Farben zeichnen
Die r, g, b Werte sind ganze Zahlen zwischen 0 und 255. Mit dem RGB-Modell können also 16'777'216 Farben definiert werden. Mit dem Befehl makeColor(19, 97, 129) eine blau-grüne Farbe c definiert. setPenColor(c) setzt die Stiftfarbe auf die Farbe c. Die RGB-Werte der gewünschten Farbe können durch probieren oder in einem Grafik-Programm z.B. PhotoShop abgelesen werden.

from gturtle import *

makeTurtle()
hideTurtle()
c = makeColor(19, 97, 129)
c2 = makeColor(198, 21 , 58)
setPenColor(c)
dot(100)
forward(100)
setPenColor(c2)
dot(100)
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)
 

 


 


Farbverlauf
Die grüne Farbe ist hier am hellsten, wenn die grüne Farbkomponente 255 ist. Der grösste Kreis hat den Durchmesser 510. Nach jedem gezeichneten dot wird der Durchmesser um 2 und die grüne Farbkomponente um 1 kleiner.

from gturtle import *

makeTurtle()
hideTurtle()
g = 255
d = 510
while d > 0:
    c = makeColor(0, g, 0)
    setPenColor(c)
    dot(d)
    g = g - 1
    d = d - 2
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)
 


 

  Farbauswahl mit ColorChooser

In den meisten Grafikprogrammen kann eine Farbe per Mausklick in einer Farbauswahlbox gewählt werden. Auch unsere Turtlegrafik bietet diese Möglichkeit.

Mit dem Befehl askColor() wird eine Dialogbox geöffnet, in der mit Mausklick eine Farbe gewählt und mit OK die Auswahl bestätig wird.

 

 
Beispiel 5: Farbauswahl mit Dialogfeld askColor()

# Tu4c.py

from gturtle import *

makeTurtle()

clear("black")
for x in range(-250, 250, 75):
    setPos(x, x + 30)
    color = askColor("Farbauswahl", "yellow")
    setPenColor(color)
    fillToPoint(x, x)
    for i in range(6):
        fd(30).rt(120).fd(30).lt(60)  
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)

Erklärungen zum Programmcode:

clear("black") : übermalt das Turtlefenster mit der schwarzen Farbe (löscht dabei alle Zeichnungen)
color = askColor("Farbauswahl", "yellow"): öffnet die Dialogbox Farbauswahl.

setPenColor(color): setzt die Stiftfarbe auf die gewählte Farbe
Das Programm hat aber noch einen Fehler: Wenn keine Farbe ausgewählt wird (Klick auf Abbrechen in der Dialogbox), kann die Stiftfarbe nicht gesetzt werden und das Programm stürzt ab. Wie man diesen Fehler "abfangen" kann zeigen wir im nächsten Abschnitt.

 

  Wrap-Modus

Im "normalen" Modus wird die Turtlespur ausserhalb des Turtlefensters nicht mehr sichtbar. Mit dem Befehl wrap() wird die Turtle in den Wrap-Modus versetzt. Dieser bewirkt, dass die Turtle nach dem Verlassen des Turtle-Fensters auf der gegenüber liegenden Seite wieder im Fenster erscheint und das Zeichnen fortsetzt.

from gturtle import *

makeTurtle()
wrap();
left(70)
forward(10000)

Beispiel 6: Verwendung des Befehls wrap() bei gefüllten Figuren

Die Turtle zeichnet einen Kreis, indem sie 90 mal eine kurze Strecke vorwärts geht und eine Linksdrehung um 4 Grad macht. Dabei wird die Figur fortlaufen vom Mittelpunkt des Kreises gefüllt. Nachdem die Turtle oben ausläuft, wird die Spur und auch der Füllvorgang unten fortgesetzt.

# Tu4e.py

from gturtle import *

makeTurtle()
wrap();
speed(-1)
setPenColor("green")
fillToPoint(0, 175)
setPos(150, 180)
repeat 90:
   forward(10)
   left(4)
Programmcode markieren (Ctrl+C kopieren, Ctrl+V einfügen)