Объекты и классы. Модуль turtle
Цель: изучить основы объектно-ориентированного подхода; рассмотреть понятия класса, конструктора, метода.
Справка по модулю turtle
Класс Turtle содержит следующие методы (функции):
| Метод | Назначение | Пример |
|---|---|---|
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 хранит данные о текущем положении и направлении объекта. Чтобы получить эти значения используются следующие методы (функции). Эти методы возвращают значение и могут использоваться внутри других выражений:
| Метод | Назначение | Пример |
|---|---|---|
xcor() |
Возвращает координату x Черепахи | x = turtle.xcor() |
ycor() |
Возвращает координату y Черепахи | y = turtle.ycor() |
heading() |
Возвращает текущее направление Черепахи (в градусах) | a = turtle.heading() |
Экспедиция на Марс
Помогите марсоходу выполнить ряд миссий по исследованию планеты1.
Скачайте архив mars.zip и распакуйте его на рабочем диске. Для каждой последующей миссии открывайте файл, указанный в скобках в названии миссии с помощью среды программирования IDLE.
Миссия № 1 - Периметр (m01.py)
Таблица 1 содержит два метода turtle которые понадобятся для решения задачи.
Обратите внимание на повторяющиеся инструкции. Их можно поместить внутрь цикла с известным количеством повторений.
Для движения вперёд необходимо записать следующую инструкцию: rover.forward(320). Чтобы повернуть используйте следующую инструкцию: rover.left(90).
Миссия № 2 - Кратеры (m02.py)
turtle которые понадобятся для решения задачи. Они же использовались в предыдущей задаче.
Миссия № 3 - Объезд (m03.py)
Марсоходу необходимо объехать особенно большой кратер по-кругу. Используя информацию на карте, напишите программу движения марсохода по указанной траектории. После каждого поворота на экран выводится текущее направление марсохода в следующем формате:
Текущий курс марсохода: 30.0 град.
Текущий курс марсохода: 60.0 град.
Текущий курс марсохода: 90.0 град.
...Таблица 1 содержит два метода turtle которые понадобятся для решения задачи. Они же использовались в предыдущей задаче.
Для решения целесообразно применить цикл с известным количеством повторений.
Таблица 2 содержит метод с помощью которого можно узнать текущее направление ровера.
rover.heading() - текущее направление ровера.
Миссия № 4 - Разведка (m04.py)
Марсоходу необходимо посетить ещё три кратера, при этом не упав в расщелину (обозначена тёмно-красным цветом). Напишите программу с помощью которой марсоход доедет до всех трёх кратеров, не упав в пропасть. Марсоход должен остановиться на последнем кратере. Порядок посещения кратеров выберите самостоятельно.
Программа должна вывести на экран координаты каждого кратера в следующем формате:
Координаты кратера: (30, -130)Таблица 2 содержит методы с помощью которых можно узнать текущие координаты ровера.
Координата x: rover.xcor(). Координата y: rover.ycor().
Миссия № 5 - Карта поверхности (m05.py)
Марсоходу необходимо составить детальную карту поверхности планеты. Для этого ему нужно проехать по указанному на карте маршруту. Напишите программу движения марсохода.
Длина стороны одной клетки - 47 метров.
Марсоходу не обязательно точно следовать белой линии. Все повороты могут быть совершены на 90 градусов. Главное, чтобы движение происходило по зигзагообразной траектории.
В движении ровера есть повторяющийся шаблон. Значит в алгоритме решения будет использован цикл.
Чередование поворотов можно реализовать с помощью полной формы ветвления.
Направление поворота ровера будет зависеть от значения переменной цикла - будет ли она чётной или нечётной. Проверить на чётность в Python можно с помощью оператора получения остатка от деления %.
Один из возможных алгоритмов решения:
для i повторять 7 раз:
двигаться вперёд на 330 пикселей
если i чётное:
повернуть на 90 градусов влево
двигаться вперёд на 47 пикселей
повернуть на 90 градусов влево
иначе:
повернуть на 90 градусов вправо
двигаться вперёд на 47 пикселей
повернуть на 90 градусов вправо
двигаться вперёд на 330 пикселейМиссия № 6 - Зигзаг (m06.py)
Вам необходимо разработать программу альтернативного движения марсохода по поверхности планеты для составления карты. Маршрут движения марсохода показан на рисунке. Напишите программу движения марсохода.
Марсоходу не обязательно точно следовать белой линии. Все повороты могут быть совершены на 90 градусов. Главное, чтобы движение происходило по зигзагообразной траектории.
Сноски
Условия заданий, исходные коды шаблонов и изображения взяты на ресурсе 101computing.net.↩︎






