Блог учителя Информатики

Делаем Черепашку в виде снежинки

В прошлом году мы рисовали с использованием Черепашки снежинку. В этом году мы сделаем из самой Черепашки снежинку.

Мы можем изменять внешний вид самой черепашки, используя команду shape(). В модуле turtle уже есть несколько предустановленных фигур для черепашки. Но так же есть возможность и создать свою. Это можно сделать двумя способами: загрузить картинку со своим видом Черепашки или же создать фигуру. В случае картинки мы можем загружать только gif изображения. Это несколько ограничивает использование картинок Черепашкой, т.к. мы не можем вращать и масштабировать картинку. В случае же использования своей фигуры, мы получаем всю ту же Черепашку, которая выполняет все команды.
Для начала нам необходимо зарегистрировать нашу фигуру командой register_shape(). Эта команда принимает два аргумента, это имя фигуры в виде строки и кортеж из координат.
Для удобства создадим кортеж из координат отдельно. Назовем его snowflake_shape. Этот кортеж будет в себя включать другие кортежи, состоящие из двух значений: координат x и y. Эти координаты контуры фигуры, в нашем случае снежинки. Для теста возьмем простую форму снежинки, состоящую из восьмиконечной звезды. Обойдем эту форму по периметру, указывая координаты точек. Итого у нас получилось 16 точек. Не обязательно указывать в конце ту же точку, с которой мы начинали, между начальной и конечной точкой будет проведена прямая линия, что закроет контур нашей фигуры. Самостоятельно вы можете проработать фигуру любой сложности и детализации, главное чтобы вам на это хватило сил и терпения!

import turtle

snowflake_shape = (
    (4,0),
    (2,1),
    (3,3),
    (1,2),
    (0,4),
    (-1,2),
    (-3,3),
    (-2,1),
    (-4,0),
    (-2,-1),
    (-3,-3),
    (-1,-2),
    (0,-4),
    (1,-2),
    (3,-3),
    (2,-1),
)

turtle.register_shape('snowflake', snowflake_shape)
turtle.shape('snowflake')
turtle.shapesize(5,5,0)

Теперь мы можем зарегистрировать нашу фигуру, используя команду register_shape(‘snowflake’, snowflake_shape), передав в нее строку с названием нашей фигуры и нашим кортежем с координатами. После чего изменим внешний вид Черепашки командой shape(‘snowflake’), указав в качестве аргумента имя фигуры.

Не удивляйтесь, если ваша форма будет направлена не в ту сторону, которую вы ожидали. Это происходит потому, что по умолчанию Черепашка смотрит вправо. Мы всегда сможем изменить направление фигуры командой tilt(), не меняя самого направления движения Черепашки.
Полученная форма нашей Черепашки в виде снежинки может окажется очень маленькой. Мы можем увеличить размер формы командой shapesize(). В эту команду надо передать три аргумента. Первый — это коэффициент увеличения перпендикулярно оси направления черепашки, второй увеличение согласно оси направления черепашки и третий — это толщина линии обводки контура Черепашки. Чем меньше он будет, тем острее будут получаться лучи нашей снежинки. Все три аргумента могут быть вещественными числами. Помним, что по умолчанию Черепашка смотрит вправо.
В некоторых случаях команда turtle.register_shape() может не сработать или выдать ошибку. Дело в том, что register_shape() является экземпляром класса Screen(). Для этого можно сделать следующее:

screen = turtle.Screen()
screen.register_shape('snowflake', snowflake_shape)

Если при работе с Черепашкой у вас закрывается окно с рисунком и вы не успеваете увидеть результат работы, то добавьте в самом конце следующую команду, эта команда бесконечного цикла не позволит закрыться окну, до тех пор пока вы его на закроете сами.

turtle.mainloop()
Поделиться:
Вам также может понравится
Решение олимпиадных задач по информатике: Наименьший остаток
Решение олимпиадных задач по информатике: Последовательность
Решение олимпиадных задач по информатике: От перестановки чисел что-то меняется
Перевод десятичных чисел в двоичные на Pascal