Загрузка данных
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)