Перейти к основному содержимому

Черепашка turtle — рисуем фигуры

Родителям и детям
Откуда материал

Главы 4 и 11 книги Дж. Бриггса "Python для детей". Дополнительные примеры — в Lab: Turtle, в статье Turtle (для старших) и в блоке Программа на Python.

Turtle (черепашка) — встроенный модуль Python для рисования линиями на экране. Модуль — готовый набор команд, который подключают через import turtle.

На экране появляется маленький исполнитель (черепашка). Вы даёте команды — "вперёд", "поверни налево" — и черепашка оставляет след. Так получается рисунок. Тот же принцип, что у кота в Scratch, только команды пишут текстом.

Пиксель — крошечная точка на экране. Команда forward(50) сдвигает черепашку на 50 пикселей и рисует линию.


Первые команды

Создайте файл turtle_demo.py и запустите в IDLE (F5) или через python turtle_demo.py:

import turtle

t = turtle.Pen() # "ручка" — объект, который рисует
t.forward(50) # вперёд на 50 пикселей
t.left(90) # поворот налево на 90 градусов
t.forward(50)
t.reset() # очистить холст и вернуть черепашку в центр

Основные команды:

  • forward(n) — пройти вперёд на n пикселей, оставив линию
  • backward(n) — то же назад
  • left(градусы) — повернуть налево
  • right(градусы) — повернуть направо
  • up() — поднять "перо", линия при движении не рисуется
  • down() — опустить перо, линия снова рисуется
  • reset() — стереть всё и начать с центра
  • clear() — стереть след, черепашка остаётся на месте

Градусы и повороты

Градус — единица измерения угла. Полный круг — 360°.

  • стартовое положение — черепашка смотрит вправо (0°)
  • left(90) — смотрит вверх
  • left(180) или right(180) — смотрит назад
  • left(90) даёт тот же поворот, что right(270)

Квадрат — четыре одинаковые стороны и четыре поворота на 90°. Удобно оформить циклом for (см. Введение в программирование):

import turtle
t = turtle.Pen()

for i in range(4):
t.forward(80)
t.left(90)

turtle.done() # окно останется открытым, пока Вы его не закроете

range(4) даёт четыре прохода цикла — ровно столько, сколько сторон у квадрата.


Несколько черепашек

Каждый вызов turtle.Pen() создаёт отдельный объект — свою черепашку со своим положением и направлением. Подробнее про объекты — в статье Классы и объекты.

import turtle

avery = turtle.Pen()
kate = turtle.Pen()

avery.forward(50)
avery.right(90)
kate.left(90)
kate.forward(100)

turtle.done()

avery и kate рисуют независимо друг от друга.


Функция для квадрата

Функция — именованный блок кода, который можно вызывать много раз. Вместо копирования четырёх строк пишем один раз:

import turtle
t = turtle.Pen()

def mysquare(size, filled):
if filled:
t.begin_fill()
for x in range(4):
t.forward(size)
t.left(90)
if filled:
t.end_fill()

t.color(0.2, 0.6, 1.0) # цвет в формате RGB от 0.0 до 1.0
mysquare(50, True) # закрашенный квадрат
mysquare(120, False) # только контур

turtle.done()

RGB (Red, Green, Blue) — три числа для красного, зелёного и синего. (0.2, 0.6, 1.0) — светло-синий. В веб-дизайне те же идеи — см. HTML и CSS.

Параметры функции:

  • size — длина стороны в пикселях
  • filledTrue, если квадрат нужно залить цветом

Звезда и остаток от деления

Оператор % возвращает остаток от деления. Выражение x % 2 == 0 проверяет, чётный ли номер шага цикла.

import turtle
t = turtle.Pen()
t.color(0.9, 0.75, 0)

for x in range(1, 19):
t.forward(100)
if x % 2 == 0:
t.left(175)
else:
t.left(225)

turtle.done()

На чётных шагах поворот 175°, на нечётных — 225°. Чередование углов даёт узор в виде звезды. В книге тот же цикл оборачивают в функцию mystar(size, filled) с begin_fill и end_fill.


Задания для практики

  • Прямоугольник — две пары сторон разной длины (например, 100 и 40 пикселей)
  • Равносторонний треугольник — три стороны и три поворота на 120° (120 + 120 + 120 = 360)
  • Рамка без угловup(), сдвиг без линии, down(), короткий отрезок (гл. 4 книги)
  • Черепашьи вилы — четыре объекта Pen(), четыре линии от одной точки (упражнение к гл. 8)
Интерактив

Соберите цепочку блоков ниже — тот же принцип "исполнитель + команды", что в Scratch и turtle.

Компонент загружается. Это пример интеграции — сейчас мы запрашиваем данные из другой системы.

Частые проблемы

ПроблемаЧто сделать
No module named tkinterTurtle рисует через библиотеку tkinter. На Linux установите пакет python3-tk
Окно сразу закрываетсяДобавьте turtle.done() в конец программы
Черепашка "зависла"Закройте окно графики или перезапустите IDLE

Связанные материалы