Schülerarbeit: Blumen-Animation

Turtle Graphics

Janika Angsts Programm ist eine Animation, in der verschiedene bunte Blumen aus einer Wiese wachsen und aufblühen.

Der Programm-Code

#
# (c) 2014, Janika Angst
#
from gturtle import *
from time import sleep
makeTurtle()
hideTurtle()

# Parameter: s = halbe Dreieckseite
def knospe(s):          
    setPenColor("green")
    setFillColor("green")
    right(90)
    forward(s)
    repeat 3:
        left(120)
        forward(s * 2)
    left(180)
    forward(s)
    right(90)
    penUp()
    forward(3)
    fill()
    penDown()
    back(3)          
    right(90)
    forward(s)
    right(60)
    rightArc((s / 1.73 * 2), 240)
    right(60)
    forward(s)
    right(90)
    forward(3)
    penUp()
    fill()
    penDown()
    left(180)
    forward(3)
    x = getX()
    y = getY()
    setPos(x, -218)                    
    setPenColor("dark green")
    penWidth(35)
    forward(1)
    setPos(x, y)
    penWidth(1)
    
def knospenspitze():
    s = 3
    repeat 10:
        penDown()
        knospe(s) 
        s += 1
        sleep(0.1)
        
def wachsen(hoehe): 
    s = 13
    h = -221
    repeat hoehe:
        penUp()
        forward(2)
        setFillColor("sky blue")
        fill()
        back(1)
        penDown()
        x = getX()
        y = getY()
        knospe(s)
        setPos((x - 5), h)                  # Stiel
        setPenColor(makeColor(0, 0.99, 0))
        if getPixelColorStr() == "skyblue":
            heading(90)
            forward(10)
        h += 1
        heading(0)
        setPos(x, y)
        sleep(0.1)

def halbeknosperechts(farbe):
    setPenColor(farbe)
    setFillColor(farbe)
    forward(44)
    right(150)
    forward(26)
    rightArc((13/ 1.73 * 2), 120)
    right(150)
    penUp()
    forward(5)
    fill()
    back(5)
    left(50)
    forward(5)
    fill()
    back(5)
    left(10)
    penDown()

def halbeknospelinks(farbe):
    setPenColor(farbe)
    setFillColor(farbe)
    forward(44)
    left(150)
    forward(26)
    leftArc((13/ 1.73 * 2), 120)
    left(150)
    penUp()
    forward(5)
    fill()
    back(5)
    right(50)
    forward(5)
    fill()
    back(5)
    right(10)
    penDown()
    
def bluete(color):
    r = 0
    l = 360
    x = getX()
    y = getY() - 20
    repeat 26:
        setPos(x, y)
        heading(0)
        setPenColor("skyblue")
        forward(16)
        penWidth(40)
        forward(20)
        penWidth(1)
        back(36)
        setPos(x, y + 2)
        heading(0)
        halbeknosperechts(color)
        halbeknospelinks(color)
        r += 1
        l -= 1
        setPos(x, y)
        heading(r)
        halbeknosperechts("green")
        heading(l)
        halbeknospelinks("green")
        sleep(0.05)
        
def butterfly():
    x = getX()
    y = getY()
    heading(300)
    setPenColor("skyblue")
    dot(130)
    setPenColor("black")
    forward(30)
    leftArc(6, 180)
    forward(30)
    leftArc(6, 180)
    left(90)
    penUp()
    forward(3)
    setFillColor("black")
    fill()
    penDown()
    back(3)
    right(280)
    leftArc(10, 240)
    left(220)
    leftArc(20, 240)
    left(100)
    penUp()
    forward(5)
    setFillColor("turquoise")
    fill()
    back(5)
    right(100)
    penDown()
    heading(300)          
    right(90)
    forward(1.0445544487)
    right(90)
    forward(35.9239626545)
    right(90)
    forward(12)
    left(100)
    rightArc(10, 240)
    right(220)
    rightArc(20, 241)
    right(100)
    penUp()
    forward(10)
    fill()
    back(10)
    left(100)
    penDown()
    setPos(x - 2, y + 1)
        
# Himmel und Wiese
setPenColor("dark green")
setFillColor("sky blue")
fill()
setPos(-250, 100)               # Wolke
setPenColor("white")
heading(0)
repeat 2:
    leftArc(20, 180)
    left(180)
    leftArc(20, 180)
    right(90)
    leftArc(20, 180)
    right(90)
penUp()
setPos(-255, 95)
setFillColor("white")
fill()
penDown()
setPenColor("yellow")
setPos(250, 150)
dot(50)
penWidth(3)
repeat 6:
    forward(60)
    setPos(250, 150)
    right(60)
penWidth(1)
setPenColor("dark green")
setFillColor("sky blue")
setPos(-400, -200)
heading(90)
forward(800)
left(180)
forward(20)
left(90)
penUp()
forward(20)
setFillColor("dark green")
fill()
right(90)
forward(380)
right(90)                 
forward(21)            
heading(0)                              

# Blumenknospenspitze
knospenspitze()

# Blumenknospe
wachsen(140) 
    
# Blüte
bluete("red")  

# Zweite Blüte
heading(0)
x = -240
y = -197
setPos(x, y)
knospenspitze()
wachsen(70)
bluete("orange")

# Dritte Blüte
heading(0)
x = 100
y = -197
setPos(x, y)
knospenspitze()
wachsen(80)
bluete("purple")

# Vierte Blüte
heading(0)
x = -170
y = -197
setPos(x, y)
knospenspitze()
wachsen(60)
bluete("pink")

# Fünfte Blüte
heading(0)
x = 170
y = -197
setPos(x, y)
knospenspitze()
wachsen(90)
bluete("yellow")
    
setPos(400, -120)    

repeat 380:
    butterfly()
    sleep(0.01)

setPos(-50, 50)
label("ENDE")