Documentation on Turtle Graphics: This is the ultimate source for all information on this library.
# File: Hello.py
# Description: This program writes out Hello World
import turtle
def main():
# put label on top of page
turtle.title ('Hello World')
# setup screen size
turtle.setup (1000, 1000, 0, 0)
# move turtle to origin
turtle.penup()
turtle.goto (0, 0)
# set the color to navy
turtle.color ('navy')
# write the message
turtle.write ('Hello World!', font = ('Times New Roman', 36, 'bold'))
# hide the turtle
turtle.hideturtle()
# persist the drawing
turtle.done()
main()
# File: Squares.py
# Description: Draws squares of different sizes
import turtle
# draw a square of a given side
# starting at uuper left corner (x, y)
def drawSquare (ttl, x, y, side):
ttl.penup()
ttl.goto(x, y)
ttl.setheading(0) # set the pen in the +ve x direction
ttl.pendown()
for iter in range (4):
ttl.forward(side)
ttl.right(90)
ttl.penup()
def main():
# put label on top of page
turtle.title ('Squares')
# setup screen size
turtle.setup (800, 800, 0, 0)
# create a turtle object
ttl = turtle.Turtle()
# assign a color to the turtle object
ttl.color ('red')
# draw multiple squares
drawSquare (ttl, -50, -50, 50)
drawSquare (ttl, 0, 0, 50)
drawSquare (ttl, 50, 50, 50)
drawSquare (ttl, -50, 50, 150)
# fill a closed region
ttl.fillcolor ('purple')
ttl.begin_fill()
drawSquare (ttl, 0, 0, 50)
ttl.end_fill()
# persist drawing
turtle.done()
main()
# File: Figures.py
# Description: Draws various types of geometric figures
import turtle, math
# draw a line from (x1, y1) to (x2, y2)
def drawLine (ttl, x1, y1, x2, y2):
ttl.penup()
ttl.goto (x1, y1)
ttl.pendown()
ttl.goto (x2, y2)
ttl.penup()
def drawPolygon (ttl, x, y, num_side, radius):
sideLen = 2 * radius * math.sin (math.pi / num_side)
angle = 360 / num_side
ttl.penup()
ttl.goto (x, y)
ttl.pendown()
for iter in range (num_side):
ttl.forward (sideLen)
ttl.left (angle)
def main():
# put label on top of page
turtle.title ('Geometric Figures')
# setup screen size
turtle.setup (800, 800, 0, 0)
# create a turtle object
ttl = turtle.Turtle()
# draw equilateral triangle
ttl.color ('blue')
drawPolygon (ttl, -200, 0, 3, 50)
# draw square
ttl.color ('red')
drawPolygon (ttl, -50, 0, 4, 50)
# draw pentagon
ttl.color ('forest green')
drawPolygon (ttl, 100, 0, 5, 50)
# draw octagon
ttl.color ('DarkOrchid4')
drawPolygon (ttl, 250, 0, 8, 50)
# draw a line
ttl.color ('gold4')
drawLine (ttl, -200, -10, 325, -10)
drawLine (ttl, -200, -15, 325, -15)
# persist drawing
turtle.done()
main()
# File: ColorShapes.py
# Description: Draws filled in shapes
import turtle
def main():
# put label on top of page
turtle.title ('Colorful Shapes')
# setup screen size
turtle.setup (800, 800, 0, 0)
# draw a triangle
turtle.pensize(3)
turtle.penup()
turtle.goto (-200, -50)
turtle.pendown()
turtle.begin_fill()
turtle.color ('red')
turtle.circle (40, steps = 3)
turtle.end_fill()
# draw a square
turtle.penup()
turtle.goto (-100, -50)
turtle.pendown()
turtle.begin_fill()
turtle.color ('navy')
turtle.circle (40, steps = 4)
turtle.end_fill()
# draw a pentagon
turtle.penup()
turtle.goto (0, -50)
turtle.pendown()
turtle.begin_fill()
turtle.color ('green')
turtle.circle (40, steps = 5)
turtle.end_fill()
# draw a hexagon
turtle.penup()
turtle.goto (100, -50)
turtle.pendown()
turtle.begin_fill()
turtle.color ('yellow')
turtle.circle (40, steps = 6)
turtle.end_fill()
# draw a circle
turtle.penup()
turtle.goto (200, -50)
turtle.pendown()
turtle.begin_fill()
turtle.color ('purple')
turtle.circle (40)
turtle.end_fill()
# write header
turtle.penup()
turtle.goto (-100, 50)
turtle.write ('Cool Colorful Shapes', font = ('Times', 18, 'bold'))
# hide turtle
turtle.hideturtle()
# persist drawing
turtle.done()
main()
# File: Func.py
# Description: Draws users defined functions
import math, turtle
# draw a line from (x1, y1) to (x2, y2)
def drawLine (ttl, x1, y1, x2, y2):
ttl.penup()
ttl.goto (x1, y1)
ttl.pendown()
ttl.goto (x2, y2)
ttl.penup()
# write label at location x, y
def labelPoint (ttl, x, y, label):
ttl.penup()
ttl.goto (x, y)
ttl.pendown()
ttl.write (label)
ttl.penup()
def drawGridMark (ttl, x, y, isVertical):
if isVertical :
drawLine (ttl, x, y + 5, x, y - 5)
else:
drawLine (ttl, x - 5, y, x + 5, y)
def labelGridPoint (ttl, x, y, isVertical, text):
if isVertical:
labelPoint (ttl, x - 20, y - 20, text)
else:
labelPoint (ttl, x + 20, y, text)
def drawGridScaled (ttl):
# draw the axes
drawLine (ttl, -400, 0, 400, 0)
drawLine (ttl, 0, 400, 0, -400)
# label the x axis
for x in [-300, -200, -100, 100, 200, 300]:
drawGridMark (ttl, x, 0, True)
labelGridPoint (ttl, x, 0, True, (x/100, 0))
# label the y axis
for y in [-300, -200, -100, 100, 200, 300]:
drawGridMark (ttl, 0, y, False)
labelGridPoint (ttl, 0, y, False, (0, y/100))
def drawFnScaled (ttl, fn, lower, upper, step):
ttl.penup()
x = lower
y = fn (x)
scaledX = x * 100
scaledY = y * 100
ttl.goto (scaledX, scaledY)
ttl.pendown()
while x < upper:
x = x + step
y = fn ( x )
scaledX, scaledY = x * 100, y * 100
ttl.goto (scaledX, scaledY)
ttl.penup()
def myFunc (x):
return (x ** 2 - 4)
def main():
# put label on top of page
turtle.title ('Graphs of Functions')
# setup screen size
turtle.setup (800, 800, 0, 0)
# create a turtle object
ttl = turtle.Turtle()
# draw the grid
drawGridScaled (ttl)
# draw sine finction
ttl.pencolor ('red')
drawFnScaled (ttl, math.sin, -math.pi, math.pi, 0.01)
# draw cosine function
ttl.pencolor ('blue')
drawFnScaled (ttl, math.cos, -math.pi, math.pi, 0.01)
# draw my function
ttl.pencolor ('purple')
drawFnScaled (ttl, myFunc, -math.pi, math.pi, 0.01)
# persist drawing
turtle.done()
main()
# File: RandomWalk.py
# Description: Draws a grid and exhibits a random walk
import turtle, random
def main():
# put label on top of page
turtle.title ('Random Walk')
# setup screen size
turtle.setup (1000, 1000, 0, 0)
# set turtle speed
#turtle.speed (1)
# draw 16 x 16 lattice
turtle.color ('gray')
# draw horizontal lines
x = -80
for y in range (-80, 80 + 1, 10):
turtle.penup()
turtle.goto (x, y)
turtle.pendown()
turtle.forward (160)
# draw vertical lines
y = 80
turtle.right (90)
for x in range (-80, 80 + 1, 10):
turtle.penup()
turtle.goto (x, y)
turtle.pendown()
turtle.forward (160)
# start random walk
turtle.pensize(3)
turtle.color ('red')
turtle.penup()
turtle.goto(0, 0)
turtle.pendown()
x = y = 0
while (abs(x) < 80 and abs(y) < 80):
r = random.randint(0, 3)
if r == 0:
x += 10
turtle.setheading(0)
turtle.forward(10)
elif r == 1:
y -= 10
turtle.setheading(270)
turtle.forward(10)
elif r == 2:
x -= 10
turtle.setheading(180)
turtle.forward(10)
elif r == 3:
y += 10
turtle.setheading(90)
turtle.forward(10)
# persist drawing
turtle.done()
main()
# File: Sierpinski.py
# Description: Draws Sierpinski's Curve or Gasket
import math, turtle
def drawGasket (ttl, size):
if size < 10:
return
for iter in range (3):
ttl.forward (size / 2)
insertGasket (ttl, size)
ttl.forward (size / 2)
ttl.right (120)
def insertGasket (ttl, size):
ttl.left (120)
drawGasket (ttl, size / 2)
ttl.right (120)
def oneSide (ttl, s, diag, level):
if (level == 0):
return
else:
oneSide (ttl, s, diag, level - 1)
ttl.right (45); ttl.forward (diag); ttl.right (45)
oneSide (ttl, s, diag, level - 1)
ttl.left (90); ttl.forward (s); ttl.left (90)
oneSide (ttl, s, diag, level - 1)
ttl.right (45); ttl.forward (diag); ttl.right (45)
oneSide (ttl, s, diag, level - 1)
def curve (ttl, s, level):
diag = s / math.sqrt (2)
for iter in range (4):
oneSide (ttl, s, diag, level)
ttl.right (45)
ttl.forward (diag)
ttl.right (45)
def main():
# put label on top of page
turtle.title ('Recursive Figures')
# setup screen size
turtle.setup (1000, 1000, 0, 0)
# create a turtle object
ttl = turtle.Turtle()
# draw the sierpinski curve
# curve (ttl, 15, 3)
# draw gasket
drawGasket (ttl, 200)
# persist drawing
turtle.done()
main()
# File: Sun.py
# Description: Draws recursively a sun like figure
import math, turtle
def drawArcR (ttl, size, degrees):
for iter in range (degrees):
ttl.forward (size)
ttl.right (1)
def drawArcL (ttl, size, degrees):
for iter in range (degrees):
ttl.forward (size)
ttl.left (1)
def drawRay (ttl, size):
for iter in range (2):
drawArcR (ttl, size, 90)
drawArcL (ttl, size, 90)
def drawSun (ttl, size, color):
ttl.fillcolor (color)
ttl.begin_fill ()
for iter in range (9):
drawRay (ttl, size)
ttl.right (160)
ttl.end_fill ()
def main():
# put label on top of page
turtle.title ('Sun Figure')
# setup screen size
turtle.setup (1000, 1000, 0, 0)
# create a turtle object
ttl = turtle.Turtle()
# draw the sun figure
drawSun (ttl, 1, 'red')
# persist drawing
turtle.done()
main()