49 lines
2.9 KiB
Plaintext
49 lines
2.9 KiB
Plaintext
![]() |
\b;Zadanie
|
||
|
Zasil \l;działa latające\u object\botfj; \l;ogniwami elektrycznymi\u object\power;, aby mogły zabić mrówki znajdujące się w gnieździe mrówek w jamie na północ od Ciebie.
|
||
|
|
||
|
\t;Program
|
||
|
\l;Transporter na kołach\u object\botgr; musi podejść do \l;ogniwa elektrycznego\u object\power;, podnieść je, podejść do \l;działa latającego\u object\botfj; i umieścić w nim ogniwo. To zadanie jest bardzo podobne do zadania z poprzedniego ćwiczenia. Oto jeszcze raz ten program:
|
||
|
\c;
|
||
|
\s;extern void object::Titanium2()
|
||
|
\s;{
|
||
|
\s; object item;
|
||
|
\s;
|
||
|
\s; item = radar(TitaniumOre);
|
||
|
\s; goto(item.position);
|
||
|
\s; grab();
|
||
|
\s;
|
||
|
\s; item = radar(Converter);
|
||
|
\s; goto(item.position);
|
||
|
\s; drop();
|
||
|
\s;}
|
||
|
\n;
|
||
|
Najlepszym sposobem rozwiązania obecnego ćwiczenia jest skopiowanie \button 61; powyższego programu do schowka (od \c;object\n; do \c;drop();\n;), i wklejenie \button 62; do edytora programu. Następnie wystarczy dokonać niezbędnych poprawek, aby przystosować go do nowego zadania.
|
||
|
|
||
|
Zamiast szukać rudy tytanu (\c;TitaniumOre\n;), poszukaj ogniwa elektrycznego (\c;PowerCell\n;). Zamiast iść do huty (\c;Converter\n;), idź do działa latającego (\c;WingedShooter\n;). Działo latające zacznie pracę, jak tylko otrzyma nowe ogniwo elektryczne.
|
||
|
|
||
|
Jeśli chcesz wiedzieć więcej o "nazwach" różnych obiektów języka programowania, zobacz pomoc dotyczącą \l;kategorii\u cbot\category;.
|
||
|
|
||
|
\t;Dalsze usprawnienia: pętle
|
||
|
Gdy opisany powyżej program będzie już działał idealnie, możesz go usprawnić, aby wykonywał zadanie w nieskończoność. W ten sposób nie będzie konieczne wielokrotne uruchamianie tego programu do zasilenia wielu robotów.
|
||
|
|
||
|
Napisane dotychczas programy uruchamiają wszystkie instrukcje tylko raz, jedną po drugiej, od początku do końca programu. Można kazać robotowi powtarzać niektóre instrukcje: wystarczy napisać \c;while (true)\n;, klamrę otwierającą, instrukcje, które mają być powtarzane oraz klamrę zamykającą. Powtarzanie kilku instrukcji w ten sposób zwane jest pętlą. Oto przykład programu umożliwiającego powtarzanie w nieskończoność instrukcji szukających ogniwa elektrycznego, podnoszenia go i umieszczania w dziale latającym:
|
||
|
\c;
|
||
|
\s; while (true)
|
||
|
\s; {
|
||
|
\s; item = radar(PowerCell);
|
||
|
\s; goto(item.position);
|
||
|
\s; grab();
|
||
|
\s;
|
||
|
\s; item = radar(WingedShooter);
|
||
|
\s; goto(item.position);
|
||
|
\s; drop();
|
||
|
\s; }
|
||
|
\n;
|
||
|
Oczywiście deklaracja zmiennej \c;object item;\n; powinna pojawić się przed pętlą, a nie wewnątrz niej: zmienną wystarczy zadeklarować raz.
|
||
|
|
||
|
\t;Uwaga
|
||
|
Robot może z powodzeniem wykonywać program samodzielnie. W międzyczasie możesz na przykład zaznaczyć astronautę i obejrzeć co się dzieje w gnieździe - warto. Uważaj jednak, aby nie postrzelił Cię własny robot...
|
||
|
|
||
|
\t;Zobacz również
|
||
|
\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
|