colobot-data/help/R/tant2.txt

34 lines
3.6 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

\b;Задание
Примените в качестве защиты при нападении муравьев со всех сторон программу \c;Spider2\n;, чтобы иметь возможность лететь на заданной высоте.
\t;Программа
Программа, необходимая для выполнения этой задачи, чем-то напоминает программу \c;Spider2\n;, которая ищет ближайшего муравья, поворачивает бота ему навстречу и стреляет из пушки:
\c;
\s;extern void object::Spider2()
\s;{
\s; object item;
\s;
\s; while (true)
\s; {
\s; item = radar(AlienSpider);
\s; turn(direction(item.position));
\s; fire(1);
\s; }
\s;}
\n;
Вы можете копировать-вставить ее редактор, и запустить. Замените \c;radar(AlienSpider);\n; на \c;radar(AlienAnt);\n;, и напишите перед циклом \c;while\n; еще один цикл, активирующий под \l;крылатым стрелком\u object\botfj; реактивный двигатель, пока бот не наберет высоту 20 мметров.
Инструкция \c;\l;jet\u cbot\jet;()\n; управляет двигателем под крылатыми ботами. Число в кавычках должно быть между \c;-1\n; и \c;1\n;.\c; jet(1);\n; перемещает бота вверх с максимальной скоростью.\c; jet(-1);\n; перемещает бота с максимальной скоростью вниз, а \c;jet(0);\n; стабилизирует высоту. Так как боту необходимо набрать определенную высоту, медленно поднимите его вверх с \c;jet(0.2);\n;, подождите, пока он наберет желаемую высоту, а после этого стабилизируйте его с помощью команды \c;jet(0);\n;.
Чтобы "подождать, пока он наберет желаемую высоту", нам нужен цикл с условием: инструкции внутри цикла будут повторяться до того времени, пока определенное условие будет истинным. Высота бота определяется \c;position.z\n;. Мы уже видели, что \c;position\n; задает позицию бота. Позиция задается тремя координатами x, y и z: ось x - это ось запад-восток, ось y - ось юг-север, а ось z - это вертикальная ось. Поэтому мы должны подождать, пока \c;position.z\n; будет меньше 20 метров:
\c;
\s; while (position.z < 20)
\s; {
\s; wait(0.2);
\s; }
\n;
После задержки в 0.2 секунды программа проверит, какова высота бота над поверхностью, и не находится ли он ниже 20 метров. Если это так, она подождет еще немного, а если нет, программа будет продолжена после цикла, то есть после закрывающей скобки \c;}\n;. Не забудьте после цикла стабилизировать высоту \c;jet(0);\n;.
\t;См. также
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.