Методы forward и backward, left и right, setheading модуля turtle языка Python

Словарь урока

из модуля turtle:
  • teleport ‒ телепорт
  • goto ‒ перейти
  • write ‒ писать, записывать
  • stamp ‒ штамп, печать, отпечаток
  • font ‒ шрифт
  • align ‒ выравнивать
  • bold ‒ жирный шрифт
  • forward ‒ вперед
  • backward ‒ назад
  • left ‒ налево
  • right ‒ направо
  • heading ‒ направление
  • setheading ‒ установить (set) направление (heading)

В предыдущих уроках мы использовали команду goto, чтобы заставить черепаху нарисовать на холсте линию. В качестве аргументов мы передавали координаты места, куда она должна была перейти. И не важно, где черепаха стояла до этого: в центре холста, в левом нижнем углу, в правом верхнем. Из любого места она шла в указанное. Какой длины при этом окажется отрезок, под каким углом будет повернут, нельзя проконтролировать. То есть пройденное черепахой расстояние не важно.

С точки зрения перехода в одно и то же место, независимо от того, где черепаха находилась до этого, команду goto можно считать абсолютной.

Однако чаще требуется другое: нарисовать отрезок определенной длины, идущий в заданном направлении. Например, длинной в 100 точек, идущий вниз от текущей позиции. Чтобы легко это делать нам потребуется изучить такие команды модуля turtle языка Python как forward, backward, setheading, left и right.

Также в примерах этого урока мы превратим стрелочку в черепаху, чтобы лучше видеть, как она поворачивается (далее данная инструкция не будет упоминаться):

shape('turtle')

Итак, forward и backward заставляют черепаху идти вперед или назад на указанное число точек. Количество точек передается в скобках этих команд. Идти вперед означает, что черепаха будет двигаться туда, куда направлена ее голова. Если черепаха отображается в виде стрелочки, то перемещение будет в направлении указателя. Движение назад означает пятиться задом, то есть черепаха будет двигаться в направлении своего хвоста.

Когда мы запускаем программу, то по-умолчанию голова черепахи повернута направо. Это значит, что если скомандовать forward, она пойдет направо, если backward, то налево. В любом случае отрезки будут горизонтальными.

write('Старт 1', align='right')
stamp()
forward(100)
stamp()
write('Финиш 1')

teleport(0, -80)

write('Старт 2')
stamp()
backward(200)
stamp()
write('Финиш 2', align='right')

Для поворота черепахи используются команды right, left и setheading. Первые, подобно forward и backward, являются относительными. Выполняя их, черепаха поворачивается направо (по часовой стрелке) или налево (против часовой стрелки) на указанный угол. В какую сторону она окажется повернута, зависит от ее исходной ориентации. Так, если она смотрела направо, а ей скомандовали left(90), то она будет смотреть вверх. Но если она смотрела вниз, эта же команда повернет черепаху головой направо.

Другое дело ‒ функция setheading. Ей передают абсолютные значения. Как известно, полная окружность составляет 360 градусов. Модуль turtle по-умолчанию сконфигурирован так, что 0° ‒ это когда черепаха повернута направо, 90° ‒ вверх, 180° ‒ налево, 270° ‒ вниз. И не важно, как она была повернута до этого. Если сказано setheading(45), черепаха однозначно повернет точно на северо-восток.

write(heading(), font=('Lora', 18, 'bold'))
stamp()
forward(200)

setheading(90)
write(heading(), font=('Lora', 18, 'bold'), align='right')
stamp()
forward(200)

setheading(180)
write(heading(), font=('Lora', 18, 'bold'))
stamp()
forward(300)

setheading(270)
write(heading(), font=('Lora', 18, 'bold'))
stamp()
forward(200)

В коде выше, кроме setheading мы еще используем метод heading, который возвращает текущий угол поворота, далее он передается в метод write. Так мы узнаем, как сейчас повернута черепаха.

Рассмотрим пример с методами left и right:

forward(100)
left(45)
forward(100)
right(30)
forward(100)

teleport(-10, 0)
setheading(180)

forward(100)
left(45)
forward(100)
right(30)
forward(100)

У нас два одинаковых участка кода, которые рисуют две одинаковые кривые. Однако, из-за того, что перед выводом второй, исполнителю было задано другое направление, кривая оказалась повернутой.

У изученных на этом уроке команд есть сокращенные варианты:

Задания для самостоятельной работы

  1. Пусть черепаха нарисует примерно то же самое, что в последнем примере урока, используя команду backward. Телепортироваться можно только один раз.
  2. Измените программный код последнего примера так, чтобы вторая кривая была зеркальным отражением первой (получится что-то вроде тазика).
  3. Используя команду left или right, запрограммируйте вывод квадрата, равностороннего треугольника.
  4. Придумайте программу, которая чертит прямоугольный треугольник.

Turtle. Программирование на Python для школьников




Все разделы сайта