Методы forward и backward, left и right, setheading модуля turtle языка Python
Словарь урока
из модуля turtle: |
|
---|
В предыдущих уроках мы использовали команду 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)
У нас два одинаковых участка кода, которые рисуют две одинаковые кривые. Однако, из-за того, что перед выводом второй, исполнителю было задано другое направление, кривая оказалась повернутой.
У изученных на этом уроке команд есть сокращенные варианты:
forward
‒fd
backward
‒back
,bk
left
‒lt
right
‒rt
setheading
‒seth
Задания для самостоятельной работы
- Пусть черепаха нарисует примерно то же самое, что в последнем примере урока, используя команду
backward
. Телепортироваться можно только один раз. - Измените программный код последнего примера так, чтобы вторая кривая была зеркальным отражением первой (получится что-то вроде тазика).
- Используя команду
left
илиright
, запрограммируйте вывод квадрата, равностороннего треугольника. - Придумайте программу, которая чертит прямоугольный треугольник.