Объекты и классы. Модуль 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()

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

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

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

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

✍️ Сделайте самостоятельно

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

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

Миссия 1

Миссия 1

содержит два метода turtle которые понадобятся для решения задачи.


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


Алгоритм решения:

повторить 4 раза:
  вперёд на 330 пикселей
  повернуть на 90 градусов налево

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

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

✍️ Сделайте самостоятельно

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

Миссия 2

Миссия 2

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

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

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

✍️ Сделайте самостоятельно

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

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

Миссия 3

Миссия 3

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


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


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

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


rover.heading() - текущее направление ровера.

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

✍️ Сделайте самостоятельно

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

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

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

Миссия 4

Миссия 4

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


Координата x: rover.xcor(). Координата y: rover.ycor().


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

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

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

✍️ Сделайте самостоятельно

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

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

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

Миссия 5

Миссия 5

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


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


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


Один из возможных алгоритмов решения:

для i повторять 7 раз:
  двигаться вперёд на 330 пикселей
  если i чётное:
      повернуть на 90 градусов влево
      двигаться вперёд на 47 пикселей
      повернуть на 90 градусов влево
  иначе:
      повернуть на 90 градусов вправо
      двигаться вперёд на 47 пикселей
      повернуть на 90 градусов вправо
двигаться вперёд на 330 пикселей

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

✍️ Сделайте самостоятельно

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

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

Миссия 6

Миссия 6
0/6

Сноски

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