xTurtle Installation Befehle Beispiele Ereignisse
Pfad: Startseite / Fächer / Informatik / Python / xTurtle / Beispiele
Autor: mk
06.05.2009 07:35:29
3330
Beispiele

Haus des Nikolaus

In der Regel wird man auf Papier eine Ablaufskizze der Figur anfertigen. An dieser Skizze kann man dann das Programm ablesen.

Haus des Nikolaus

# -*- coding: iso-8859-1 -*-
# mk, 6.9.08

from math import sqrt

def hdn(a):
    fd(a)
    rt(90)
    fd(a)
    lt(135)
    fd(a/sqrt(2))
    lt(90)
    fd(a/sqrt(2))
    lt(90)
    fd(sqrt(2)*a)
    lt(135)
    fd(a)
    lt(135)
    fd(sqrt(2)*a)
    lt(135)
    fd(a)

YinYang

Auszug aus der Dokumentation

circle(radius, extent=None, steps=None)
        Zeichne einen Kreis(bogen) mit gegebenem Radius
        Der Kreismittelpunkt ist radius Einheiten links von der
        Turtle; extent - ein Winkel - gibt an, welcher Teil des
        Kreises gezeichnet wird. Wenn extent fehlt, wird ein
        voller Kreis gezeichnet.
        -
        Wenn extent kein voller Kreis ist, dann ist ein Endpunkt
        des Bogens die aktuelle Turtle-Position. Wenn der Radius
        positiv ist, wird der Bogen im Gegenuhrzeigersinn gezeichnet.
        Für negative Radien wird der wird der Bogen im Uhrzeigersinn
        gezeichnet. Nachdem Zeichnen des Bogens ist die Orientierung
        der Turtle um extent geändert.
        -
        Da der Kreis durch ein eingeschriebenes reguläres Polygon
        angenähert wird, bestimmt steps die Anzahl der Schritte, die
        dafür verwendet wird. Wenn steps nicht angegeben wird, wird
        automatisch ein (hoffentlich passender) Wert ermittelt.
       ---
        Arguments: Zahl,
        Optionale Argumente: Zahl, integer

        Aufruf: circle(<zahl>)  # voller Kreis
        --oder: circle(<zahl>, <zahl>) # Bogen
        --oder: circle(<zahl>, <zahl>, <integer>)

        Beispiel (für ein Turtle-Objekt namens turtle):
        >>> turtle.circle(50)
        >>> turtle.circle(120, 180)  # semicircle

Kleine Versuche mit dem Befehl 'circle' in der Shell dienen dem Verständnis!

YinYang

# -*- coding: iso-8859-1 -*-
# mk, 6.9.08

def yinyang(a):
    # a = Durchmesser der Figur
    # rechte Teilfigur, schwarz gefüllt
    fillcolor(0,0,0)
    fill(True)
    circle(-a/2.0,180)
    circle(-a/4.0,180)
    circle(a/4.0,180)
    fill(False)
    # Begrenzung linke Teilfigur
    circle(a/2.0,180)
    # Radius der kleinen Kreise
    r = a*0.08
    # Weg zu weißem Kreis
    pu()
    lt(90)
    fd(a/4.0+r)
    lt(90)
    pd()
    # weißer Kreis
    fillcolor(1,1,1)
    fill(True)
    circle(r,360)
    fill(False)
    # Weg zu schwarzem Kreis
    pu()
    rt(90)
    fd(a/2.0)
    lt(90)
    pd()
    # schwarzer Kreis
    fillcolor(0,0,0)
    fill(True)
    circle(r)
    fill(False)
    # Weg zum Anfang
    pu()
    rt(90)
    fd(a/4.0-r)
    rt(90)
    pd()

Superrosette

# -*- coding: iso-8859-1 -*-
# Autor: mk Datum: 7.8.08

# Vorbereitungen

from xturtle import *

def n_eck(n,a):
    w = 360.0/n
    for i in range(n):
        fd(a)
        lt(w)

def nm_eck(n,a):
    w = 360.0/n
    for i in range(n):
        n_eck(n,a)
        lt(w)

# Hauptprogramm
reset()
tracer(False)
bgcolor(0,0,0)
pensize(2)
pencolor(1,0,0)
nm_eck(36,20)
tracer(True)
mainloop()

Rosette

Valid XHTML 1.0! lokal