colobot-data/help/R/tant5.txt

53 lines
3.4 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;Задание
Приспособьте высоту полета \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;.