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

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

Исполнитель Робот

Робот — графический исполнитель, перемещающийся по клетчатому полю. Робот может закрашивать клетки, проверять наличие стен и измерять температуру/радиацию. Для использования первой строкой программы укажите

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

Поле робота

Поле представляет собой прямоугольную сетку клеток. На поле могут быть:

Команды перемещения

Команда Описание
влево Переместиться на одну клетку влево
вправо Переместиться на одну клетку вправо
вверх Переместиться на одну клетку вверх
вниз Переместиться на одну клетку вниз

При попытке пройти сквозь стену возникает ошибка.

Закрашивание

Команда Описание
закрасить Закрасить текущую клетку

Проверка стен

Функция Описание
слева свободно Истина, если слева нет стены
справа свободно Истина, если справа нет стены
сверху свободно Истина, если сверху нет стены
снизу свободно Истина, если снизу нет стены
слева стена Истина, если слева стена
справа стена Истина, если справа стена
сверху стена Истина, если сверху стена
снизу стена Истина, если снизу стена

Проверка клетки

Функция Описание
клетка закрашена Истина, если текущая клетка закрашена
клетка чистая Истина, если текущая клетка не закрашена

Датчики

Функция Описание
температура Значение температуры в текущей клетке
радиация Значение радиации в текущей клетке

Примеры

Простое перемещение

использовать Робот
алг
нач
    вправо
    вправо
    вниз
    закрасить
кон

Закрасить ряд

использовать Робот
алг
нач
    нц пока справа свободно
        закрасить
        вправо
    кц
    закрасить  | последняя клетка
кон

Закрасить квадрат 3×3

использовать Робот
алг
нач
    цел i, j
    нц для i от 1 до 3
        нц для j от 1 до 3
            закрасить
            если j < 3
            то
                вправо
            все
        кц
        если i < 3
        то
            влево
            влево
            вниз
        все
    кц
кон

Обход препятствия

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

Следование вдоль стены

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

Заливка области

использовать Робот
алг
нач
    заливка
кон

алг заливка
нач
    если клетка чистая
    то
        закрасить
        если сверху свободно
        то
            вверх
            заливка
            вниз
        все
        если снизу свободно
        то
            вниз
            заливка
            вверх
        все
        если слева свободно
        то
            влево
            заливка
            вправо
        все
        если справа свободно
        то
            вправо
            заливка
            влево
        все
    все
кон

Файл поля (.fil)

Поле робота задаётся в текстовом файле формата .fil:

; Комментарий
7 7           ; Размер поля: ширина высота
0 0           ; Начальная позиция робота: x y
; Специальные клетки: x y СтенаN СтенаE СтенаS СтенаW Закрашена Метка Радиация Температура R G B
3 3 0 1 0 0 0 0 0 0 0 0 0    ; клетка (3,3) со стеной справа

Формат специальных клеток

Поле Описание
x, y Координаты клетки
СтенаN 1 = стена сверху
СтенаE 1 = стена справа
СтенаS 1 = стена снизу
СтенаW 1 = стена слева
Закрашена 1 = клетка закрашена
Метка Метка клетки (не используется)
Радиация Значение радиации
Температура Значение температуры
R, G, B Цвет (не используется)

Использование в онлайн-песочнице

  1. Откройте qumir.dev
  2. Добавьте файл поля .fil через кнопку в секции IO
  3. Напишите программу с командами робота
  4. Нажмите Run
  5. Переключите вывод на Робот для просмотра поля

Если файл поля не добавлен, используется поле по умолчанию 7×7 без стен.

Интерактивное редактирование поля

При редактировании файла .fil изменения сразу отображаются на поле робота. Это удобно для создания и отладки лабиринтов: просто меняйте координаты стен или размеры поля и смотрите результат в реальном времени.

Ленивая загрузка и программная генерация

Робот загружает поле из файла лениво — только при первой команде движения или проверки. Это позволяет программно генерировать лабиринт перед началом работы робота:

  1. Программа записывает содержимое .fil файла
  2. При первой команде робота (вверх, вниз и т.д.) поле загружается из файла
  3. Робот работает с программно созданным лабиринтом

Пример такого подхода — maze_generator.kum: программа сначала генерирует случайный лабиринт и сохраняет его в файл, а затем робот проходит этот лабиринт.

Система координат

См. также