\b;Упражнение Достигните финишной площадки (25 м перед вами) как можно быстрее, используя инструкцию \c;motor( , )\n;. В конце движения вы должны будете постепенно снизить свою скорость, или бот подорвется на \l;минах\u object\mine;. Вы можете ничего больше не писать кроме \c;\l;move\u cbot\move;(25);\n;, это должно сработать просто идеально. Тем не менее, это упражнение преследует цель изучить использование инструкции \c;\l;motor\u cbot\motor;\n;. Эта инструкция запрашивает два значения: 1) Скорость левостороннего мотора. 2) Скорость правостороннего мотора. \s;\c; motor( left, right ); \n; Значения должны быть между -1 и 1: -1 = полная тяга назад 0 = стоп 1 = полная тяга вперед Например, \c;motor(0.5, 0.5);\n; будет двигать машину вперед на среднем ходу, пока она не получит дальнейших инструкций. С помощью инструкции \c;motor(0.5, 0.6);\n;, можно заставить бота двигаться вперед на среднем ходу, одновременно медленно поворачиваясь влево: правосторонний мотор движется немного быстрее (\c;0.6\n;), чем левосторонний мотор (\c;0.5\n;). \b;Обший принцип Чтобы переместиться вперед точно на 25 метров и остановиться, вы должны двигаться первые 23 метра на полной скорости, а после этого снизить скорость на последнем отрезке длиной два метра. \l;Переменная\u cbot\var; \l;position\u cbot\object; в любой момент сообщает вам о текущей позиции бота, а инструкция \c;\l;distance\u cbot\dist;( , );\n; выдает расстояние между двумя точками. Лучший способ узнать ваше текущее положение заключается в сохранении текущей позиции перед тем, как задать \l;переменную\u cbot\var;. Например, переменную, которая называется \c;start\n;. После этого вы сможете высчитать расстояние между начальной позицией и вашей текущей позицией: \c;distance(позиция, старт)\n;. \b;Программа 1) задание переменных \s;\c; point start; \s; float len; \n; 2) сохранение стартовой позиции \s;\c; start = position; \n; 3) start full throttle : \s;\c; motor(1, 1); \n; 4) Бесконечный цикл \c;\l;while\u cbot\while;\n;: \s;\c; while ( true ) \s; { \s; len = distance(позиция, старт); \s; if ( len > 25-2 ) \s; { \s; motor( меньше, чем раньше ! ); \s; } \s; } \n; Пока расстояние между стартовой и текущей позициями меньше 23 метров, инструкция в скобках после \c;\l;if\u cbot\if;\n; выполняться не будет, поэтом моторы будут продолжать на максимальной мощности, как им и было приказано инструкцией \c;\l;motor\u cbot\motor;(1,1);\n;. Чтобы постепенно снизить скорость, скорость моторов должна быть пропорциональной оставшемуся расстоянию: o \c;2.0\n; метра осталось -> скорость = \c;1.00\n; (максимум) o \c;1.5\n; метра осталось -> скорость = \c;0.75\n; o \c;1.0\n; метр остался -> скорость = \c;0.50\n; o \c;0.5\n; метра осталось -> скорость = \c;0.25\n; o \c;0.0\n; метров осталось -> скорость = \c;0.00\n; (стоп) \image tdragst1 12 6; Вы можете использовать следующее \l;выражение\u cbot\expr; \c;(25-len)/2\n; чтобы высчитать значение для инструкции скорости, которая должна быть дана моторам. Теперь вы должны сложить все это вместе и проверить программу. \b;Комментарий Вы можете использовать значения больше 1 для инструкции \c;\l;motor\u cbot\motor;();\n;, но от этого бот быстрее двигаться не будет. \t;См. также \l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.