📖 Документация Qumir

← Вернуться в Playground

← Все примеры

Обход по стенам

Робот обходит периметр прямоугольной области, закрашивая все клетки вдоль стен по часовой стрелке. Пример знакомит с циклом нц пока ... кц и проверкой стен.

Идея алгоритма

  1. Двигаемся вправо, пока справа свободно, закрашивая каждую клетку
  2. Упёрлись в стену -- поворачиваем и двигаемся вниз
  3. Упёрлись -- двигаемся влево
  4. Упёрлись -- двигаемся вверх
  5. В итоге Робот обходит весь периметр и возвращается в исходную точку

Разбор

Подключение исполнителя

использовать Робот

Команда использовать Робот делает доступными все команды перемещения, закрашивания и проверки стен.

Движение вдоль каждой стороны

Программа состоит из четырёх одинаковых по структуре циклов -- по одному на каждую сторону прямоугольника.

Правая сторона:

нц пока справа свободно
  вправо
  закрасить
кц

Нижняя сторона:

нц пока снизу свободно
  вниз
  закрасить
кц

Аналогично: Робот спускается вниз, пока не встретит стену.

Левая и верхняя стороны:

нц пока слева свободно
  влево
  закрасить
кц

нц пока сверху свободно
  вверх
  закрасить
кц

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

Команды проверки стен:

Полная программа

использовать Робот

алг обход_стен
нач
  | Идём вдоль стены пока можем
  нц пока справа свободно
    вправо
    закрасить
  кц

  нц пока снизу свободно
    вниз
    закрасить
  кц

  нц пока слева свободно
    влево
    закрасить
  кц

  нц пока сверху свободно
    вверх
    закрасить
  кц
кон

▶ Запустить пример