I removed the easing from the bubbles because I

didn't realize how the function worked before and now realized that the function
will not animate the bubbles the way that I had envisioned.  I may try to use the easing
for my turtles swim.

I drew the bubbles and have coded the drawing of the top two flippers.  I need to complete the changes to the
flipper function for the bottom two quadrants.

Next step is animating the flippers and then the turtle.  I'm a little aprehensive about
nesting the animations, but we'll see how it goes.
This commit is contained in:
Hope 2025-06-24 10:31:16 -04:00
parent 6bc9ef9f0b
commit 0b609de21e
2 changed files with 78 additions and 8 deletions

View File

@ -9,9 +9,7 @@ which allows basic formatting.
## Description ## Description
(I would like to create an animated swimming sea turtle with some bubbles. (I would like to create an animated swimming sea turtle with some bubbles.)
If you want to link to an
)
## Planning ## Planning

View File

@ -15,7 +15,7 @@ import random
def draw_turtle(size): def draw_turtle(size):
pencolor("green")
#draw an oval for the shell #draw an oval for the shell
height = size*2 height = size*2
width = size*1.5 width = size*1.5
@ -54,8 +54,78 @@ def draw_turtle(size):
forward(size*1.5) forward(size*1.5)
pendown() pendown()
def draw_flipper(size): draw_flipper(size, 1)
left(90) draw_flipper(size, 4)
def draw_flipper(size, quad):
width = 2.5 * size
height = 1.5 * size
steps = 100 # Number of points to smooth the curve
penup()
if quad == 1:
angle_range = range(0, steps + 1) # Top half
for i in angle_range:
angle = math.pi * i / steps # Only go from 0 to π radians
x = ((width / 2) * math.cos(angle))+(size*2)
y = ((height / 2) * math.sin(angle))+size
if i == angle_range[0]:
goto(x , y )
pendown()
else:
goto(x, y)
forward (size*2.5)
elif quad == 4:
angle_range = range(0, steps + 1) # Top half
for i in angle_range:
angle = math.pi * i / steps # Only go from 0 to π radians
x = ((width / 2) * math.cos(angle))-(size*2)
y = ((height / 2) * math.sin(angle))+size
if i == angle_range[0]:
goto(x , y )
pendown()
else:
goto(x, y)
forward (size*2.5)
elif quad == 3:
angle_range = range(0, steps + 1) # Top half
for i in angle_range:
angle = math.pi * i / steps # Only go from 0 to π radians
x = ((width / 2) * math.cos(angle))-(size*2)
y = ((height / 2) * math.sin(angle))+size
if i == angle_range[0]:
goto(x , y )
pendown()
else:
goto(x, y)
forward (size*2.5)
else:
angle_range = range(0, steps + 1) # Top half
for i in angle_range:
angle = math.pi * i / steps # Only go from 0 to π radians
x = ((width / 2) * math.cos(angle))-(size*2)
y = ((height / 2) * math.sin(angle))+size
if i == angle_range[0]:
goto(x , y )
pendown()
else:
goto(x, y)
forward (size*2.5)
def draw_bubble(b_size): def draw_bubble(b_size):
pencolor("blue") pencolor("blue")
@ -89,13 +159,15 @@ def place_bubbles(number):
draw_bubble(b_size) draw_bubble(b_size)
fly(0,0) fly(0,0)
"""
#pass the number of bubbles you want in each quadrant (so it will be 4 X what you pass) #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): for frame in animate(50, loop=False):
x = frame.interpolate(-10, 10) x = frame.interpolate(-10, 10)
y = frame.interpolate(20, -10, easing=easeInQuad) y = frame.interpolate(20, -10, easing=easeInQuad)
fly(x, y) fly(x, y)
place_bubbles(1) place_bubbles(1)
"""
place_bubbles(5)
draw_turtle(20) draw_turtle(20)