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


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()        # Заканчиваем заливку

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

    # ----- СОЗДАНИЕ ОСНОВНОГО КВАДРАТА -----
    square = turtle.Turtle()    # Черепашка для квадрата
    square.speed(0)             # Максимальная скорость отрисовки
    square.width(2)             # Ширина линии
    square.hideturtle()         # Прячем курсор
    square.penup()              # Поднимаем перо
    square.goto(-250, 0)        # Начальная позиция
    
    # ----- СОЗДАНИЕ ФИГУР ВЫШЕ (каждая со своей скоростью) -----
    # Треугольник 1 - самый медленный (Y = 60)
    triangle1 = turtle.Turtle()
    triangle1.speed(0)
    triangle1.width(2)
    triangle1.hideturtle()
    triangle1.penup()
    triangle1.goto(-250, 60)    # Выше квадрата на 60 пикселей
    
    # Круг (вместо второго треугольника) - средняя скорость (Y = 100)
    circle = turtle.Turtle()
    circle.speed(0)
    circle.width(2)
    circle.hideturtle()
    circle.penup()
    circle.goto(-250, 100)      # Выше на 100 пикселей
    
    # Треугольник 3 - самый быстрый (Y = 140)
    triangle2 = turtle.Turtle()
    triangle2.speed(0)
    triangle2.width(2)
    triangle2.hideturtle()
    triangle2.penup()
    triangle2.goto(-250, 140)   # Выше на 140 пикселей

    # ----- НАСТРОЙКА ПАРАМЕТРОВ -----
    # Параметры квадрата
    square_figure = "square"    # Форма: квадрат
    square_color = "orange"     # Цвет квадрата
    square_size = 40            # Размер квадрата
    square_speed = 2            # Скорость квадрата (средняя)
    
    # Параметры треугольников
    triangle_color = "red"      # Цвет треугольников
    triangle_size = 25          # Размер треугольников
    
    # Параметры круга
    circle_color = "blue"       # Цвет круга
    circle_size = 30            # Размер круга (диаметр = 30)
    
    # Разные скорости для каждой фигуры
    speed_triangle1 = 1         # Медленный треугольник (1)
    speed_circle = 3            # Круг (3) - быстрее квадрата
    speed_triangle2 = 5         # Быстрый треугольник (5)

    # ----- ОСНОВНОЙ ИГРОВОЙ ЦИКЛ -----
    while True:
        # Очищаем следы всех объектов
        square.clear()
        triangle1.clear()
        circle.clear()
        triangle2.clear()
        
        # Рисуем квадрат
        moving_object(square, square_figure, square_size, square_color)
        
        # Рисуем треугольники
        moving_object(triangle1, "triangle", triangle_size, triangle_color)
        moving_object(triangle2, "triangle", triangle_size, triangle_color)
        
        # Рисуем круг (вместо второго треугольника)
        moving_object(circle, "circle", circle_size, circle_color)
        
        screen.update()         # Обновляем экран
        
        # Двигаем каждый объект с ЕГО скоростью
        square.forward(square_speed)
        triangle1.forward(speed_triangle1)
        circle.forward(speed_circle)
        triangle2.forward(speed_triangle2)

        # ----- ПРОВЕРКА ВЫХОДА ЗА ЭКРАН (каждый объект возвращается отдельно) -----
        # Квадрат
        if square.xcor() > 300:
            square.goto(-300, 0)
        
        # Медленный треугольник
        if triangle1.xcor() > 300:
            triangle1.goto(-300, 60)
        
        # Круг
        if circle.xcor() > 300:
            circle.goto(-300, 100)
        
        # Быстрый треугольник
        if triangle2.xcor() > 300:
            triangle2.goto(-300, 140)