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()