project_drawing/drawing.py

104 lines
2.3 KiB
Python

# drawing.py
# ----------
# By Hope Wright
#
# a turtle and bubbles will be drawn and animate swimming across the screen
# phase 2 would be to have it start smaller and grow is it swims across the screen to look like it's getting closer
# phase 3 would be to animate the bubbles.
from turtle import *
from superturtle.movement import fly
from superturtle.animation import animate
from superturtle.easing import easeInQuad
import math
import random
def draw_turtle(size):
#draw an oval for the shell
height = size*2
width = size*1.5
steps = 100
for i in range(steps + 1):
angle = 2 * math.pi * i / steps
x = (width) * math.cos(angle)
y = (height) * math.sin(angle)
goto(x,y)
#move to top of for head
penup()
left(90)
forward(size*4)
left(90)
forward(size*1.5)
pendown()
#draw a circle for the head
circle(size)
#draw some lines on the shell
penup()
left(90)
forward(size*2)
pendown()
forward(size*4)
right(180)
forward(size*2)
left(90)
forward(size*1.5)
penup()
left(180)
forward(size*1.5)
pendown()
def draw_flipper(size):
left(90)
def draw_bubble(b_size):
pencolor("blue")
circle(b_size)
def place_bubbles(number):
#draws bubbles of random sizes and locations in each of the 4 quadrants
for i in range(number):
x = random.random()*400
y = random.random()*200
fly(x,y)
b_size = random.random()*15
draw_bubble(b_size)
for i in range(number):
x = random.random()*400
y = random.random()*200
fly(-x,y)
b_size = random.random()*15
draw_bubble(b_size)
for i in range(number):
x = random.random()*400
y = random.random()*200
fly(x,-y)
b_size = random.random()*15
draw_bubble(b_size)
for i in range(number):
x = random.random()*400
y = random.random()*200
fly(-x,-y)
b_size = random.random()*15
draw_bubble(b_size)
fly(0,0)
#pass the number of bubbles you want in each quadrant (so it will be 4 X what you pass)
for frame in animate(50, loop=True):
x = frame.interpolate(-10, 10)
y = frame.interpolate(20, -10, easing=easeInQuad)
fly(x, y)
place_bubbles(1)
draw_turtle(20)
done()