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


import turtle

# ЗАДАНИЕ №4: Комментарии к функциям на русском языке (Задание №4 из файла 104236.jpg)
# ЗАДАНИЕ №2 и №3: Функция для создания разных объектов с разным цветом и размером
def moving_object(t, figure_type, size, color):
    t.fillcolor(color)  # Устанавливаем цвет объекта
    t.begin_fill()      # Начинаем заливку цветом
    
    if figure_type == "triangle":
        # Рисуем треугольник
        for _ in range(3):
            t.forward(size)
            t.left(120)
    elif figure_type == "square":
        # Рисуем квадрат
        for _ in range(4):
            t.forward(size)
            t.left(90)
    else:
        # Рисуем круг (как в оригинале)
        t.circle(size / 2)
        
    t.end_fill()        # Заканчиваем заливку

# Функция для создания движущегося треугольника выше основного объекта
def moving_triangle_above(t, size, color, y_offset):
    t.fillcolor(color)
    t.begin_fill()
    for _ in range(3):
        t.forward(size)
        t.left(120)
    t.end_fill()

# ЗАДАНИЕ №1: Основная программа в модуле Turtle
if __name__ == "__main__":
    screen = turtle.Screen()    # Создаем окно
    screen.setup(600, 593)      # Размеры окна из файла
    screen.bgcolor('green')     # Зеленый фон из файла
    screen.tracer(0)            # Отключаем анимацию для плавности

    move = turtle.Turtle()      # Создаем основную черепашку
    move.speed(0)               # Максимальная скорость отрисовки
    move.width(2)               # Ширина линии
    move.hideturtle()           # Прячем курсор
    move.penup()                # Поднимаем перо
    move.goto(-250, 0)          # Начальная позиция
    
    # Создаем черепашек для треугольников выше
    triangle1 = turtle.Turtle()
    triangle1.speed(0)
    triangle1.width(2)
    triangle1.hideturtle()
    triangle1.penup()
    triangle1.goto(-250, 60)    # Выше основного объекта на 60 пикселей
    
    triangle2 = turtle.Turtle()
    triangle2.speed(0)
    triangle2.width(2)
    triangle2.hideturtle()
    triangle2.penup()
    triangle2.goto(-250, 100)   # Еще выше на 100 пикселей
    
    triangle3 = turtle.Turtle()
    triangle3.speed(0)
    triangle3.width(2)
    triangle3.hideturtle()
    triangle3.penup()
    triangle3.goto(-250, 140)   # Еще выше на 140 пикселей

    # Параметры, которые можно менять (Задание №3)
    current_figure = "square"   # Можно менять на "triangle" или "circle"
    current_color = "orange"    # Цвет объекта
    current_size = 40           # Размер объекта
    speed_step = 2              # Скорость движения
    
    # Параметры для треугольников
    triangle_color = "red"      # Цвет треугольников
    triangle_size = 25          # Размер треугольников
    triangle_y_offsets = [60, 100, 140]  # Позиции треугольников по высоте

    # Бесконечный цикл движения
    while True:
        move.clear()            # Очищаем след основного объекта
        triangle1.clear()       # Очищаем след первого треугольника
        triangle2.clear()       # Очищаем след второго треугольника
        triangle3.clear()       # Очищаем след третьего треугольника
        
        # Рисуем основной объект
        moving_object(move, current_figure, current_size, current_color)
        
        # Рисуем треугольники выше
        moving_triangle_above(triangle1, triangle_size, triangle_color, triangle_y_offsets[0])
        moving_triangle_above(triangle2, triangle_size, triangle_color, triangle_y_offsets[1])
        moving_triangle_above(triangle3, triangle_size, triangle_color, triangle_y_offsets[2])
        
        screen.update()         # Обновляем кадр
        
        # Двигаем основной объект вперед
        move.forward(speed_step)
        
        # Двигаем треугольники вперед с той же скоростью
        triangle1.forward(speed_step)
        triangle2.forward(speed_step)
        triangle3.forward(speed_step)

        # Если основной объект уехал за экран, возвращаем его назад
        if move.xcor() > 300:
            move.goto(-300, 0)
            triangle1.goto(-300, 60)
            triangle2.goto(-300, 100)
            triangle3.goto(-300, 140)