Объекты и классы. Модуль turtle

Цель: изучить основы объектно-ориентированного подхода; рассмотреть понятия класса, конструктора, метода.

Справка по модулю turtle

УведомлениеНачало координат

Начало координат находится в центре экрана, по которому движется Черепаха.

Класс Turtle содержит следующие методы (функции):

Таблица 1: Методы для перемещения черепашки
Метод Назначение Пример
forward(n) Движение вперёд на n пикселей в сторону, куда направлена Черепаха turtle.forward(50)
backward(n) Движение назад на n пикселей turtle.backward(20)
right(a) Поворот Черепахи направо на угол a градусов turtle.right(45)
left(a) Поворот Черепахи налево на угол a градусов turtle.left(60)

Экземпляр класса Turtle хранит данные о текущем положении и направлении объекта. Чтобы получить эти значения используются следующие методы (функции). Эти методы возвращают значение и могут использоваться внутри других выражений:

Таблица 2: Методы для получения состояния черепашки
Метод Назначение Пример
xcor() Возвращает координату x Черепахи x = turtle.xcor()
ycor() Возвращает координату y Черепахи y = turtle.ycor()
heading() Возвращает текущее направление Черепахи (в градусах) a = turtle.heading()

Экспедиция на Марс

Помогите марсоходу выполнить ряд миссий по исследованию планеты1.

Скачайте архив mars.zip и распакуйте его на рабочем диске. Для каждой последующей миссии открывайте файл, указанный в скобках в названии миссии с помощью среды программирования IDLE.

Миссия № 1 - Периметр (m01.py)

Марсоход находится на площадке размером 330x330 метров. Ваша задача проехать исследуемую площадку по периметру. Путь следования марсохода изображен белым цветом.

В этой и следующих задачах 1 метр = 1 пиксель.


Таблица 1 содержит две функции turtle которые понадобятся для решения задачи.

Обратите внимание на повторяющиеся инструкции. Их можно поместить внутрь цикла с известным количеством повторений.

Для движения вперёд необходимо записать следующую инструкцию: forward(320). Чтобы повернуть используйте следующую инструкцию: left(90) или right(90).

Миссия № 2 - Кратеры (m02.py)

Исследуя поверхность Марса, марсоход обнаружил три кратера. Напишите программу с помощью которой марсоход посетит все три кратера по заданному маршруту. Для написания программы используйте информацию на карте.


Не пишите весь код решения целиком. Записывайте несколько инструкций и запускайте программу на проверку. Убедитесь, что добавленные инструкции работают корректно и только потом пишите код дальше. Такой подход поможет избежать долгого поиска ошибок в коде.

Таблица 1 содержит два метода turtle которые понадобятся для решения задачи. Они же использовались в предыдущей задаче.

Миссия № 3 - Объезд (m03.py)

Марсоходу необходимо объехать особенно большой кратер по-кругу. Используя информацию на карте, напишите программу движения марсохода по указанной траектории. После каждого поворота на экран выводится текущее направление марсохода в следующем формате:

Текущий курс марсохода: 30.0 град.
Текущий курс марсохода: 60.0 град.
Текущий курс марсохода: 90.0 град.
...

Напишите функцию n_gon(num, steps) с помощью которой черепаха сможет изображать многоугольник с num сторонами. Длина стороны - steps.


Таблица 1 содержит две функции turtle которые понадобятся для решения задачи. Они же использовались в предыдущей задаче.


Для решения целесообразно применить цикл с известным количеством повторений.


  # ??? - количество итераций цикла (подставьте самостоятельно)
  for i in range(???):
      # инструкции по перемещению ровера
      # поворот
      # вывод направления ровера

Таблица 2 содержит метод с помощью которого можно узнать текущее направление ровера.

Миссия № 4 - Разведка (m04.py)

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

Программа должна вывести на экран координаты каждой площадки в следующем формате:

Координаты: (30, -130)

Таблица 2 содержит методы с помощью которых можно узнать текущие координаты ровера.


Чтобы вывести строку в нужном формате, используйте f-строки. Пример такой строки в которую подставляются значения двух переменных показан далее:

f"Ответ 1: {<переменная1>}, Ответ 2: {<переменная2>}"

Миссия № 5 - Карта поверхности (m05.py)

Марсоходу необходимо составить детальную карту поверхности планеты. Для этого ему нужно проехать по указанному на карте маршруту. Напишите программу движения марсохода.

Длина стороны одной клетки - 47 метров (47 пикселей).


В движении ровера есть повторяющийся шаблон. Значит в алгоритме решения будет использован цикл.

Чередование поворотов можно реализовать с помощью полной формы ветвления.

Направление поворота ровера будет зависеть от значения переменной цикла - будет ли она чётной или нечётной. Проверить на чётность в Python можно с помощью оператора получения остатка от деления %.

Миссия № 6 - Зигзаг (m06.py)

Вам необходимо разработать программу альтернативного движения марсохода по поверхности планеты для составления карты. Маршрут движения марсохода показан на рисунке.

Сноски

  1. Условия заданий, исходные коды шаблонов и изображения основаны на заданиях с ресурса 101computing.net.↩︎