\b;Задание Убейте ос с еще большей эффективностью, чем вы делали это с помощью предыдущей программы. \b;Программа Вот программа из предыдущего упражнения, которая уничтожила всех ос после многих, многих неудачных попыток: \c; \s;extern void object::Wasp1() \s;{ \s; \l;object\u cbot\type; item; \s; \s; \l;aim\u cbot\aim;(0); \s; \s; \l;while\u cbot\while; (true) \s; { \s; \l;while\u cbot\while; (\l;radar\u cbot\radar;(AlienWasp, 0, 360, 0, 20) == null) \s; { \s; item = \l;radar\u cbot\radar;(AlienWasp); \s; \l;turn\u cbot\turn;(\l;direction\u cbot\direct;(item.position)); \s; \l;motor\u cbot\motor;(1,1); \s; \s; \l;jet\u cbot\jet;(0); \s; \l;if\u cbot\if; (position.z > item.position.z) \s; { \s; \l;jet\u cbot\jet;(-0.3); \s; } \s; \s; \l;if\u cbot\if; (position.z < item.position.z - 1) \s; { \s; \l;jet\u cbot\jet;(0.3); \s; } \s; \s; \l;wait\u cbot\wait;(0.2); \s; } \s; item = \l;radar\u cbot\radar;(AlienWasp); \s; \l;turn\u cbot\turn;(\l;direction\u cbot\direct;(item.position)); \s; \l;fire\u cbot\fire;(1); \s; } \s;} \n; Многие ошибки возникали из-за того, что оса уже улетела до того, как пуля могла в нее попасть. Единственный способ улучшить программу- это установить мощность двух моторов и реактивного двигателя таким способом, чтобы во время выстрела бот летел по тому же курсу, что и цель. Сразу перед выстрелом программа настраивает последнее направление с помощью \c;turn(direction(item.position));\n;. Чтобы лететь за осой во время выстрела, вы должны "запомнить" угол этого последнего поворота: если угол был положительный (поворот влево), бот должен продолжать разворачиваться влево во время выстрела; если же угол был отрицательным, бот должен продолжать поворачиваться вправо. Чтобы "запомнить" угол последнего поворота, нам нужна переменная, которая может содержать только одно число. Если мы назовем ее \c;angle\n;, мы должны задать переменную со следующей строки в самом начале программы: \c; \s; \l;float\u cbot\type; angle; \n; Тип переменной \l;float\u cbot\type; это изменчивый тип, который может содержать любое число, то есть целые числа или вещественные числа. Обратитесь пожалуйста к \l;тексту о типах переменных\u cbot\type; , если вы захотите узнать больше о различных типах переменных и о том, что они могут содержать. Сразу перед инструкцией \c;fire(1);\n;, вместо того, чтобы писать \c;\l;turn\u cbot\turn;(\l;direction\u cbot\direct;(item.position));\n;, мы установим угол поворота в переменную \c;angle\n;: \c; \s; angle = direction(item.position); \n; После этого мы произведем поворот и установим мощность моторов таким образом, чтобы бот продолжил движение: \c; \s; turn(angle); \s; if (angle < 0) \s; { \s; motor(1,0.5); \s; } \s; else \s; { \s; motor(0.5,1); \s; } \n; Инструкция \c;else\n; определяет то, какую инструкцию должна выполнить программа, если условие, указанное инструкцией \c;if\n;, ложное. Потом мы должны установить мощность двигателя таким образом, чтобы бот следовал за осой также и в вертикальном направлении: \c; \s; jet(0); \s; if(position.z > item.position.z) \s; { \s; jet(-0.3); \s; } \s; \s; if(position.z < item.position.z - 1) \s; { \s; jet(0.3); \s; } \n; Как вы видите, эта программа намного эффективней предыдущей! \t;См. также \l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.