53 lines
2.3 KiB
Plaintext
53 lines
2.3 KiB
Plaintext
\b;Zadanie
|
|
Przystosuj wysokość lotu \l;działa latającego\u object\botfj; do terenu.
|
|
|
|
\t;Program
|
|
Oto jeszcze raz program polujący na mrówki z poprzedniego ćwiczenia:
|
|
\c;
|
|
\s;extern void object::JetFighter1()
|
|
\s;{
|
|
\s; object item;
|
|
\s;
|
|
\s; aim(-20);
|
|
\s; jet(0.2);
|
|
\s; while (position.z < 10)
|
|
\s; {
|
|
\s; wait(0.2);
|
|
\s; }
|
|
\s; jet(0);
|
|
\s;
|
|
\s; while (true)
|
|
\s; {
|
|
\s; while (radar(AlienAnt, 0, 360, 0, 20) == null)
|
|
\s; {
|
|
\s; item = radar(AlienAnt);
|
|
\s; turn(direction(item.position));
|
|
\s; motor(1,1);
|
|
\s; wait(0.2);
|
|
\s; }
|
|
\s; fire(1);
|
|
\s; }
|
|
\s;}
|
|
\n;
|
|
Robot zawsze utrzymuje wysokość 10 m nad poziomem morza. Nie jest on przystosowany do górzystego terenu w tym ćwiczeniu. Najlepszym sposobem przystosowania programu jest wstawienie przed instrukcją \c;wait(0.2);\n; testu sprawdzającego czy wysokość nad poziomem ziemi jest za mała lub za duża i odpowiednie reagowanie.
|
|
|
|
Wiesz już że instrukcja \c;position.z\n; podaje wysokość nad poziomem morza. Instrukcja \c;\l;topo\u cbot\topo;(position)\n; podaje wysokość nad poziomem ziemi w pozycji robota. Jeśli chcesz, aby robot utrzymywał wysokość pomiędzy 6 i 9 m nad ziemią, należy rozpatrzyć następujące przypadki: jeśli \c;position.z-topo(position)\n; jest mniejsze od 6, robot musi się wznieść: \c;jet(1);\n;. Jeśli \c;position.z-topo(position)\n; jest większe od 9, robot musi zmniejszyć wysokość: \c;jet(-1);\n;. Aby zaprogramować te testy, użyj instrukcji \c;\l;if\u cbot\if;\n;, która wykonuje instrukcje w klamrach jedynie wtedy gdy warunek jest prawdziwy:
|
|
\c;
|
|
\s; jet(0);
|
|
\s; if (position.z-topo(position) < 6)
|
|
\s; {
|
|
\s; jet(1);
|
|
\s; }
|
|
\s;
|
|
\s; if (position.z-topo(position) > 9)
|
|
\s; {
|
|
\s; jet(-1);
|
|
\s; }
|
|
\n;
|
|
Przed rozpoczęciem testowania, ustabilizuj wysokość instrukcją \c;jet(0);\n;: w przypadku wysokości nad poziomem ziemi pomiędzy 6 i 9 m, robot nie musi zmieniać wysokości lotu. Jeśli później zostanie wykonana instrukcja \c;jet(1);\n; lub \c;jet(-1);\n; anuluje ona poprzednią instrukcję \c;jet(0);\n;.
|
|
|
|
Wystarczy wstawić te linie przed instrukcją \c;wait(0.2)\n;, a robot przystosuje się do terenu. Możesz już usunąć pierwszą linię programu ustawiającą wysokość początkową na 10 m.
|
|
|
|
\t;Zobacz również
|
|
\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
|