Programming Resources
For Fun and Learning
Charles Cusack
Computer Science
Hope College
main


Python


C++
JAVA
PHP
SQL
Assignments

Turtle


025_Koch_Snowflake_AllLevelsFilled.py

import random
import os
from palettes import randomPalette
from util import getTurtleAndScreen
# Koch Snowflake. This time draw all of the levels on top of each other
# and fill in the shapes.
# CAC, 3/29/2023

def drawKSnowflake(turtle,length,level):
    turtle.begin_fill()
    drawKLine(turtle,length,level)
    turtle.right(120)
    drawKLine(turtle,length,level)
    turtle.right(120)
    drawKLine(turtle,length,level)
    turtle.end_fill()

def drawKLine(turtle,length,level):
    if level==1:
        turtle.forward(length)
    else:
        l = length/3
        drawKLine(turtle,l,level-1)
        turtle.left(60)
        drawKLine(turtle,l,level-1)
        turtle.right(120)
        drawKLine(turtle,l,level-1)
        turtle.left(60)
        drawKLine(turtle,l,level-1)

def Draw():
    levels = random.randint(1,7)
    title = "Koch Snowflake "+str(levels)
    width = 600
    height = 600
    L = 500
    filename = os.path.basename(__file__)[0:-3]
    turtle, screen = getTurtleAndScreen(title,width,height,filename,moveWorld=True)

    colors = randomPalette()
    bg = random.choice(colors)
    colors.remove(bg)
    screen.bgcolor(bg)
    turtle.pensize(2)

    # Get everything setup.
    turtle.penup()
    turtle.goto(50,150)
    turtle.pendown()

    pcolor = None
    for i in range(levels,0,-1):
        color = random.choice(colors)
        while(color==pcolor):
            color = random.choice(colors)
        turtle.color(color)
        pcolor=color
        turtle.setheading(60)
        drawKSnowflake(turtle,L,i)

    turtle.penup()

    screen.mainloop()
# ----------------------------------------------------------------
if __name__ == '__main__':
   Draw()