colobot-data/help/P/tproc1.txt

60 lines
3.1 KiB
Plaintext
Raw Permalink Normal View History

\b;Ćwiczenie
\l;Robot\u object\bottr; musi przejść przez wszystkie \l;niebieskie plusy\u object\waypoint; leżące na ziemi. Droga, którą musi pokonać, składa się z dwóch kwadratów. Pierwszy ma bok równy 15 metrów a drugi, 25 metrów.
\image tproc1a 8 8;
\b;Ogólny algorytm
Najbardziej efektywne rozwiązanie tego problemu polega na napisaniu \l;funkcji\u cbot\function;, która porusza robotem po kwadracie określonego rozmiaru. Główny program staje się wtedy bardzo prosty:\c;
\s;extern void object::Funkcja1( )
\s;{
\s; Kwadrat(15);
\s; Kwadrat(25);
\s;}
\n;
Wciąż jednak należy zdefiniować funkcję nazwaną \c;Kwadrat\n;. Aby to zrobić, konieczne będzie napisanie kilku instrukcji poza \l;blokiem\u cbot\bloc; który dotychczas był ramką dla każdego z Twoich programów. Na samym końcu programu, po ostatniej klamrze zamykającej, należy zdefiniować funkcję \c;Kwadrat\n;. Program będzie wyglądał następująco:
\c;
\s;extern void object::Funkcja1( )
\s;{
\s; \n;główna funkcja...\c;
\s;}
\s;
\s;void object::Kwadrat(float bok)
\s;{
\s; \n;nowa funkcja...\c;
\s;}
\n;
Przyjrzyjmy się uważniej różnym elementom deklaracji funkcji \c;Kwadrat\n;:
\c;\l;void\u cbot\void;\n;
Oznacza, że ta funkcja nie zwraca żadnej wartości.
\c;\l;object\u cbot\object;::\n;
Napisanie tego przed nazwą funkcji oznacza, że będzie ona miała dostęp do wszystkich charakterystyk robota, takich jak \c;position\n;, \c;orientation\n;, itd. W tym ćwiczeniu element ten nie jest wymagany, jako że w funkcji nie będą potrzebne charakterystyki robota.
\c;Kwadrat ( )\n;
To jest nazwa funkcji. Możesz ją nazwać Kwadrat lub dowolnie inaczej.
\c;\l;float\u cbot\float; bok\n;
Tutaj definiujesz parametry, które otrzymuje funkcja podczas wywołania. Przy pierwszym wywołaniu funkcji \c;Kwadrat(15)\n;, zmienna \c;bok\n; będzie miała wartość \c;15\n;. Za drugim razem \c;bok\n; będzie równy \c;25\n;.
Oto szczegóły tego co zdarzy się po wykonaniu programu:
- Najpierw uruchamiana jest główna funkcja \c;Funkcja1\n;.
- W wierszu \c;Kwadrat(15)\n;, program podąży za czerwoną strzałką i przejdzie do funkcji \c;Kwadrat\n; po raz pierwszy, \c;bok\n; równy \c;15\n;.
- Na końcu funkcji \c;Kwadrat\n;, program podąży za pomarańczową strzałką i wróci do funkcji głównej.
- W wierszu \c;Kwadrat(25)\n;, program podąży za niebieską strzałką, przechodząc po raz drugi do funkcji \c;Kwadrat\n;.
- Na końcu funkcji \c;Kwadrat\n;, program podąży za jasno niebieską strzałką i wróci do funkcji głównej.
\image tproc1b 17 12;
W funkcji \c;Kwadrat\n;, użyj instrukcji \c;\l;move\u cbot\move;\n; i \c;\l;turn\u cbot\turn;\n;. Aby skrócić program możesz użyć pętli \c;\l;for\u cbot\for;\n;, która powtórzy 4 razy instrukcje \c;\l;move\u cbot\move;\n; i \c;\l;turn\u cbot\turn;\n;, nie jest to jednak niezbędne.
\c;
\s;void object::Kwadrat(float bok)
\s;{
\s; for ( int i=0 ; i<4 ; i=i+1 )
\s; {
\s; move(bok);
\s; turn(90);
\s; }
\s;}
\n;
\t;Zobacz również
\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.