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


# Подключаем все команды из библиотеки turtle
from turtle import *

# --- НАСТРОЙКА ЭКРАНА И ЧЕРЕПАШКИ ---
shape('turtle')       # Устанавливаем курсор в виде черепашки
setup(450, 350)       # Задаем размеры окна: ширина 450, высота 350
pensize(2)            # Устанавливаем толщину линий в 2 пикселя

# --- ВСПОМОГАТЕЛЬНЫЕ ФУНКЦИИ ---

# Функция перемещения черепашки в точку (x, y) без рисования линии
def p(x, y):
    penup()           # Поднимаем перо (не рисуем при движении)
    setpos(x, y)      # Перемещаемся в абсолютные координаты (x, y) с помощью setpos
    pendown()         # Опускаем перо (готовы рисовать)
    seth(0)           # Устанавливаем направление черепашки строго вправо (угол 0)

# Функция рисования прямоугольника по двум точкам (x1, y1) и (x2, y2)
def rect(x1, y1, x2, y2):
    p(x1, y1)         # Перемещаемся в первую точку (левый верхний угол)
    d = abs(x2 - x1)  # Вычисляем ширину прямоугольника (модуль разности X)
    h = abs(y2 - y1)  # Вычисляем высоту прямоугольника (модуль разности Y)
    begin_fill()      # Начинаем заливку фигуры
    fd(d); rt(90)     # Рисуем нижнюю сторону, поворачиваем направо
    fd(h); rt(90)     # Рисуем правую сторону, поворачиваем направо
    fd(d); rt(90)     # Рисуем верхнюю сторону, поворачиваем направо
    fd(h)             # Рисуем левую сторону
    end_fill()        # Заканчиваем заливку фигуры

# --- РИСОВАНИЕ БАБОЧКИ ---

# 1. ТУЛОВИЩЕ (рисуем с помощью функции rect)
color('black', 'black')   # Цвет контура: черный, цвет заливки: черный
rect(-15, 60, 15, -60)    # Рисуем прямоугольник от (-15, 60) до (15, -60)

# 2. ГОЛОВА (рисуем круг)
p(0, 60)                  # Перемещаемся в нижнюю точку головы (на верх туловища)
color('black', 'black')   # Цвет контура и заливки: черный
begin_fill()              # Начинаем заливку
circle(20)                # Рисуем круг радиусом 20
end_fill()                # Заканчиваем заливку

# 3. УСИКИ (рисуем линии)
# Левый усик
p(-8, 98)                 # Перемещаемся к основанию левого усика (верх головы)
pendown()                 # Опускаем перо для рисования линии
setpos(-35, 135)          # Проводим линию в точку с координатами (-35, 135)

# Правый усик
p(8, 98)                  # Перемещаемся к основанию правого усика
pendown()                 # Опускаем перо
setpos(35, 135)           # Проводим линию в точку с координатами (35, 135)

# 4. ВЕРХНИЕ КРЫЛЬЯ (большие круги)
# Левое верхнее крыло
p(-65, -15)               # Смещаемся в нижнюю точку левого верхнего крыла
color('black', 'skyblue') # Контур черный, заливка голубая
begin_fill()              # Начинаем заливку
circle(45)                # Радиус круга 45
end_fill()                # Заканчиваем заливку

# Правое верхнее крыло
p(65, -15)                # Смещаемся в нижнюю точку правого верхнего крыла
color('black', 'skyblue') # Контур черный, заливка голубая
begin_fill()              # Начинаем заливку
circle(45)                # Радиус круга 45
end_fill()                # Заканчиваем заливку

# 5. НИЖНИЕ КРЫЛЬЯ (маленькие круги)
# Левое нижнее крыло
p(-55, -80)               # Смещаемся в нижнюю точку левого нижнего крыла
color('black', 'lightgreen') # Контур черный, заливка светло-зеленая
begin_fill()              # Начинаем заливку
circle(35)                # Радиус круга 35
end_fill()                # Заканчиваем заливку

# Правое нижнее крыло
p(55, -80)                # Смещаемся в нижнюю точку правого нижнего крыла
color('black', 'lightgreen') # Контур черный, заливка светло-зеленая
begin_fill()              # Начинаем заливку
circle(35)                # Радиус круга 35
end_fill()                # Заканчиваем заливку

# --- ЗАВЕРШЕНИЕ РАБОТЫ ---
hideturtle()              # Прячем курсор черепашки, чтобы он не портил рисунок
done()                    # Оставляем окно открытым после завершения рисования