Продолжение. Часть 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. В зависимости от этого выбирается слева или справа относительно робота, находящегося в центре поля, расположены столбцы для кубиков.
Комментариев нет:
Отправить комментарий