53 lines
3.4 KiB
Plaintext
53 lines
3.4 KiB
Plaintext
\b;Задание
|
||
Приспособьте высоту полета \l;крылатого стрелка\u object\botfj; к неровностям местности.
|
||
|
||
\t;Программа
|
||
Еще раз приводится программа из предыдущего упражнения, которая охотится на муравьев:
|
||
\c;
|
||
\s;extern void object::JetFighter1()
|
||
\s;{
|
||
\s; object item;
|
||
\s;
|
||
\s; aim(-20);
|
||
\s; jet(0.2);
|
||
\s; while (position.z < 10)
|
||
\s; {
|
||
\s; wait(0.2);
|
||
\s; }
|
||
\s; jet(0);
|
||
\s;
|
||
\s; while (true)
|
||
\s; {
|
||
\s; while (radar(AlienAnt, 0, 360, 0, 20) == null)
|
||
\s; {
|
||
\s; item = radar(AlienAnt);
|
||
\s; turn(direction(item.position));
|
||
\s; motor(1,1);
|
||
\s; wait(0.2);
|
||
\s; }
|
||
\s; fire(1);
|
||
\s; }
|
||
\s;}
|
||
\n;
|
||
Бот всегда остается на высоте 10 метров над уровнем моря. Это не подходит для горной местности текущего упражнения, бот должен приспособиться к местности. Лучший способ достичь этого заключается в том, чтобы вставить перед \c;wait(0.2);\n; проверку, чтобы узнать текущую высоту бота над землей: большая она или малая, и заставить бота соответственно реагировать на это.
|
||
|
||
Мы уже увидели, что \c;position.z\n; задает высоту над уровнем моря. \c;\l;topo\u cbot\topo;(position)\n; задает высоту земли в том месте, где стоит бот. Если мы хотим, чтобы бот оставался над землей на высоте между 6 и 9 метрами, то должны учитывать следующие случаи: если \c;position.z-topo(position)\n; меньше 6, бот должен набрать высоту \c;jet(1);\n;. Если \c;position.z-topo(position)\n; больше 9, бот должен опуститься вниз \c;jet(-1);\n;. Чтобы запрограммировать эти проверки, используйте инструкцию \c;\l;if\u cbot\if;\n;, которая запускает инструкцию в скобках только раз, если условие истинно:
|
||
\c;
|
||
\s; jet(0);
|
||
\s; if (position.z-topo(position) < 6)
|
||
\s; {
|
||
\s; jet(1);
|
||
\s; }
|
||
\s;
|
||
\s; if (position.z-topo(position) > 9)
|
||
\s; {
|
||
\s; jet(-1);
|
||
\s; }
|
||
\n;
|
||
Перед тем, как начать проверку, стабилизируйте высоту бота \c;jet(0);\n;: в случае, когда высота над землей лежит между 6 и 9 метрами, бот не должен подниматься или опускаться. В противном случае выполняется или \c;jet(1);\n; или \c;jet(-1);\n; , что отменит предыдущее \c;jet(0);\n;.
|
||
|
||
Просто вставьте эти строки перед \c;wait(0.2)\n;, и бот сможет приспосабливаться к местности. После этого вы можете удалить первые строки программы, устанавливающие начальную высоту в 10 метров.
|
||
|
||
\t;См. также
|
||
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.
|