uaveiro-leci/1ano/fp/aula04/turtle1.py

65 lines
2.0 KiB
Python

# This program uses the module turtle to draw "turtle graphics"
# For an introduction and examples, read
# https://runestone.academy/runestone/static/thinkcspy/PythonTurtle/toctree.html
# For a summary of the available methods:
# https://runestone.academy/runestone/books/published/thinkcspy/PythonTurtle/SummaryofTurtleMethods.html
import turtle # allows us to use the turtles library
# Make turtle t draw a square with the given side length
def square(t, side):
for n in range(4):
t.forward(side)
t.left(90)
# Make turtle t draw a spiral.
# The first side should have length = start, the second start+incr, etc.,
# until the length reaches length=end (exclusive).
def spiral(t, start, end, incr):
if start < end:
while start <= end:
t.forward(start)
t.left(90)
start += incr
else:
while start >= end:
t.forward(start)
t.left(90)
start += incr
def main():
print("This program opens a window with a graphical user interface.")
wn = turtle.Screen() # creates a graphics window
alex = turtle.Turtle() # create a turtle named alex
alex.forward(150) # tell alex to move forward by 150 units
alex.right(90) # turn by 90 degrees
alex.forward(75) # complete the second side
beth = turtle.Turtle() # another turtle
beth.shape("turtle") # with another shape
beth.color("blue") # and color
beth.up() # pen up
beth.goto(-200, -100) # move to given point
beth.down() # pen down
square(beth, 100) # draw a square
# This should draw a spiral
alex.up()
alex.goto(-200, 200)
alex.setheading(0)
alex.down()
spiral(alex, 10, 200, 10)
alex.up()
alex.goto(100, 100)
alex.setheading(0)
alex.down()
spiral(alex, 200, 0, -5)
turtle.exitonclick() # wait for a button click, then close window
print("The window was closed. Bye!")
main()