Найти тему
Программы от меня

Черепашьим шагом по графике Питона

Оглавление

Да-да, дорогие читатели! Именно черепашьим шагом мы начнем изучать графику python. И дело, как вы догадались, совсем не в медленной скорости изучения и продвижения результатов (конечно, скажете вы, медленные скорости - это не про современные технологии, и будете абсолютно правы). Речь конечно же про графику на языке программирования python, реализуемую через ... черепашку turtle.

История вопроса

Итак, что это за зверь такой в python - turtle? Вот что говорится в описаниях этого алгоритма:



Turile - принцип организации библиотеки графического вывода, построенный на метафоре Черепахи, воображаемого роботоподобного устройства, которое перемещается по экрану или бумаге и поворачивается в заданных направлениях, при этом оставляя (или, по выбору, не оставляя) за собой нарисованный след заданного цвета и ширины.

Ага, понятно, значит, метафора... То есть создатели python реализовали самую простую графику, и реализовали её метафорическим образом в виде черепашки.

Хороша метафора!  Кадр из фильма "Аниськин и Фантомас"
Хороша метафора! Кадр из фильма "Аниськин и Фантомас"

Простые движенья...я продолжаю


Что ж, хватит теории, переходим к практике. Запускаем любой редактор для работы с python, создаем файл
t.py и пишем в нем вот такой текст:

-3

Запускаем нашу программу командой python t.py, и...

... и моргнула какая-то форма, что-то по ней быстро пробежало и всё исчезло. Это python сгенерировал форму, отработал в ней действия и уничтожил эту форму. Нам это очень неудобно, поэтому мы реализуем всё таким образом, чтобы форма после работы алгоритма оставалась, а пропадала только по щелчку мыши по ней. Сделать это не просто, а... очень просто. Добавим команду
turtle.exitonclick(). Программа примет следующий вид:

-4

Запускаем программу и.... теперь уже что-то удобоваримоое, нормальная непропадающая форма, правда какая-то линия посередине нарисована и треугольничек в конце её куда-то повернутый. Они что, хотят нам сказать, что ЭТО - черепашка??!!!!

-5

Вот теперь и настало время разобраться, что обозначают строки в нашем черепашьем алгоритме.
import turtle

импортируем библиотеку turtle и одновременно создаем экземпляр черепашки, которая у нас будет ходить, поворачиваться, циклить и прочее-прочее-прочее.

turtle.forward(90)

черепашка прошла слева направо (это для нее перед в начале пути) из середины экранной формы и прошла 90 пикселей

turtle.left(45)

черепашка повернула налево на 45 градусов. Потому и треугольничек немного повернут вверх (верх для двигавшейся слева направо черепашки - это лево, не пугайтесь). Если мы после этого дадим ей команду forward, она пойдет дальше именно в этом направлении (кстати, сейчас проверим).

Ну и turtle.exitonclick()

это мы уже говорили, чтобы форма не гасла (если мы щелкнем мышкой по полю, форма погаснет, и программа завершит работу).

Давайте всё же проверим движение черепашки после поворота, добавим еще один forward .

-6
-7

Всё верно, всё сходится, далее черепашка пошла по новому направлению.

Я с детства угол рисовал...и прямоугольники

После удачного старта проверим, а может ли черепашка... нет, не нарисовать прямоугольник и квадрат. Это она, дорогие читатели, вы уже поняли, - может без проблем (даже предположу, что вы разобрались, как). А вот может ли черепашка... быть черепашкой, а не какой-то стрелкой? Элементарно.

Добавим после импорта библиотеки turtle вот такую команду
turtle.shape("turtle")

-8

Ну вот! После запуска программы с такой командой всё рисует уже нормальная черепашка. Ну а теперь обещанный прямоугольник. Пусть длина будет 100, ширина 50 пикселей. Алгоритм такой: сначала черепашка ползет вперед на 100, потом поворачивается на 90 градусов, потом снова вперед уже на 50, и снова поворот на 90 и снова всё то же самое:

-9

Вывод фигуры будет следующим:

-10

Прямоугольник нарисован, но мы видим в нашей программе повторяющийся код. Раз такое дело, можем использовать цикл:

-11

Вот. Результат не изменился, но код стал гораздо короче и удобнее.

А с квадратом еще проще: четыре стороны одинаковой длины и поворот на 90 градусов.

-12

Мир в цвете...и в заливке

Все рисунки у нас пока как в черно-белом кино - черные линии, белая заливка. Исправим это. Раскрасим наш квадрат. Зададим параметр:

turtle.color('red','blue')

-13

Черепашка красно-синяя, но квадрат наш просто красный, синяя заливка почему-то не прорисовалась. Не прорисовалась потому что мы не задали этот параметр. Давайте зададим:

-14

Вот. Параметры turtle.begin_fill() ... turtle.end_fill() обозначают начало и конец заполнения, и наш квадрат имеет синюю заливку, цвет которой указан вторым параметром turtle.color().

Ну и напоследок, на финал этой статьи нарисуем круг. Не только квадратными фигурами балуется черепашка. Выводится окружность командой turtle.circle(100), где 100 - радиус круга в пикселязх



-15

Если зададим параметр turtle.begin_fill() ... turtle.end_fill() , то получится не окружность, а круг, с заливкой blue.

-16

Цвет самой окружности здесь так же зеленый, просто из-за интенсивного синего цвета она незаметна. Решение этой проблемы мы рассмотрим в следующей статье, посвященной черепашке на python. А на этом сегодняшнюю статью позвольте закончить, благодарю за внимание и до новых встреч.

#python #turtle #питон #графика