| Продолжение. Часть I. Часть II. Часть III. Для программирования перемещения робота "Ван Гог" по полю имеет смысл назначить код каждой позции, откуда и куда робот должен приехать. |
Позиции с установленными кубиками пронумерованы в соответствии, например, с порядком их обхода. Сначала робот идет в позицию 0, затем в 1 и т.д. На самом деле здесь ничего не мешает задать нам произвольный порядок обхода, главное, чтобы он был. Тем, как позиций закодированы на схеме выше, однозначно определяется как роботу передвигаться. Например, из позиции 0 роботу перемещатся в центр поля, по такой же траектории как и из позиции 3. Другой пример, то что из центра поля траектории перемещения до позиций 1 и 2 будут одинаковыми.
Такой же логике подчиняется нумерация позиций со столбиками. До 0 и 2 столбиков тракетории движения из центра поля – одинаковые, тоже самое и для 1 и 3 столбика.
Следует отметить, что, согласно правилам, цвета столбиков на состязании будет такое же как и на схеме, т.е. это делает подготовку к соревнованиями немного проще.
Теперь, если принимается решение, что перемещение от позиций с кубиками к столбикам будет происходить через центр поля, то можно было бы написать следующий псевдокод, описывающий алгоритм движения робота:
ШАГ = 0;
Захватить кубик в позиции 0;
Начало Цикла
Определить цвет и записать в ЦВЕТКУБИКА;
//Робот едет в центр
Если ШАГ = 0 или ШАГ = 3, тогда
Едем прямо до перекрестка;
Поворачиваем налево;
Иначе
Едем прямо до перекрестка;
Поворачиваем направо;
Едем к центру;
//Робот поворачивается к нужным столбикам
Если ЦВЕТКУБИКА < 2, тогда
Поворачиваем в сторону базового лагеря;
Иначе
Поворачиваем в сторону противоположную базовому лагерю;
//Робот едет к кубикам
Если Остаток(ЦВЕТКУБИКА/2) = 0, тогда
Едем прямо и налево;
Иначе
Едем прямо и направо;
Выгружаем кубик;
//Возвращаемся в центр
Если Остаток(ЦВЕТКУБИКА/2) = 0, тогда
Едем справа и прямо;
Иначе
Едем слева и прямо;
ШАГ = ШАГ + 1;
Если ШАГ > 3, тогда
Прервать цикл;
//Едем к кубику
Если ШАГ = 3, тогда
Едем прямо до перекрестка;
Поворачиваем направо;
Иначе
Едем прямо до перекрестка;
Поворачиваем налево;
Едем к центру
Захватить кубик;
Конец Цикла
Как видно из описания алгоритма, кодировки позиций, где лежат кубики хранятся в переменной ШАГ, а цвет кубика, захваченного роботом, хранится в ЦВЕТКУБИКА.
По значению переменной ШАГ определяется каким образом робот передвигается до центра поля и наоборот – из центра.
Значение ЦВЕТКУБИКА используется первый раз
(ЦВЕТКУБИКА < 2) для обозначения в какую сторону роботу необходимо выполнить поворот от центральной линии. Второй раз оно появляется в выражениях Остаток(ЦВЕТКУБИКА/2) = 0, что по сути обозначает есть ли остаток от деления на 2. В зависимости от этого выбирается слева или справа относительно робота, находящегося в центре поля, расположены столбцы для кубиков.
Комментариев нет:
Отправить комментарий