\b;Ćwiczenie Zaprogramuj robota, aby znajdował wyjście z labiryntu bez uderzania o ściany. Zakładamy, że konfiguracja labiryntu nie jest znana, jednak nie ma w nim rozwidleń ani ślepych uliczek. Labirynt składa się z kwadratów o boku 5 m każdy. \b;Instrukcja \c;radar\n; Instrukcja \c;\l;radar\u cbot\radar;(Barrier, 0, 45, 0, 5);\n; znajdzie \l;barierę\u object\barrier; przed robotem, która jest bliżej niż 5 metrów. Przyjrzyjmy się bliżej pięciu użytym parametrom: \s;\c;Barrier\n; \l;Kategoria\u cbot\category; obiektu, którego ma szukać radar, np. bariera. \s;\c;0\n; Kierunek, w którym "patrzy" radar. \c;0\n; oznacza, że radar powinien szukać obiektu wprost przed sobą. \s;\c;45\n; Kąt widzenia, w stopniach. Z kątem widzenia równym 45 stopni, wykryte zostaną bariery znajdujące się pomiędzy 22,5 stopnia w lewo a 22,5 stopnia w prawo. \s;\c;0\n; Minimalna odległość wykrywania. \c;0\n; oznacza, że zostaną wykryte nawet obiekty będące bardzo blisko robota. \s;\c;5\n; Maksymalna odległość wykrywania. Żadna bariera dalej niż \c;5\n; metrów nie zostanie wykryta. Weźmy inny przykład, \c;\l;radar\u cbot\radar;(Barrier, 90, 45, 0, 5);\n; skieruje radar 90 stopni w lewo, w celu sprawdzenia, czy droga po lewej stronie jest wolna. \image tlaby1 10 10; \b;Ogólny algorytm Program powinien zajmować się tylko pojedynczymi kwadratami labiryntu. Należy uruchomić go wielokrotnie, aby robot doszedł do platformy końcowej. o Jeśli nie ma niczego przed robotem, idź naprzód. o Jeśli nie ma niczego po lewej stronie, wykonaj ćwierć obrotu w lewo i idź naprzód. o Jeśli nie ma niczego po prawej stronie, wykonaj ćwierć obrotu w prawo i idź naprzód. 1) Na początek zadeklaruj trzy \l;zmienne\u cbot\var; typu \c;\l;object\u cbot\object;\n;, nazwane \c;front\n;, \c;left\n; i \c;right\n;. Zmienne tego typu mogą zawierać opisy dowolnych obiektów, w tym przypadku bariery znalezionej przez radar. \s;\c; object front, left, right;\n; 2) Szukaj bariery we wszystkich trzech kierunkach, a wyniki instrukcji \c;radar\n; umieść w trzech zmiennych zdefiniowanych w punkcie 1). Jeśli radar niczego nie wykryje, zmienna będzie zawierała wartość \c;\l;null\u cbot\null;\n;. \s;\c; front = radar(Barrier, 0, 45, 0, 5); \s; left = radar(Barrier, 90, 45, 0, 5); \s; right = radar(Barrier, -90, 45, 0, 5); \n; 3) Używając instrukcji \c;\l;if\u cbot\if;\n;, sprawdź droga przed robotem jest wolna. Jeśli warunek będzie prawdziwy, zostaną wykonane instrukcje w klamrach \c;{ }\n;, w przeciwnym wypadku, działanie programu zostanie wznowione po klamrze zamykającej \c;}\n;. Instrukcja \c;return\n; opuszcza program: zadanie zostało wykonane. \s;\c;if ( front == null ) \s;{ \s; move(5); \s; return; \s;} \n; 4) Sprawdź, czy możliwy jest obrót w lewo; jeśli tak, skręć w lewo instrukcją \c;\l;turn\u cbot\turn;\n; i idź 5 metrów do przodu. \s;\c;if ( left == null ) \s;{ \s; turn(90); \s; move(5); \s; return; \s;} \n; 5) Sprawdź, czy możliwy jest obrót w prawo. ... \b;Uwaga Po instrukcji \c;if ( )\n; nigdy nie powinien wystąpić \l;średnik\u cbot\term;. \t;Zobacz również \l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.