41 lines
3.5 KiB
Plaintext
41 lines
3.5 KiB
Plaintext
![]() |
\b;Задание
|
|||
|
Переделайте программу \c;Tower1\n;, чтобы предотвратить расход энергии во время стрельбы по муравьям, которые находятся вне зоны досягаемости.
|
|||
|
|
|||
|
\t;Программа
|
|||
|
Программа \c;Tower1\n; стреляет в направлении ближайшего муравья, даже если он находится вне досягаемости:
|
|||
|
\c;
|
|||
|
\s;extern void object::Tour1()
|
|||
|
\s;{
|
|||
|
\s; object item;
|
|||
|
\s;
|
|||
|
\s; jet(0.2);
|
|||
|
\s; while(position.z < 20)
|
|||
|
\s; {
|
|||
|
\s; wait(0.2);
|
|||
|
\s; }
|
|||
|
\s; jet(0);
|
|||
|
\s;
|
|||
|
\s; while(true)
|
|||
|
\s; {
|
|||
|
\s; item = radar(AlienAnt);
|
|||
|
\s; turn(direction(item.position));
|
|||
|
\s; fire(1);
|
|||
|
\s; }
|
|||
|
\s;}
|
|||
|
\n;
|
|||
|
Если бот должен проделывать то же самое действие, что и раньше болько с одной \l;обычной батареей\u object\power;, вы можете вставить цикл, который заставит его подождать, пока муравей подойдет на близкое расстояние, то есть, пока муравей не окажется на расстоянии менее 40 метров. Тогда для уничтожения муравья будет достаточно всего одного выстрела.
|
|||
|
|
|||
|
Вы можете задать инструкции \c;\l;radar\u cbot\radar();\n; больше параметров (чисел), указывающих направление, в котором радар должен искать муравьев. Например, \c;radar(AlienAnt,0,360,0,40);\n; будет искать только тех муравьев, которые находятся на расстоянии менее 40 метров. Первые два числа сообщают радару о том, что он должен проводить поиск во всех направлениях, а два последних числа говорят радару замечать только тех муравьев, которые находятся на расстоянии от 0 до 40 метров. Если на расстоянии менее 40 метров не обнаружено ни одного муравья, инструкции \c;\l;radar\u cbot\radar();\n; возвращается значение \c;null\n;. Теперь мы можем написать цикл с условием, похожий на цикл, написанный в последнем упражнении, который ждет, пока нет ни одного муравья на расстоянии менее 40 метров:
|
|||
|
\c;
|
|||
|
\s; while (radar(AlienAnt, 0, 360, 0, 40) == null)
|
|||
|
\s; {
|
|||
|
\s; wait(0.2);
|
|||
|
\s; }
|
|||
|
\n;
|
|||
|
Заметьте, что два знака равенства "==" необходимы для того, чтобы произвести сравнение равенств.
|
|||
|
|
|||
|
Просто вставьте эти линии перед инструкцией \c;fire(0);\n;, и будет ждать перед тем, как сделать выстрел того момента, пока муравей не приблизится на расстояние менее 40 метров. Обычной батареи хватает для того, чтобы убить всех муравьев.
|
|||
|
|
|||
|
\t;См. также
|
|||
|
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|