# drawing.py # ---------- # Nelson Mason # updated 9-22-2025 # Due by 9-29-2025 # (This is an animation of a sunrise.) from turtle import * from superturtle.animation import animate # define 3 objects # sky, ground, sun # In the actual animation, the sun will start off entirely below the horizon, # (where the sky meets the ground), hidden by the ground, and will slowly rise (move up the screen), # with the sun, sky, and ground changing color. The disk of the sun will # be apparent only in the sky, as it rises. I will be using color shading techniques in the animation. # I played around with the RGB settings. I left out drawing the sun # casting a shadow on the ground while rising. # Perhaps for another project? # YOU CAN'T BEAT MOTHER NATURE FOR A SUNRISE! def sky(): begin_fill() # draw the sky fillcolor(0.05, 0.05, a/275) # as the sun rises sky color changes from black to blue for x in range(2): forward(400) left(90) forward(300) left(90) end_fill() def ground(): begin_fill() # draw the ground fillcolor(0.05, a/1100, 0.05) # as the sun rises ground color changes from black to dark green for x in range(2): forward(400) right(90) forward(150) right(90) end_fill() def sun(): begin_fill() # draw the sun fillcolor(1, a/550, 0) # as the sun rises sun color changes from red to orange circle(-75,360) end_fill() def sun_position(a): # this must be called to get the sun to move up (rise) penup() left(90) forward(a) right(90) pendown() for frame in animate(frames=550, loop=True): a = frame.interval=1100 # the frames-to-interval ratio controls the animation speed a = frame.interpolate(0, 275) # low and high positions of the sun as it rises penup() # reposition the turtle before drawing the sky right(180) forward(200) left(90) forward(50) left(90) pendown() sky() penup() # reposition the turtle before drawing the sun forward(200) # starting the drawing of the sun right on the horizon # makes it easier to calculate everything else pendown() sun_position(a) sun() # draws the sun penup() # reposition the turtle before drawing the ground right(180) forward(200) left(90) forward(+a) # increment to get to the correct starting point for # the next iteration(re-drawing) of the sun rising left(90) pendown() ground() # I want the ground to hide the sun (overlay), but not the sky (obviously) input()