52 lines
3.3 KiB
Plaintext
52 lines
3.3 KiB
Plaintext
\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;.
|