Fractals – Snowflake

#import Python turtle module
#More info see https://docs.python.org/2/library/turtle.html
import turtle 

##Make turtle t draw a Koch fractal of 'order' and 'size'.
def drawKoch(t, order, size):
    if order == 0:          # The base case is just a straight line
        #Move the turtle forward by size
        #in the direction the turtle is headed.
        t.forward(size)
    else:
        drawKoch(t, order-1, size/3)   # Go 1/3 of the way and draw a Koch pattern with lower order and 1/3 size
        t.left(60) #Turn turtle left by 60 degrees.
        drawKoch(t, order-1, size/3)
        t.right(120) #Turn turtle right by 120 degrees.
        drawKoch(t, order-1, size/3)
        t.left(60) #Turn turtle left by 60 degrees.
        drawKoch(t, order-1, size/3)

##Initialize the turtle
t = turtle.Turtle()
t.speed(6) #Set the turtle's speed. 1 is slow and 10 is fast.
t.color("blue") #Set the turtle's color.
t.pensize(3) #Set the pen size
myWin = turtle.Screen() #Create the screen


##Set values for order and size
order = 3
size = 300


##Initialize the pen position
t.up() #Pull the pen up - no drawing when moving.
t.backward(size/2) #move the pen backward by size/2
t.down() #Pull the pen down - drawing when moving.
t.left(60) #Turn turtle left by 60 degrees.


##drawKoch(t, order, size) could only draw one side of the Koch snowflake
##So we need to use drawKoch(t, order, size) 3 times to draw a Koch snowflake
drawKoch(t, order, size)
t.right(120) #Turn turtle right by 120 degrees.
drawKoch(t, order, size)
t.right(120) #Turn turtle right by 120 degrees.
drawKoch(t, order, size)

##exit the drawing screen
myWin.exitonclick()

Program Revised from http://openbookproject.net/thinkcs/python/english3e/recursion.html