Черепаха и Чертёжник: рисование в КуМире

Кроме Робота, в КуМире есть рисующие исполнители. Знакомимся с Черепахой и Чертёжником.

Черепаха рисует, двигаясь вперёд и поворачиваясь на градусы; Чертёжник рисует отрезки по координатам (x, y). Оба оставляют след, когда «перо» опущено.

Черепаха: рисование относительными движениями

Черепаха ползёт по полю и тянет за собой след. Она не знает абсолютных координат — она думает «вперёд» и «повернуть». Это называется относительной (черепашьей) графикой.

КомандаЧто делает
вперёд(n)ползёт вперёд на n шагов
назад(n)ползёт назад на n шагов
направо(a)поворот направо на a градусов
налево(a)поворот налево на a градусов
поднять хвостперестать оставлять след
опустить хвостснова оставлять след

По умолчанию хвост опущен, и Черепаха рисует. Чтобы переместиться без линии — поднимают хвост.

Черепаха рисует квадрат

Квадрат — это «вперёд и поворот на 90°», повторённые 4 раза:

использовать Черепаха
алг
нач
  нц 4 раз
    вперёд(100)
    направо(90)
  кц
кон

Поворот на 90° четыре раза замыкает фигуру. Заменив 90 на 120 и повторив 3 раза, получите равносторонний треугольник; на 60 при 6 повторах — шестиугольник. Общая формула: для правильного N-угольника угол поворота равен 360 / N.

Чертёжник: рисование по координатам

Чертёжник работает иначе — он мыслит координатами. У него есть «перо», которое можно поднять и опустить:

КомандаЧто делает
опустить перодальнейшие перемещения рисуют линию
поднять пероперемещения без рисования
сместиться в точку(x, y)перейти в точку с координатами (x, y)
сместиться на вектор(dx, dy)сдвинуться на dx вправо и dy вверх

Разница принципиальна: сместиться в точку(3, 4) переносит перо в конкретную точку (3, 4) независимо от того, где оно было; сместиться на вектор(3, 4) сдвигает относительно текущего положения.

Чертёжник рисует прямоугольник

использовать Чертёжник
алг
нач
  сместиться в точку(0, 0)
  опустить перо
  сместиться на вектор(5, 0)   | нижняя сторона
  сместиться на вектор(0, 3)   | правая сторона
  сместиться на вектор(-5, 0)  | верхняя сторона
  сместиться на вектор(0, -3)  | левая сторона
  поднять перо
кон

Перо обошло прямоугольник 5×3 и вернулось в исходную точку.

Имитация Чертёжника на Python

Посчитаем координаты вершин прямоугольника, складывая векторы — так же, как это делает Чертёжник:

x, y = 0, 0
puti = [(5, 0), (0, 3), (-5, 0), (0, -3)]
print("старт:", (x, y))
for dx, dy in puti:
    x += dx
    y += dy
    print("перо в точке:", (x, y))

Вывод:

старт: (0, 0)
перо в точке: (5, 0)
перо в точке: (5, 3)
перо в точке: (0, 3)
перо в точке: (0, 0)

Перо вернулось в (0, 0) — прямоугольник замкнулся, что и требовалось.

Попробуй сам

1) Заставьте Черепаху нарисовать равносторонний треугольник (подсказка: 3 повтора, поворот на 120°). 2) Заставьте Чертёжника нарисовать букву «Г» командами сместиться на вектор.

Частые ошибки

  • Забыть опустить перо/опустить хвост — фигура не нарисуется (перо поднято).
  • У Черепахи: неверный угол поворота — фигура не замкнётся (для N-угольника угол = 360/N).
  • Перепутать «в точку» (абсолютно) и «на вектор» (относительно) у Чертёжника.
  • Не подключить нужного исполнителя строкой использовать.

Итог

  • Черепаха рисует относительно: вперёд, направо/налево на градусы, хвост вверх/вниз.
  • Чертёжник рисует по координатам: сместиться в точку и на вектор, перо вверх/вниз.
  • «В точку» — абсолютно, «на вектор» — относительно текущего положения.
  • Для правильного N-угольника Черепахи угол поворота равен 360/N.
Проверьте себя
1. Чем отличается «сместиться в точку(x,y)» от «сместиться на вектор(dx,dy)» у Чертёжника?
AНичем, это синонимы
B«в точку» — абсолютные координаты, «на вектор» — сдвиг от текущего положения
C«в точку» рисует, «на вектор» — нет
D«в точку» только для Черепахи
2. На какой угол должна поворачивать Черепаха, чтобы нарисовать равносторонний треугольник?
AНа 60 градусов
BНа 90 градусов
CНа 120 градусов
DНа 180 градусов
3. Что нужно сделать, чтобы исполнитель не оставлял след при перемещении?
AОпустить перо / хвост
BПоднять перо / хвост
CЗакрасить клетку
DИспользовать команду назад
Поддержать проект