Загрузка данных


import turtle

# Настройка окна
screen = turtle.Screen()
screen.title("Ящерица с жабрами, бегущая за курсором")
screen.bgcolor("lightblue")
screen.setup(800, 600)
screen.tracer(0)

# Настройка "ящерицы"
liz = turtle.Turtle()
liz.hideturtle()
liz.speed(0)

# Параметры размера
HEAD_SIZE = 16
BODY_SIZE = 30
LEG_SIZE = 12
GILL_SIZE = 8

def draw_lizard(x, y, angle):
    liz.clear()
    liz.penup()
    liz.goto(x, y)
    liz.setheading(angle)
    liz.pendown()

    # Тело (длинная овальная форма)
    liz.color("green")
    liz.begin_fill()
    liz.left(90)
    liz.forward(BODY_SIZE)
    liz.right(90)
    liz.circle(-BODY_SIZE // 2, 180)
    liz.right(90)
    liz.forward(BODY_SIZE)
    liz.end_fill()

    # Голова
    liz.penup()
    liz.forward(BODY_SIZE - HEAD_SIZE)
    liz.right(90)
    liz.pendown()
    liz.color("darkgreen")
    liz.begin_fill()
    liz.circle(HEAD_SIZE, 180)
    liz.right(90)
    liz.forward(HEAD_SIZE * 2)
    liz.right(90)
    liz.circle(HEAD_SIZE, 180)
    liz.end_fill()

    # Глаз
    liz.penup()
    liz.forward(HEAD_SIZE // 2)
    liz.left(90)
    liz.forward(HEAD_SIZE // 2)
    liz.pendown()
    liz.color("white")
    liz.dot(HEAD_SIZE // 2)
    liz.color("black")
    liz.dot(HEAD_SIZE // 4)

    # Жабры (справа и слева)
    # Правая жабра
    liz.penup()
    liz.goto(x, y)
    liz.forward(BODY_SIZE // 2)
    liz.right(90)
    liz.forward(BODY_SIZE // 4)
    liz.pendown()
    liz.color("red")
    liz.setheading(angle - 90)
    liz.begin_fill()
    liz.circle(GILL_SIZE, 180)
    liz.right(90)
    liz.forward(GILL_SIZE)
    liz.end_fill()

    # Левая жабра
    liz.penup()
    liz.goto(x, y)
    liz.forward(BODY_SIZE // 2)
    liz.right(90)
    liz.backward(BODY_SIZE // 4)
    liz.pendown()
    liz.setheading(angle - 90)
    liz.begin_fill()
    liz.circle(GILL_SIZE, 180)
    liz.right(90)
    liz.forward(GILL_SIZE)
    liz.end_fill()

    # Лапки (4 штуки)
    liz.penup()
    liz.goto(x, y)
    liz.forward(BODY_SIZE // 5)
    liz.right(90)
    liz.forward(BODY_SIZE // 4)
    liz.pendown()
    liz.color("darkgreen")
    liz.setheading(angle)
    liz.forward(LEG_SIZE)
    liz.backward(LEG_SIZE)

    liz.penup()
    liz.goto(x, y)
    liz.forward(BODY_SIZE // 5)
    liz.right(90)
    liz.backward(BODY_SIZE // 4)
    liz.pendown()
    liz.forward(LEG_SIZE)
    liz.backward(LEG_SIZE)

    liz.penup()
    liz.goto(x, y)
    liz.forward(BODY_SIZE * 3 // 5)
    liz.right(90)
    liz.forward(BODY_SIZE // 4)
    liz.pendown()
    liz.forward(LEG_SIZE)
    liz.backward(LEG_SIZE)

    liz.penup()
    liz.goto(x, y)
    liz.forward(BODY_SIZE * 3 // 5)
    liz.right(90)
    liz.backward(BODY_SIZE // 4)
    liz.pendown()
    liz.forward(LEG_SIZE)
    liz.backward(LEG_SIZE)

    screen.update()

# Позиция ящерицы
liz_x, liz_y = 0, 0
SPEED = 0.2

def move_lizard():
    global liz_x, liz_y

    # координаты курсора мыши
    cx = screen.cv.winfo_pointerx()
    cy = screen.cv.winfo_pointery()
    cx = cx - screen.window_width() // 2
    cy = screen.window_height() // 2 - cy

    # перемещение ящерицы к курсору
    dx = cx - liz_x
    dy = cy - liz_y

    angle = liz.towards(cx, cy)
    liz_x += dx * SPEED
    liz_y += dy * SPEED

    draw_lizard(liz_x, liz_y, angle)

    screen.ontimer(move_lizard, 20)

# старт движения
move_lizard()
screen.exitonclick()