\b;Упражнение Запрограммируйте бота так, чтобы он нашел себе путь и не столкнулся со стенами лабиринта. Мы предполагаем, что конфигурация лабаринта вам неизвестна, но там нет раздвоений и тупиков. Лабиринт состоит из квадратов размером 5 метров каждый. \b;Инструкция \c;radar\n; Инструкция \c;\l;radar\u cbot\radar;(Barrier, 0, 45, 0, 5);\n; будет искать любую \l;преграду\u object\barrier;, расположенную перед радаром на расстоянии менее 5 метров. Давайте поближе рассмотрим пять использующихся параметров: \s;\c;Barrier\n; \l;Категория\u cbot\category; объекта, который должен искать радар, то есть преграда. \s;\c;0\n; Направление радара. \c;0\n; означает, что радар должен искать ее прямо перед собой. \s;\c;45\n; Открывающий угол в градусах. С открывающим углом в 45 градусов, будут замечены преграды, расположенные между 22.5 градусами влево 22.5 градусами вправо. \s;\c;0\n; Минимальное расстояние обнаружения. \c;0\n; означает, что будут обнаружены даже те объекты, которые расположены вплотную к боту. \s;\c;5\n; Максимальное расстояние обнаружения. Любая преграда, расположенная на расстоянии более \c;5\n; метров не будет обнаружена. Чтобы привести еще один пример, \c;\l;radar\u cbot\radar;(Barrier, 90, 45, 0, 5);\n; направит радар на 90 градусов влево, чтобы проверить, нет ли слева прохода. \image tlaby1 10 10; \b;Общий принцип Программа должна заниматься только одним участком лабиринта. Вы должны будете запустить ее несколько раз, чтобы добраться до финальной площадки. o Если впереди ничего нет, идти вперед. o Если слева ничего нет, поворот на четверть оборота влево, идти вперед. o Если справа ничего нет, поворот на четверть оборота вправо, идти вперед. 1) Сначала задайте три \l;переменные\u cbot\var; типа \c;\l;объект\u cbot\object;\n;, которые мы называем \c;front\n;, \c;left\n; и \c;right\n;. Переменные этого типа могут содержать описание любого объекта, например преграды, обнаруженной радаром. \s;\c; object front, left, right;\n; 2) Искать преграды во всех трех направлениях, и выводить результат инструкции \c;radar\n; в три переменные, заданные в пункте 1). Если радар не найдет ничего, переменная будет содержать значение \c;\l;null\u cbot\null;\n;. \s;\c; front = radar(Barrier, 0, 45, 0, 5); \s; left = radar(Barrier, 90, 45, 0, 5); \s; right = radar(Barrier, -90, 45, 0, 5); \n; 3) Проверка наличия свободного пространства перед ботом с помощью инструкции \c;\l;if\u cbot\if;\n;. Если проверка истинна, будет выполнена инструкция, заключенная в скобках \c;{ }\n; , иначе продолжится выполнение кода после закрывающей скобки \c;}\n;. Инструкция \c;return\n; прводит к остановке программы: работа выполнена. \s;\c;if ( front == null ) \s;{ \s; move(5); \s; return; \s;} \n; 4) Проверка возможности повернуть влево; если так, проводится поворот влево инструкцией \c;\l;turn\u cbot\turn;\n; и бот идет 5 метров вперед. \s;\c;if ( left == null ) \s;{ \s; turn(90); \s; move(5); \s; return; \s;} \n; 5) Проверка возможности повернуть вправо. ... \b;Внимание Инструкция \c;if ( )\n; не должна заканчиваться \l;точкой с запятой\u cbot\term;. \t;См. также \l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.