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


Рассмотрим пример, в котором две черепахи, являющиеся экземплярами одного класса, рисуют квадраты разных размеров с вписанными окружностями. Для этого определяется класс FigureTurtle, расширяющий стандартный класс Turtle. Он добавляет метод draw_square(size), который строит квадрат со стороной задаваемой длины, а затем вписанную в него окружность. Рисунок 5 демонстрирует код программы, а рисунок 6 – графическое окно с полученным результатом.
После импортирования необходимых классов из модуля turtle создается графическое окно с помощью Screen, задаются его размеры, белый фон и заголовок. Далее определяется класс FigureTurtle. В его конструкторе __init__ принимаются параметры цвета и начальной позиции. Внутри него вызывается конструктор родительского класса super().__init__(), после чего устанавливаются цвет пера, начальные координаты с помощью penup() и goto(), а затем перо опускается. Значение скорости рисования 3 выбрано для наглядности процесса. Метод draw_square обходит четыре стороны квадрата, используя относительные перемещения forward(size) и повороты на 90° влево, после чего рисует вписанную окружность радиуса size/2. Для этого черепаха перемещается в центр квадрата, проходит половину стороны (forward(size/2)), затем строит окружность методом circle(size/2).
Далее в программе создаются два экземпляра класса FigureTurtle с разными цветами и начальными позициями. Первый объект синего цвета начинает движение из точки (-150, 0), второй – красного цвета из точки (50, 0). Чтобы обе фигуры были видны, они рисуются последовательно: первая черепаха вызывает draw_square(100), вторая – draw_square(80). Программа завершается вызовом метода, который закрывает графическое окно щелчком мыши.
Наследование от класса Turtle позволяет расширить его функциональность, не дублируя базовые настройки. Передача начальных параметров через конструктор класса делает объекты автономными и легко настраиваемыми. 

from turtle import Turtle, Screen

class FigureTurtle(Turtle):
    def __init__(self, color, start_pos):
        super().__init__()
        self.color(color)
        self.penup()
        self.goto(start_pos)
        self.pendown()
        self.speed(3)

    def draw_square(self, size):
        # квадрат
        for _ in range(4):
            self.forward(size)
            self.left(90)
        # вписанная окружность
        self.penup()
        self.forward(size / 2)
        self.pendown()
        self.circle(size / 2)

screen = Screen()
screen.setup(600, 400)
screen.bgcolor('white')
screen.title('Задание 3 – Пример')

t1 = FigureTurtle('blue', (-150, 0))
t2 = FigureTurtle('red', (50, 0))

t1.draw_square(100)
t2.draw_square(80)

screen.exitonclick()
Рисунок 5 – Код программы


Рисунок 6 – Полученный результат

Напишите программу, которая создает две черепахи (или более, если это требуется вариантом). Они должны быть явными объектами класса Turtle (или его наследника). Настройте для них различные цвета, форму, начальное положение и, при необходимости, скорость. Реализуйте сценарий взаимодействия, описанный в вашем варианте.

Дополнительные требования к заданию. Используйте объектно-ориентированный импорт: from turtle import Turtle, Screen. Экран должен иметь размер 600×400, белый фон, а также заголовок, соответствующий заданию. Как и в Заданиях № 1, № 2 после завершения рисования окно должно закрываться по щелчку мыши. Для синхронизации движений в пошаговых вариантах допускается использование циклов с малым шагом и вспомогательных методов черепашьей графики. В случае, когда требуется случайная величина, используйте модуль random. При создании собственных классов продумайте, какие атрибуты и методы нужны, и продемонстрируйте их работу.



Таблица 3 – Варианты
№ варианта	1	2	3	4	5	6	7	8	9	10	11	12	13	14	15	16
№ задачи	2	3	 4	5	6	7	8	9	10	11	12	13	14	15	16	1

1. Две черепахи начинают движение из центра. Первая (синяя, форма 'turtle') рисует пунктирную линию вправо: 10 пикселей, затем 5 пикселей пропуск, в сумме 20 циклов. Вторая (красная, форма 'arrow') одновременно с первой рисует сплошную линию влево той же длины, но сдвинутую вниз на 20 пикселей. Используйте один цикл, в котором обе черепахи выполняют свои действия пошагово.
2. Создайте класс, который наследует Turtle в качестве базового и имеет метод draw_square(size), рисующий квадрат заданного размера. Создайте два экземпляра этого класса с разными цветами. Первый чертит квадрат 100 в левой части экрана, второй – квадрат 150 в правой части. Затем каждый из них рисует внутри своего квадрата вписанную окружность того же цвета.
3. Одна черепаха (зеленого цвета) может двигаться только в горизонтальном направлении, другая (фиолетового цвета) – в вертикальном. Используя методы setheading(0) и setheading(90), они должны совместно отобразить координатную сетку 4×4 с шагом 50, начиная от точки (-100, -100). Первая черепаха рисует все горизонтальные линии, вторая – вертикальные. Для того чтобы было видно процесс, дополнительно задайте координацию с помощью ожидания после каждой линии (time.sleep(0.1)).