Да-да, дорогие читатели! Именно черепашьим шагом мы начнем изучать графику python. И дело, как вы догадались, совсем не в медленной скорости изучения и продвижения результатов (конечно, скажете вы, медленные скорости - это не про современные технологии, и будете абсолютно правы). Речь конечно же про графику на языке программирования python, реализуемую через ... черепашку turtle.
История вопроса
Итак, что это за зверь такой в python - turtle? Вот что говорится в описаниях этого алгоритма:
Turile - принцип организации библиотеки графического вывода, построенный на метафоре Черепахи, воображаемого роботоподобного устройства, которое перемещается по экрану или бумаге и поворачивается в заданных направлениях, при этом оставляя (или, по выбору, не оставляя) за собой нарисованный след заданного цвета и ширины.
Ага, понятно, значит, метафора... То есть создатели python реализовали самую простую графику, и реализовали её метафорическим образом в виде черепашки.
Простые движенья...я продолжаю
Что ж, хватит теории, переходим к практике. Запускаем любой редактор для работы с python, создаем файл t.py и пишем в нем вот такой текст:
Запускаем нашу программу командой python t.py, и...
... и моргнула какая-то форма, что-то по ней быстро пробежало и всё исчезло. Это python сгенерировал форму, отработал в ней действия и уничтожил эту форму. Нам это очень неудобно, поэтому мы реализуем всё таким образом, чтобы форма после работы алгоритма оставалась, а пропадала только по щелчку мыши по ней. Сделать это не просто, а... очень просто. Добавим команду
turtle.exitonclick(). Программа примет следующий вид:
Запускаем программу и.... теперь уже что-то удобоваримоое, нормальная непропадающая форма, правда какая-то линия посередине нарисована и треугольничек в конце её куда-то повернутый. Они что, хотят нам сказать, что ЭТО - черепашка??!!!!
Вот теперь и настало время разобраться, что обозначают строки в нашем черепашьем алгоритме.
import turtle
импортируем библиотеку turtle и одновременно создаем экземпляр черепашки, которая у нас будет ходить, поворачиваться, циклить и прочее-прочее-прочее.
turtle.forward(90)
черепашка прошла слева направо (это для нее перед в начале пути) из середины экранной формы и прошла 90 пикселей
turtle.left(45)
черепашка повернула налево на 45 градусов. Потому и треугольничек немного повернут вверх (верх для двигавшейся слева направо черепашки - это лево, не пугайтесь). Если мы после этого дадим ей команду forward, она пойдет дальше именно в этом направлении (кстати, сейчас проверим).
Ну и turtle.exitonclick()
это мы уже говорили, чтобы форма не гасла (если мы щелкнем мышкой по полю, форма погаснет, и программа завершит работу).
Давайте всё же проверим движение черепашки после поворота, добавим еще один forward .
Всё верно, всё сходится, далее черепашка пошла по новому направлению.
Я с детства угол рисовал...и прямоугольники
После удачного старта проверим, а может ли черепашка... нет, не нарисовать прямоугольник и квадрат. Это она, дорогие читатели, вы уже поняли, - может без проблем (даже предположу, что вы разобрались, как). А вот может ли черепашка... быть черепашкой, а не какой-то стрелкой? Элементарно.
Добавим после импорта библиотеки turtle вот такую команду
turtle.shape("turtle")
Ну вот! После запуска программы с такой командой всё рисует уже нормальная черепашка. Ну а теперь обещанный прямоугольник. Пусть длина будет 100, ширина 50 пикселей. Алгоритм такой: сначала черепашка ползет вперед на 100, потом поворачивается на 90 градусов, потом снова вперед уже на 50, и снова поворот на 90 и снова всё то же самое:
Вывод фигуры будет следующим:
Прямоугольник нарисован, но мы видим в нашей программе повторяющийся код. Раз такое дело, можем использовать цикл:
Вот. Результат не изменился, но код стал гораздо короче и удобнее.
А с квадратом еще проще: четыре стороны одинаковой длины и поворот на 90 градусов.
Мир в цвете...и в заливке
Все рисунки у нас пока как в черно-белом кино - черные линии, белая заливка. Исправим это. Раскрасим наш квадрат. Зададим параметр:
turtle.color('red','blue')
Черепашка красно-синяя, но квадрат наш просто красный, синяя заливка почему-то не прорисовалась. Не прорисовалась потому что мы не задали этот параметр. Давайте зададим:
Вот. Параметры turtle.begin_fill() ... turtle.end_fill() обозначают начало и конец заполнения, и наш квадрат имеет синюю заливку, цвет которой указан вторым параметром turtle.color().
Ну и напоследок, на финал этой статьи нарисуем круг. Не только квадратными фигурами балуется черепашка. Выводится окружность командой turtle.circle(100), где 100 - радиус круга в пикселязх
Если зададим параметр turtle.begin_fill() ... turtle.end_fill() , то получится не окружность, а круг, с заливкой blue.
Цвет самой окружности здесь так же зеленый, просто из-за интенсивного синего цвета она незаметна. Решение этой проблемы мы рассмотрим в следующей статье, посвященной черепашке на python. А на этом сегодняшнюю статью позвольте закончить, благодарю за внимание и до новых встреч.
#python #turtle #питон #графика