colobot-data/help/R/ttit2.txt

52 lines
5.5 KiB
Plaintext
Raw Normal View History

\b;Задание
Возьмите кусок \l;титановой руды\u object\titanore;, точное размещение которого неизвестно. Чтобы его найти, используйте радар бота. Отнесите титановую руду к \l;преобразователю\u object\convert;.
\t;Программа
Как вы уже должно быть заметили, программы, написанные в предыдущих упражнениях, были полностью "слепыми": если бы титановая руда, батарея или пауки находились бы в другом месте, бот не смог бы найти их.
Радар представляет собой "глаза" бота. С помощью радара бот может замечать вокруг себя различные объекты. Например, инструкция \c;\l;radar\u cbot\radar;(TitaniumOre);\n; возвратит информацию о ближайшем куске \l;титановой руды\u object\titanore;. Тем не менее, нам необходимо где-нибудь "сохранить" информацию, возвращенную инструкцией \c;\l;radar\u cbot\radar;(TitaniumOre);\n;. Для этой задачи нам будет нужна \l;переменная\u cbot\var;.
\l;Переменная\u cbot\var; представляет собой как бы маленький ящик с названием, в который мы можем положить какую-то информацию, взять ее оттуда, изменить ее, и т.п. Перед тем, как вы сможете использовать переменную, вы должны задать ее. Сначала вы должны указать \l;тип\u cbot\type; переменной, для этого \c;объекта\n;. Переменная этого типа может содержать всю информацию, описывающую объект (например, титановую руду, паука, муравья, бота, батарею и т.п.). После этого вы должны указать имя, которое хотите присвоить этой переменной, например \c;item\n;. Если мы сложим все это вместе, то получим следующую строку:
\c;
\s;\l;object\u cbot\type; item;
\n;
После этого мы должны ввести информацию, возвращенную инструкцией \c;\l;radar\u cbot\radar;(TitaniumOre)\n;, в эту переменную:
\c;
\s;item = \l;radar\u cbot\radar;(TitaniumOre);
\n;
Переменная \c;item\n; содержит различные виды информации: позицию, ориентацию, высоту и т.п. Чтобы узнать размещение куска титановой руды, напишите \c;item.position\n;. После этого мы используем инструкцию \c;goto();\n; чтобы переместить бота в эту позицию. Вот строка, собирающая все это вместе:
\c;
\s;\l;goto\u cbot\goto;(item.position);
\n;
Если мы "переведем" все на русский язык, это будет означать: отправиться к позиции объекта, описанной переменной \c;item\n;.
После этого вы можете взять то, что лежит в этом месте с помощью инструкции \c;\l;grab\u cbot\grab;();\n;.
Если мы соберем все это вместе, то получим следующую программу:
\c;
\s;extern void object::Titanium2( )
\s;{
\s;
\s; \l;object\u cbot\type; item;
\s; item = \l;radar\u cbot\radar;(TitaniumOre);
\s; \l;goto\u cbot\goto;(item.position);
\s; grab();
\s;
\s;}
\n;
После этого вы должны найти \l;преобразователь\u cbot\convert; и поместить информацию о преобразователе в переменной \c;item\n;:
\c;
\s;item = \l;radar\u cbot\radar;(Converter);
\n;
Подойдите к преобразователю с помощью все той же инструкции \c;\l;goto\u cbot\goto;(item.position);\n; , как было сделано выше, сбросьте титан и отойдите назад. Все остальное поручите сделать преобразователю.
Если вы хотите узнать больше об "именах" различных объектов в языке программирования, обратитесь пожалуйста к \l;тексту о категориях\u cbot\category;.
\t;Комментарий
\l;Переменная\u cbot\var; должна быть задана только один раз в начале программы! Потом вы можете использовать ее сколько угодно.
Чтобы избежать перепечатывания инструкций, о которых говорилось выше, вы можете выбрать их с помощью мыши, и копировать-вставить \button 61; их в свою программу.
\t;См. также
\l;Программирование\u cbot;, \l;типы\u cbot\type; и \l;категории\u cbot\category;.