colobot-data/help/P/tremote2.txt

51 lines
2.5 KiB
Plaintext

\b;Ćwiczenie
Zaprogramuj zdalnie robota używając \l;stacji przekaźnikowej informacji\u object\exchange;, aby przeszedł on przez 6 punktów kontrolnych.
Głównymi postaciami tego ćwiczenia są¦:
1) \l;Transporter na kołach\u object\botgr; bez ogniwa elektrycznego. Jest to robot nadrzędny, którego musisz zaprogramować.
2) \l;Stacja przekaźnikowa informacji\u object\exchange;, otrzymująca informacje od nadawcy i przekazująca je do odbiorcy.
3) \l;Robot treningowy\u object\bottr; czekający na rozkazy ze stacji przekaźnikowej. Ten robot został już zaprogramowany.
\image tremot2a 16 8;
Stacja przekaźnikowa informacji przechowuje pary "nazwa/wartość". Aby kontrolować robota podległego należy użyć dwóch par¦:
1) nazwa="order", wartosc=numer rozkazu
2) nom="param", wartoscr=parametr dla rozkazu
Rozkaz numer 1 oznacza "move" a rozkaz numer 2 oznacza "turn". Parametr jest długością ruchu lub kątem obrotu. Na przykład robota podległego można przemieścić o 20 metrów pisząc¦:
\c;\s; \l;send\u cbot\send;("order", 1, 100); // rozkaz "move"
\s; \l;send\u cbot\send;("param", 20, 100); // odległość 20 metrów
\n;
Te dwie instrukcje wysyłają następujące informacje do stacji przekaźnikowej¦:
\c; order=1
param=20
\n;
Robot podległy czeka na rozkaz i wykonuje go. Po wykonaniu rozkazu, zostanie on usunięty ze stacji przekaźnikowej. Po wysłaniu rozkazu, robot nadrzędny musi poczekać na wykonanie rozkazu przed wysłaniem następnego. Można to zrobić, sprawdzając czy rozkaz wciąż jest w stacji przekaźnikowej. Wystarczy napisać¦:
\c;\s; while ( \l;testinfo\u cbot\testinfo;("order", 100) ) // czekaj na koniec pracy
\s; {
\s; wait(1);
\s; }
\n;
Ponieważ konieczne jest wydanie więcej niż jednego rozkazu, przydatne będzie napisanie \l;funkcji\u cbot\function; \c;SendToPost\n;, która wysyła rozkaz i czeka na jego wykonanie¦:
\c;\s;void object::SendToPost(float order, float param)
\s;{
\s; send("param", param, 100); // wyślij parametr
\s; send("order", order, 100); // wyślij rozkaz
\s;
\s; while ( testinfo("order", 100) ) // czekaj na koniec pracy
\s; {
\s; wait(1);
\s; }
\s;}
\n;
Aby przemieścić robota o 20 metrów naprzód, należy napisać w głównym programie¦:
\c;\s; SendToPost(1, 20); // move(20);
\n;
Oto droga, którą powinien podróżować robot¦:
\image tremot2b 8 8;
Do Ciebie należy dokończenie programu.
\t;Zobacz również
\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.