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


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 - самый медленный
    triangle1 = turtle.Turtle()
    triangle1.speed(0)
    triangle1.width(2)
    triangle1.hideturtle()
    triangle1.penup()
    triangle1.goto(-250, 60)    # Выше квадрата на 60 пикселей
    
    # Треугольник 2 - средняя скорость
    triangle2 = turtle.Turtle()
    triangle2.speed(0)
    triangle2.width(2)
    triangle2.hideturtle()
    triangle2.penup()
    triangle2.goto(-250, 100)   # Выше на 100 пикселей
    
    # Треугольник 3 - самый быстрый
    triangle3 = turtle.Turtle()
    triangle3.speed(0)
    triangle3.width(2)
    triangle3.hideturtle()
    triangle3.penup()
    triangle3.goto(-250, 140)   # Выше на 140 пикселей

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

    # ----- ОСНОВНОЙ ИГРОВОЙ ЦИКЛ -----
    while True:
        # Очищаем следы всех объектов
        square.clear()
        triangle1.clear()
        triangle2.clear()
        triangle3.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(triangle3, "triangle", triangle_size, triangle_color)
        
        screen.update()         # Обновляем экран
        
        # Двигаем каждый объект с ЕГО скоростью
        square.forward(square_speed)
        triangle1.forward(speed_triangle1)
        triangle2.forward(speed_triangle2)
        triangle3.forward(speed_triangle3)

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