Untitled

 avatar
unknown
python
3 years ago
2.2 kB
3
Indexable
import turtle 
import math
def draw_caterpillar(centre_x,centre_y,radius,head_color,body_color,num_segments):
    # Create the turtle object
    t = turtle.Turtle()
    offset_x = (num_segments-1)*radius
    # Draw the body segments
    for i in range(num_segments):
        current_pos = centre_x-1.1*radius-offset_x,centre_y-(radius*1.3)
        t.penup()
        t.goto(current_pos)
        t.pendown()
        t.fillcolor(body_color)
        t.begin_fill()
        t.circle(radius*0.8)
        t.end_fill()
        # Draw the legs of body
        t.goto(current_pos[0],current_pos[1]-0.5*radius)
        t.goto(current_pos[0]+0.40*radius,current_pos[1]-0.5*radius)
        t.penup()
        t.goto(current_pos) 
        t.setheading(300)
        t.pendown()
        t.forward(0.53*radius)
        t.setheading(30)
        t.forward(0.35*radius)
        t.setheading(0)

        offset_x-=radius
    # Draw the head
    t.fillcolor(head_color)
    t.penup() 
    t.goto(centre_x,centre_y-radius)
    t.pendown() 
    t.begin_fill()
    t.circle(radius) 
    t.end_fill()
    t.penup()
    t.goto(centre_x,centre_y)
    t.pendown()
    t.fillcolor("#000000")
    t.begin_fill()
    t.circle(radius/10)
    t.end_fill()
    t.penup()
    # Draw the eyes
    t.goto(centre_x+radius*9.3/10,centre_y)
    t.pendown()
    t.fillcolor("#000000")
    t.begin_fill()
    t.circle(radius/10)
    t.end_fill()
    t.penup()
    t.goto(centre_x-radius/10,centre_y-radius*0.3)
    t.pendown() 
    t.setheading(-35)
    t.circle(radius*0.7,70)
    t.penup() 
    t.setheading(0)
    # Draw the head organs at the top
    theta = 60*math.pi/180
    x_theta,y_theta = abs(radius*math.cos(theta)),abs(radius*math.sin(theta) )
    t.goto(centre_x+x_theta,centre_y+y_theta)
    t.setheading(110)
    t.pendown()
    t.forward(0.5*radius)
    t.setheading(55)
    t.forward(0.4*radius)
    t.penup()
    t.goto(centre_x+x_theta,centre_y+y_theta)
    t.setheading(80)
    t.pendown()
    t.forward(0.5*radius)
    t.setheading(30)
    t.forward(0.4*radius)
    t.penup()
    t.goto(centre_x+x_theta,centre_y+y_theta)
    t.setheading(180)
    t.speed(0)
    # turtle.mainloop()
    turtle.done()

draw_caterpillar(-200,100,50,"#0b3d22", "#0f756c", 5)
Editor is loading...