Глава 6 · Рисуем классные вещи с помощью Turtle

Движение вперёд и назад

Первое, что должна уметь черепашка — двигаться. В этом разделе вы напишете свою первую программу, которая по-настоящему рисует.

Зачем это нужно

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

Простая модель

Представьте черепашку как перо на листе бумаги. У пера есть две вещи: позиция (где оно сейчас находится) и курс — направление, в которое оно «смотрит». Когда черепашка едет вперёд, она просто перемещается по прямой в сторону своего курса. Когда она поворачивает, меняется курс, а позиция остаётся прежней — как будто вы стоите на месте и просто поворачиваетесь.

Синтаксис

У объекта черепашки есть четыре базовые команды движения:

Первый рабочий пример

Нарисуем букву «Г»: проедем вперёд, повернём и проедем ещё раз.

turtle_dvizhenie.py
import turtle

# создаём окно и черепашку
screen = turtle.Screen()
artist = turtle.Turtle()

# едем вперёд на 120 пикселей
artist.forward(120)

# поворачиваем на 90 градусов против часовой стрелки
artist.left(90)

# едем вперёд ещё раз — получаем букву «Г»
artist.forward(80)

screen.exitonclick()  # окно закроется по клику мыши

Разбор по шагам

Совет
Числа в forward() и right()/left() могут быть отрицательными. forward(-50) и backward(50) делают одно и то же.

Эксперимент 1

Измените расстояние 120 на 250 и угол 90 на 45. Перед запуском попробуйте предсказать: в какую сторону теперь «смотрит» черепашка после поворота?

Эксперимент 2

Добавьте третью пару команд left(90) и forward(120) в конец программы. Какая фигура получится?

Типичная ошибка

Внимание
Начинающие часто путают right()/left() с движением — кажется, что черепашка должна сместиться в сторону. На самом деле эти команды только поворачивают курс и не двигают черепашку ни на пиксель.

Диагностика: если после поворота фигура выглядит «сплющенной» или линии накладываются друг на друга — скорее всего, вы забыли вызвать forward() после поворота, либо перепутали местами поворот и движение.

Исправление: перечитайте программу построчно и для каждой команды спросите себя: «это движение или поворот?» — держите эти два действия отдельно друг от друга.

Современный вариант

В старом коде черепашку часто рисуют без явного объекта — модуль turtle автоматически создаёт «черепашку по умолчанию», и её можно двигать напрямую через функции модуля.

Классический подход → современный Python 3.14
Классический подход
import turtle

# без явного объекта —
# используется скрытая
# черепашка по умолчанию
turtle.forward(120)
turtle.left(90)
turtle.forward(80)
turtle.done()
Современный Python 3.14
import turtle

# явный объект — понятно,
# какая черепашка рисует,
# легко добавить вторую
artist = turtle.Turtle()
artist.forward(120)
artist.left(90)
artist.forward(80)
turtle.done()
Что использовать сегодня: явный объект turtle.Turtle(). Он ничего не усложняет, зато сразу готовит вас к главе 14 (объекты) и легко масштабируется — если позже понадобится нарисовать гонку из нескольких черепашек (см. мини-проект в главе 12), у каждой будет своё имя и своё состояние. Модульные функции (turtle.forward() без объекта) всё ещё встречаются в старом коде и учебниках — знать их полезно, но начинайте привычку сразу с объекта.
Практика в Jupyter Notebook
06-02-turtle-dvizhenie.ipynb · эксперименты, задание и самостоятельная практика
Открыть ноутбук →

Задание

★ Базовая практика
Буква «Т»

Используя только forward, backward, left и right, нарисуйте букву «Т» одной непрерывной линией пера.

★★ Самостоятельная задача
Лестница из трёх ступенек

Нарисуйте лестницу, состоящую из трёх одинаковых «ступенек» (вперёд-поворот-вперёд-поворот). Попробуйте обойтись без повторения одинакового блока кода вручную — подсказка: этому вы научитесь в главе 10, а пока просто повторите блок трижды подряд.

Что запомнить

  • forward()/backward() двигают черепашку по прямой; left()/right() только поворачивают курс.
  • Позиция и курс — это два независимых свойства черепашки.
  • Современный стиль — создавать явный объект turtle.Turtle(), а не полагаться на скрытую черепашку по умолчанию.
  • screen.exitonclick() или turtle.done() нужны, чтобы окно не закрылось мгновенно.