colobot-data/help/R/tremote2.txt

52 lines
3.3 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;Упражнение
Написать программу для бота так, чтобы он проехаться по 6 синим отметкам, используя для этого \l;пост обмена информацией\u object\exchange; как пульт дистанционного управления.
Что потребуется¦:
1) \l;Колесный сборщик\u object\botgr; без батареи.
2) \l;Пост обмена информацией\u object\exchange; - для приема и передачи информации.
3) \l;Тренировочный бот\u object\bottr;, который будет ждать комманды от поста. Бот уже заранее запрограммирован.
\image tremot2a 16 8;
Пост обмена информацией хранит данные в виде "name/value"(имя/значение) только парами. Для управления ботом нам потребуется две таких пары ¦:
1) name="order", value=order number
2) nom="param", valuer=parameter for the operation
Параметр #1 будет "двигать", а параметр #2 будет "поворачивать". Параметром(#2) будут являться расстояние или угол поворота. Для примера продвинемся на 20 метров вперед¦:
\c;\s; \l;send\u cbot\send;("order", 1, 100); // даем команду "двигаться"
\s; \l;send\u cbot\send;("param", 20, 100); // расстояние 20 метров
\n;
Эти две инструкции необходимо передать на пост последними¦:
\c; order=1
param=20
\n;
Бот получает информацию и выполняет программу. Как только данные были получены, он удаляется от поста. После того, как программа начала выполняться главный бот будет ждать, пока управляемый бот не завершит задания. Только после этого он отправит ему другую информуцию. Это делается путем тестирования.
Просто напишите¦:
\c;\s; while ( \l;testinfo\u cbot\testinfo;("order", 100) ) // ждать, пока работа закончится
\s; {
\s; wait(1);
\s; }
\n;
Для наиболее удобной записи \l;функции\u cbot\function; \c;SendToPost\n;, можно применить такую программу¦:
\c;\s;void object::SendToPost(float order, float param)
\s;{
\s; send("param", param, 100); // Отправить параметр
\s; send("order", order, 100); // Отправить приказ
\s;
\s; while ( testinfo("order", 100) ) // wait for end of work
\s; {
\s; wait(1);
\s; }
\s;}
\n;
Для движения на 20 метров вперед, вы должны написать в главной программе вот это¦:
\c;\s; SendToPost(1, 20); // move(20);
\n;
Этот маршрут робот должен пройти так¦:
\image tremot2b 8 8;
\t;Смотри также
\l;Язык CBOT\u cbot;, \l;Переменные\u cbot\type; и \l;Категории\u cbot\category;.