Добро пожаловать! Этот симулятор позволяет писать программы на языке Кумир для управления виртуальным роботом, а также вручную редактировать его окружение.
🗑️ (Очистить): Стирает весь код в редакторе.🛑 (Стоп): Немедленно останавливает выполнение программы (если она
запущена) и анимацию.
▶️ (Старт): Запускает выполнение написанного кода. Кнопка неактивна во
время выполнения.
🔄 (Сброс): Возвращает поле и позицию робота к начальному состоянию
(пустое поле 7x7, робот в 0,0) и очищает код.
вывод)
и сообщения об ошибках.
Эти кнопки позволяют управлять роботом и полем вручную, без написания кода.
↑, ↓, ←, →): Перемещают робота на одну клетку в выбранном
направлении, если путь не преграждает стена или граница поля. (Горячие клавиши: W, S, A, D)
Маркер + (Q): Ставит белый круглый маркер в текущую клетку
робота (если там еще нет маркера).
Маркер - (E): Убирает маркер из текущей клетки робота (если
он там есть).
Клетка + (Z): Закрашивает текущую клетку робота серым
цветом (если она не закрашена).
Клетка - (X): Убирает закраску с текущей клетки (если она
была закрашена).
Вкл/Выкл Ред. (R): Переключает режим взаимодействия с
полем.
Шире / Уже: Увеличивает / уменьшает ширину поля на 1 клетку.Выше / Ниже: Увеличивает / уменьшает высоту поля на 1 клетку.Помощь (F1): Открывает это окно справки.Импорт .fil: Позволяет загрузить состояние поля (размеры, стены, маркеры, клетки,
символы, радиацию, температуру, позицию робота) из специального файла формата .fil.
Чтобы использовать команды Робота в своем коде, программа должна начинаться со строки:
использовать Робот
Примечание: В этом симуляторе эта строка просто включает режим работы с роботом, но не сбрасывает поле, если оно было настроено вручную или импортировано.
вверх - Переместить робота на одну клетку вверх.вниз - Переместить робота на одну клетку вниз.влево - Переместить робота на одну клетку влево.вправо - Переместить робота на одну клетку вправо.Ошибки: Если на пути робота находится стена или граница поля, выполнение команды прервется с ошибкой "Стена/граница!".
закрасить - Закрашивает текущую клетку, где стоит робот. Если клетка уже закрашена, произойдет
ошибка (в стандартном Кумире ошибки нет, но здесь она добавлена для
явности).
Эти команды возвращают логическое значение да (истина) или нет (ложь). Они часто
используются в конструкциях если или нц пока.
сверху стена / сверху свободноснизу стена / снизу свободнослева стена / слева свободносправа стена / справа свободноклетка закрашена - Проверяет, закрашена ли текущая клетка.клетка чистая - Проверяет, НЕ закрашена ли текущая клетка.Эти команды возвращают числовые значения из текущей клетки робота.
радиация - Возвращает значение уровня радиации (вещественное число). Если не установлено,
возвращает 0.0.
температура - Возвращает значение температуры (целое число). Если не установлено, возвращает
0.
Значения радиации и температуры можно задать только при импорте поля из файла .fil.
Простая программа на Кумире для Робота обычно выглядит так:
использовать Робот
алг МояПрограмма | Название алгоритма (необязательно для основной)
нач
| Здесь пишутся команды Робота и другие команды Кумира
влево
закрасить
...
кон
алг: Начало алгоритма. После него может идти имя алгоритма.нач: Начало блока команд алгоритма.кон: Конец блока команд и конец алгоритма.| или #: Символ комментария. Все, что идет после него до конца строки,
игнорируется.
цел счетчик | Целое число
вещ расстояние | Вещественное (дробное) число
лог стена_справа | Логическое (да/нет)
лит сообщение | Строка текста
сим буква | Один символ
:=.
счетчик := 0
расстояние := 12.5
сообщение := "Робот на базе"
стена_справа := справа стена | Присваивание результата датчика
цел таб Матрица[1:10, 0:5] | Двумерная таблица целых чисел
вещ таб Координаты[1:3] | Одномерная таблица вещественных чисел
...
Матрица[2, 3] := 100 | Доступ к элементу
+, -, *, / (деление),
div (целочисленное деление), mod (остаток от деления).
и (И), или (ИЛИ), не (НЕ).= (равно), <> (не равно), <,
>, <=, >=.
если не (справа стена) и счетчик < 10 то ...вывод ...: Выводит значения (числа, строки, результаты выражений) в область Консоли/Лога под
редактором кода. Аргументы перечисляются через запятую.
вывод "Счетчик равен: ", счетчик
вывод "Привет!"
вывод ... нс: То же, что и вывод, но не добавляет перевод строки
в конце.
ввод Переменная: Внимание! В этой версии симулятора команда
ввод не работает интерактивно. Она прервет выполнение кода и попросит тебя ввести значение во
всплывающем окне браузера. После ввода значения нужно будет запустить код снова, чтобы он
продолжил работу с введенным значением (если бэкенд это поддерживает, текущая реализация требует ручного
перезапуска).
если условие то
| Команды, если условие = да
команда1
иначе
| Команды, если условие = нет (блок иначе необязателен)
команда2
все
при. Если ни одно условие не истинно, выполняется блок иначе (если он есть).
выбор
при условие1: команда1
при условие2:
| Блок команд для условия 2
команда2_1
команда2_2
иначе
| Команды, если ни одно 'при' не подошло (необязательно)
команда3
все
нц для Счетчик от Начало до Конец [шаг Шаг]
| Команды внутри цикла
кц
Шаг необязателен, по умолчанию 1. Счетчик автоматически увеличивается (или уменьшается, если шаг отрицательный).
нц пока условие
| Команды (выполняются, пока условие = да)
кц
Условие проверяется перед каждой итерацией.
нц N раз | где N - целое число или выражение
| Команды (повторяются N раз)
кц
нц
| Команды (повторяются бесконечно!)
| Обязательно используй 'выход' внутри!
кц
Будь осторожен! Без команды выход такой цикл приведет к
зависанию или ошибке превышения времени выполнения на сервере.
выход: Немедленно прерывает выполнение текущего цикла (нц ...
кц) и передает управление на команду после кц.
пауза или ждать N: В этом симуляторе эти команды не останавливают выполнение на сервере. Вместо этого, они влияют на визуальную задержку между шагами, если включена анимация (слайдер скорости не в крайнем правом положении). Аргумент `N` у `ждать` игнорируется.
стоп: Полностью останавливает выполнение всей программы.Кнопка "Импорт .fil" позволяет загрузить заранее подготовленное поле. Файл .fil - это текстовый файл
следующего формата:
Ширина Высота
Нач_X Нач_Y
X1 Y1 КодСтен1 Закраска1 Радиация1 Температура1 СимволВерх1 СимволНиз1 Маркер1
X2 Y2 КодСтен2 Закраска2 Радиация2 Температура2 СимволВерх2 СимволНиз2 Маркер2
...
XN YN КодСтенN ЗакраскаN РадиацияN ТемператураN СимволВерхN СимволНизN МаркерN
КодСтен: Целое число, битовая маска стен вокруг клетки (8-верх, 4-право, 2-низ, 1-лево). Например,
10 (8+2) - стены сверху и снизу.
Закраска: 1 - клетка закрашена, 0 - не закрашена.Радиация: Вещественное число (уровень радиации) или 0.0.Температура: Целое число (температура) или 0.СимволВерх / СимволНиз: Символ для отображения вверху/внизу клетки или $,
если символа нет.
Маркер: 1 - маркер есть, 0 - маркера нет.Не все поля после КодаСтен и Закраски обязательны при импорте, но порядок важен.
Удачи в программировании Робота!