Python und die Turtle: Mehr Farben und mehr Ecken

Python
Turtle
Creative Coding
Farbpaletten
Autor:in

Jörg Kantel

Veröffentlichungsdatum

28. Dezember 2023

Was nützen einem die schönsten, selbstgebastelten Farbpaletten, wenn man sie nicht nutzt? Daher habe ich wieder Pythons Schildkröte geweckt und das Spiralenprogramm von letzter Woche um eine Fünfeck- und eine Sechseck-Spirale erweitert.

Dafür habe ich aus den Sketchy-Farbpaletten diese Farben extrahiert:

pal = [(173, 154, 133), (185, 217, 225), (229, 171, 115), (227, 214, 173),
       (68, 140, 140), (223, 216, 196)]

Für eine Fünfeck-Spirale muß die for-Schleife im Skript wie folgt modifiziert werden:

for i in range(300):
    p.color(pal[i%5])
    p.forward(i*1.1)
    p.right(73)

Bei einer Sechseck-Spirale sieht sie so aus:

for i in range(300):
    p.color(pal[i%6])
    p.forward(i*0.9)
    p.right(61)

Die Winkelwerte ergeben sich, wenn man den vollen Kreis (\(360°\)) durch die Anzahl der gewünschten Ecken dividiert (\(360:5=72\) und \(360:5=60\)) und jeweils ein Grad hinzuaddiert. Und mit dem Multiplikations-Faktor bei der Verlängerung der Spirale p.forward() (\(1.1\) respektive \(0.9\)) habe ich dafür gesorgt, daß die Spirale noch ins Fenster paßt.

 

Mit einem Klick auf die Vorschaubilder kommt Ihr je auf eine Seite mit einer Vergrößerung.

Auch mit dieser Farbpalette sind die Spiralen ganz ansehnlich geworden und stechen aus dem Einerlei der Standardfarben hervor.

Der Quelltext ist nahezu identisch wie der bei den dreieckigen und quadratischen Spiralen, hier aber der Vollständigkeit halber noch einmal (für die Fünfeck-Spirale) abgedruckt:

import turtle as t

WIDTH = 600
HEIGHT = 600

pal = [(173, 154, 133), (185, 217, 225), (229, 171, 115), (227, 214, 173),
       (68, 140, 140), (223, 216, 196)]

wn = t.Screen()
wn.colormode(255)
wn.bgcolor(41, 37, 33)
wn.setup(width = WIDTH, height = HEIGHT)
wn.title("Fünfeck-Spirale")

p = t.Turtle()
p.width(2)
p.speed(0)
p.hideturtle()

# Fünfeck
for i in range(300):
    p.color(pal[i%5])
    p.forward(i*1.1)
    p.right(73)

print("I did it, Babe!")

wn.mainloop()

Es gibt ihn aber auch wieder in meinem GitHub-Repositorium (hier für die Fünfeck- und hier für die Sechseck-Spirale).