Ziel:
(*) Falls man lieber mit richtigem Python arbeiten möchte, kann man deren Turtle-Module verwenden.
TurtleGraphics Dossier (1M)
Zusammenstellung wichtigste Befehle
from gturtle import *
t = Turtle() # Turtle erstellen
# Hintergrundfarbe setzen
t.setFillColor("black")
t.fill(0,0)
# Farbe und Dicke des Stifts setzen
t.setPenColor("white")
t.setPenWidth(2)
# Turtle verstecken, damit nicht warten muss
t.hideTurtle()
# Basic Move
t.home() # in Mitte des Screens setzen, nach oben ausrichten
t.setPos(200,50) # an Position mit x=200 und y=50 setzen
t.forward(150) # vorwaerts laufen (Anzahl Pixel angeben)
t.back(10) # rueckwaerts laufen
t.left(45) # nach links drehen (Winkel angeben)
t.right(45) # nach rechts drehen
Wähle ein
Schneeflockenmuster aus. Recherchiere im Internet, erfinde ein eigenes oder wähle eines der folgenden:

Falls du keine Lust auf Schneeflocken hast, kannst du auch einen einfachen Tannenbaum oder ein anderes weihnachtliches Bild zeichnen.
Zeichne nun eine Schneeflocke ins Zentrum des Bildschirms. Tipps:
Beginne mit t.home()
, damit Turtle richtig ausgerichtet ist.
Verwende Schleifen (while oder for) anstelle von Copy-Paste.
Verwende Variablen für Werte, die mehrfach benötigt werden.
Siehe Theorie oben.
Packe deinen Code vom letzten Punkt nun in eine
Funktion. Dies erlaubt die, ganz viele Schneeflocken an verschiedenen Orten zu zeichnen:
def schneeflocke(x,y): # soll eine Schneeflocke, startend am Punkt (x,y) zeichnen
t.home() # damit Turtle gerade nach oben schaut
t.setPos(x,y) # setze Turtle an gewuenschte Startposition
... # hier dein Code vom letzten Punkt
Nun kannst du ganz
viele Schneeflocken zeichnen:
schneeflocke(-200,-130)
schneeflocke(0,0)
schneeflocke(50,70)
Alternativ kannst du auch mit random
Zufallspositionen generieren:
import random
x = random.randint(-400,400)
...
Optional:
Gib den Schneeflocken verschiedene Farben.
Generiere die Positionen der Schneeflocken zufällig und stelle sicher, dass es keine Überlappungen gibt.
<nodisp 2>
Code sca
from gturtle import *
import random
colors = ["white","red","green","blue"]
WIDTH = 1200
HEIGHT = 800
Options.setPlaygroundSize(WIDTH,HEIGHT)
t = Turtle()
t.setFillColor("black")
t.fill(0,0)
t.setPenColor("white")
t.setPenWidth(1)
t.hideTurtle()
### dimensions
scale = 0.5
d = int(50 * scale)
d1 = int(15 * scale)
ang1 = 45
d2 = int(20 * scale)
d3 = int(15 * scale)
ang3 = 55
def schneeflocke(x=0,y=0,color="white"):
t.setPenColor(color)
for i in range(6):
t.home()
t.setPos(x,y)
t.left(60*i+30)
t.forward(d)
t.back(d1)
t.left(ang1)
t.forward(d1)
t.back(d1)
t.right(2*ang1)
t.forward(d1)
t.back(d1)
t.left(ang1)
t.back(d2)
t.left(ang3)
t.forward(d3)
t.back(d3)
t.right(2*ang3)
t.forward(d3)
t.back(d3)
t.left(ang3)
def get_nonoverlapping_positions(n=10,d_min=2,width=800,height=600):
positions = []
for i in range(n):
while True:
x = random.randint(-width//2,width//2)
y = random.randint(-height//2,height//2)
# list empty
if len(positions) == 0:
positions.append((x,y))
break
# check if point is far enough from other points
too_close = False
for (px,py) in positions:
d = ((px-x)**2 + (py-y)**2)**0.5
if d < d_min:
too_close = True
break
if not too_close:
positions.append((x,y))
break
return positions
positions = get_nonoverlapping_positions(n=120,d_min=70,width=WIDTH,height=HEIGHT)
for x,y in positions:
schneeflocke(x,y,random.choice(colors))
#t.savePlayground("/Users/anschae/schneeflocken.png","png")
<nodisp>