\b;Ćwiczenie
Podążaj za \l;robotem celem\u object\bottr; niosącym ładunek wybuchowy. Bądź ostrożny, gdyż zderzenie z nim grozi wybuchem. Podczas każdego zatrzymania robota celu należy być odpowiednio blisko niego (mniej niż 10 metrów). Gdy uda się być w pobliżu robota 10 razy z rzędu, ćwiczenie zakończy się wraz z jego dotarciem na platformę końcową. Przy każdym zatrzymaniu robot cel sprawdza, czy śledzący go robot jest odpowiednio blisko. Jeśli nie, liczenie zaczyna się od początku.

\b;Ogólny algorytm
Powtarzaj w nieskończoność:
o  Znajdź robot cel.
o  Oblicz odległość do robota.
o  Jeśli odległość jest mniejsza niż 5 m, cofnij się.
o  W przeciwnym przypadku oblicz kierunek do robota celu i idź w jego stronę.

Podobnie jak poprzednio użyj nieskończonej pętli \c;\l;while\u cbot\while; (true)\n;:
\s;\c;while (true)
\s;{
\s;	\n;instrukcje, które mają być powtarzane ...\c;
\s;}
\n;
Znajdź robot cel instrukcją \c;\l;radar\u cbot\radar;\n;:
\s;\c;	target = radar(TargetBot);
\n;
Nie musisz sprawdzać, czy robot znalazł cel: na pewno tam jest.

Użyj instrukcji \c;\l;distance\u cbot\dist;( , )\n; do obliczenie odległości między dwoma punktami. Pierwszym jest pozycja Twojego robota, podana przez \c;position\n;. Drugim jest pozycja robota celu, podana przez \c;target.position\n;.
\s;\c;len = distance(position, target.position);
\n;
Jeśli odległość od robota celu jest mniejsza niż 5 metrów, oddal się od niego z prędkością odwrotnie proporcjonalną do odległości: im bliżej jest robot, tym szybciej należy się cofać.
	Odległość = 5.0 metrów -> prędkość =  0.0
	Odległość = 2.5 metra  -> prędkość = -0.5
	Odległość = 0.0 metrów -> prędkość = -1.0
Aby to uzyskać, możesz użyć \l;wyrażenia\u cbot\expr; \c;distance/5-1\n;, wspólnie z instrukcją \c;\l;if\u cbot\if;\n; sprawdzającą, czy cel jest bliżej niż 5 m:
\s;\c;if ( len < 5 )  // za blisko?
\s;{
\s;	motor(len/5-1, len/5-1);  // cofnij
\s;}
\n;
Jeśli odległość do celu jest większa niż 5m, poruszaj się w jego kierunku. Najpierw oblicz kąt niezbędny do obrócenia się w jego kierunku używając instrukcji \c;\l;direction\u cbot\direct;\n;. Następnie dostosuj prędkości prawego i lewego silnika, aby Twój robot podążał za celem:
\s;\c;else
\s;{
\s;	dir = direction(target.position);
\s;	if ( dir >= 0 )  // cel po lewej stronie?
\s;	{
\s;		motor(1-dir/90, 1);
\s;	}
\s;	else  // cel po prawej stronie?
\s;	{
\s;		\n;do Ciebie należy uzupełnienie tego\c;
\s;	}
\s;}
\n;
Gdy cel jest po lewej stronie, zmienna \c;dir\n; ma wartość dodatnią, pomiędzy 0 i 180. \l;Wyrażenie\u cbot\expr; \c;1-dir/90\n; zwraca prędkość w zakresie pomiędzy 1 i -1 w zależności od kierunku:
	kierunek =   0 -> prędkość =  1.0
	kierunek =  45 -> prędkość =  0.5
	kierunek =  90 -> prędkość =  0.0
	kierunek = 135 -> prędkość = -0.5
	kierunek = 180 -> prędkość = -1.0

\image radar2 14 10;
Gdy cel jest po prawej stronie, zmienna \c;dir\n; ma wartość ujemną, pomiędzy 0 i -180.

Jedynym zadaniem jakie jeszcze Ci zostało jest zadeklarowanie \l;zmiennych\u cbot\var; używanych w programie. \c;target\n; jest typu \c;object\n;, podczas gdy \c;dir\n; i \c;len\n; są typu \c;float\n;.

\t;Zobacz również
\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.