Here is the most common answer for 2.10.4 Bubble Wrap 2.0:
"""
This code will fill the canvas with light blue circles.
Now add a function that will draw a white highlight on each bubble.
"""
speed(0)
# This function will draw one row of 10 circles
def draw_circle_row():
for i in range(10):
pendown()
begin_fill()
color("light blue")
circle(20)
end_fill()
penup()
forward(40)
# This function will move Tracy from end of row up to beginning of the row on top
def move_up_a_row():
left(90)
forward(40)
right(90)
backward(400)
# Send Tracy to starting position in bottom left corner
penup()
setposition(-180,-200)
# Call circle drawing function 10 times to fill ten rows
for i in range(10):
draw_circle_row()
move_up_a_row()
This code is designed to create a series of light blue circles on a canvas, creating a pattern resembling bubble wrap. The circles are arranged in rows, with a function to draw a row of circles and another function to move the cursor up to start a new row.
To add a white highlight on each bubble in your bubble wrap program, you need to modify the draw_circle_row
function. The highlight can be created by drawing a smaller, white, semi-circle or arc at the top of each blue circle. This gives the illusion of a light reflection and makes the circles look more like bubbles.
Here is the updated code with the addition of the white highlight:
speed(0)
# This function will draw one bubble with a white highlight
def draw_bubble():
# Draw the main circle (bubble)
pendown()
begin_fill()
color("light blue")
circle(20)
end_fill()
# Draw the white highlight
right(45) # Adjust the orientation for the highlight
color("white")
begin_fill()
circle(20, steps=3) # Draw a small white arc
end_fill()
left(45) # Reset the orientation
penup()
# This function will draw one row of 10 bubbles
def draw_circle_row():
for i in range(10):
draw_bubble()
forward(40)
# This function will move Tracy from end of row up to beginning of the row on top
def move_up_a_row():
left(90)
forward(40)
right(90)
backward(400)
# Send Tracy to starting position in bottom left corner
penup()
setposition(-180,-200)
# Call circle drawing function 10 times to fill ten rows
for i in range(10):
draw_circle_row()
move_up_a_row()
In this updated code, the draw_bubble
function first draws a light blue circle and then adds a white highlight on top of it. The circle(20, steps=3)
function is used to draw the white arc, which represents the highlight. The right(45)
and left(45)
calls are used to orient the highlight appropriately. You can adjust the orientation and size of the white highlight by changing the angle and the steps
parameter.
If drawing the white highlight takes a chunk out of the bubble, it suggests that the method used to draw the white highlight does not achieve the intended effect of a subtle highlight, but instead cuts into the bubble due to the circle(20, steps=3)
command, which creates a triangle rather than a smooth arc or circle segment.
A better approach to create a highlight effect on the bubble is to use a smaller circle or an arc positioned at the top of the bubble. Since directly drawing a partial circle for a highlight with the given turtle graphics functions can be challenging, you might draw a smaller white circle near the edge of the larger bubble to simulate a highlight.
Here’s how you can adjust the draw_bubble
function to achieve this:
def draw_bubble():
pendown()
begin_fill()
color("light blue")
circle(20)
end_fill()
# Position for the highlight
penup()
forward(10) # Move a bit to the right
left(90) # Face upwards
forward(20) # Move a bit up
pendown()
# Draw the white highlight as a smaller circle
color("white")
begin_fill()
circle(5) # Smaller circle for highlight
end_fill()
# Return to the center of the bubble and reset orientation
penup()
backward(20) # Move back down
right(90) # Reset orientation
backward(10) # Move back to the center
This adjusted version moves the turtle to draw a small white circle at the top right of each bubble to simulate a light reflection or highlight. After drawing the highlight, it returns the turtle to the original position to ensure subsequent bubbles are placed correctly.
Adjust the position and size of the white circle (circle(5)
) as needed to best fit the appearance of a highlight on your bubbles.