en to pl translation catalogue (1022 entries)

note: type: \b; header
en: Instruction <code>abstime</code>
pl: Instrukcja <code>abstime</code>

note: type: Plain text, \t; header
en: Syntax:
pl: Składnia:

note: type: Plain text
en: Return the time in seconds elapsed since the beginning of the mission.
pl: Zwraca czas (w sekundach) jaki upłynął od początku misji.

note: type: \t; header
en: Return: <code><a cbot|float>float</a></code>
pl: Typ wyniku: <code><a cbot|float>float</a></code>

note: type: Plain text
en: Time in seconds.
pl: Czas w sekundach.

note: type: \t; header
en: See also
pl: Zobacz również

note: type: Plain text
en: <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <a cbot>Programowanie</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: \b; header
en: Instruction <code>aim</code>
pl: Instrukcja <code>aim</code>

note: type: Plain text
en: Syntax :
pl: Składnia:

note: type: Bullet: 'o'
en: <a object|botfr>Shooter</a>
pl: <a object|botfr>Działo</a>

note: type: Bullet: 'o'
en: <a object|botor>Orga shooter</a>
pl: <a object|botor>Działo organiczne</a>

note: type: Bullet: 'o'
en: <a object|botphaz>Phazer shooter</a>
pl: <a object|botphaz>Działo fazowe</a>

note: type: Plain text
en: When controlling the robot through programming, the only way to turn the gun left or right is to turn the whole robot with the instruction <code><a cbot|turn>turn</a></code>.
pl: Podczas kontrolowania działanie robota przy użyciu programu, jedynym sposobem obrócenia lufy w prawo lub w lewo, jest obrócenie całego robota instrukcją <code><a cbot|turn>turn</a></code>.

note: type: \t; header
en: angle: <code><a cbot|float>float</a></code>
pl: kąt: <code><a cbot|float>float</a></code>

note: type: Plain text
en: Angle in degrees of the gun relative to the robot. A positive value orients the gun upward. For shooters and orga shooters, the angle must range from <code>-20</code> to <code>+20</code> degrees. For phazer shooters, the angle must range from <code>-20</code> to <code>45</code> degrees.
pl: Kąt w stopniach w odniesieniu do robota. Wartość dodatnia ustawia lufę w górę. Dla dział i dział organicznych ograniczeniem jest przedział od <code>-20</code> do <code>+20</code> stopni. Dla działa fazowego kąt ten musi należeć do przedziału od <code>-20</code> do <code>45</code> stopni.

note: type: \t; header
en: Return value: <code><a cbot|int>int</a></code>
pl: Typ wyniku: <code><a cbot|int>int</a></code>

note: type: Plain text
en: Zero if everything is OK, a value different from zero if the rotation could not be performed: 
    <code>== 0 </code>The gun has now got the desired orientation
    <code>!= 0 </code>rotation impossible
pl: Zero jeśli wszystko jest w porządku, wartość różna od zera, jeśli obrót nie może być wykonany: 
    <code>== 0 </code>Lufa została wycelowana w żądanym kierunku
    <code>!= 0 </code>obrót niemożliwy

note: type: \b; header
en: Arrays
pl: Tablice

note: type: Plain text
en: An array is basically a collection of variables of the same type or class. You can use N dimensionnal arrays in the CBOT language. Each dimension is limited to 9999 elements. You must use square brackets <code>[]</code> after the type name or the variable name to declare an array.
pl: Tablica jest zestawem obiektów tego samego typu lub klasy. W języku CBOT można używać N wymiarowych tablic. Każdy wymiar jest ograniczony do 9999 elementów. Aby zadeklarować tablicę, należy użyć nawiasów kwadratowych <code>[]</code> po nazwie zmiennej lub nazwie typu.

note: type: Plain text
en: Actually when the CBOT interpreter encounters an array declaration, it just creates a <code><a cbot|null>null</a></code> <a cbot|pointer>reference</a>:
pl: W rzeczywistości, gdy interpreter języka CBOT napotka deklarację tablicy, tworzy jedynie <a cbot|pointer>wskaźnik</a> <code><a cbot|null>null</a></code>:

note: type: Source code
en: int a[5];  // a is now a null reference
pl: int a[5];  // jest teraz wskaźnikiem null

note: type: Plain text
en: As soon as you put values into the array, the elements are created and the reference is initialized:
pl: Z chwilą wstawienia wartości do tablicy, tworzone są elementy i inicjalizowany jest wskaźnik:

note: type: Source code
en: a[2] = 213;  // a points to
                 // 3 elements [0], [1] et [2]
pl: a[2] = 213;  // tablica a wskazuje na
                 // 3 elementy: [0], [1] i [2]

note: type: Plain text
en: After this operation, <code>a</code> contains a reference to the elements of the array. Elements <code>[0]</code> and <code>[1]</code> are created but not initialized because an array cannot contain empty elements. The <code><a cbot|sizeof>sizeof</a></code> instruction allows you to obtain the number of elements contained in an array.
pl: Po tej operacji, zmienna <code>a</code> zawiera wskaźnik do elementów tablicy. Elementy <code>[0]</code> i <code>[1]</code> są tworzone, ale nie inicjalizowane, gdyż tablica nie może zawierać pustych elementów. Instrukcja <code><a cbot|sizeof>sizeof</a></code> umożliwia sprawdzenie liczby elementów tablicy.

note: type: Plain text
en: When an array is declared with a maximum size, the program will stop as soon as there is an access beyond the maximum array size. No error is signalled during compilation even if the error is obvious:
pl: Gdy określony jest rozmiar maksymalny deklarowanej tablicy, program zatrzyma się w przypadku próby dostępu poza tablicę. Błąd ten nie jest sygnalizowany podczas kompilacji, nawet jeśli jest oczywisty:

note: type: Source code
en: {
    	int a[5];
    	a[7] = 123;  // no error at compile time
    	             // but error at run time
    }
pl: {
    	int a[5];
    	a[7] = 123;  // nie ma błędu podczas kompilacji
    	             // ale pojawia się podczas działania programu
    }

note: type: Plain text
en: If you pass an array as parameter to a <a cbot|function>function</a>, the function only receives a <a cbot|pointer>reference</a> to the array. That means if you modify an array element in the function, the element of the array that has been passed the function will be actuallay modified.
pl: Jeśli tablica przekazywana jest jako parametr <a cbot|function>funkcji</a>, funkcja otrzymuje jedynie <a cbot|pointer>wskaźnik</a> do tablicy. Oznacza to, że w przypadku modyfikacji elementu tablicy wewnątrz funkcji, zostanie w rzeczywistości zmodyfikowany element tablicy przekazanej funkcji jako parametr.

note: type: \b; header
en: Blocks
pl: Bloki

note: type: Plain text
en: You can use braces <code>{ }</code> to group a number of instructions together in order to make one single block out of them, for example:
pl: Do zgrupowania razem kilku instrukcji można użyć nawiasów klamrowych <code>{}</code> i utworzyć z nich jeden blok, na przykład:

note: type: Source code
en: 	{
    		float  t;
    		t = a;
    		a = b;
    		b = t;  // switches round a and b
    	}
pl: 	{
    		float  t;
    		t = a;
    		a = b;
    		b = t;  // zamienia wartości a i b
    	}

note: type: Plain text
en: Every instruction in the block is followed by a <a cbot|term>semicolon</a>, but the block itself is not. 
    Let us take the following example with the instruction <code><a cbot|if>if</a></code> to illustrate the use of blocks in a program:
pl: Każda instrukcja w bloku zakończona jest <a cbot|term>średnikiem</a>, ale sam blok już nie. 
    W celu zilustrowania użycia bloków w programie rozważmy następujący przykład z instrukcją <code><a cbot|if>if</a></code>:

note: type: Source code
en: 	if ( a < b )
    		<n/>instruction 1<c/>;
    		<n/>instruction 2<c/>;
    	<n/>instruction 3<c/>;
pl: 	if ( a < b )
    		<n/>instrukcja 1<c/>;
    		<n/>instrukcja 2<c/>;
    	<n/>instrukcja 3<c/>;

note: type: Plain text
en: If the <a cbot|cond>condition</a> is true, instructions 1, 2 and 3 are performed. If the condition is false, only instruction 1 is ignored, instructions 2 and 3 are performed. The fact that instruction 2 is lined up with instruction 1 does not matter. 
    If you want to perform instructions 1 and 2 only if the condition is true, you have to bracket them together in a block:
pl: Jeśli <a cbot|cond>warunek</a> jest prawdziwy, wykonywane są instrukcje 1, 2 i 3. Jeśli nie, tylko instrukcja 1 jest pomijana, instrukcje 2 i 3 są wykonywane. Fakt, że instrukcja 2 jest na tym samym poziomie co instrukcja 1, nie ma znaczenia. 
    Jeśli instrukcje 1 i 2 mają być wykonywane tylko, gdy warunek jest prawdziwy, należy użyć nawiasów klamrowych do złączenia ich w jeden blok:

note: type: Source code
en: 	if ( a < b )
    	{
    		<n/>instruction 1<c/>;
    		<n/>instruction 2<c/>;
    	}
    	<n/>instruction 3<c/>;
pl: 	if ( a < b )
    	{
    		<n/>instrukcja 1<c/>;
    		<n/>instrukcja 2<c/>;
    	}
    	<n/>instrukcja 3<c/>;

note: type: Plain text
en: Blocks may be needed with instructions <code><a cbot|if>if</a></code>, <code><a cbot|while>while</a></code> and <code><a cbot|for>for</a></code>, in order to group several instructions that should be performed only if a condition is true, or repeated several times. 
    You can fit blocks into other blocks, on as many levels as you need. Here is an example of imbrication on two levels :
pl: Bloki mogą być niezbędne w przypadku instrukcji <code><a cbot|if>if</a></code>, <code><a cbot|while>while</a></code> oraz <code><a cbot|for>for</a></code>, w celu zgrupowania instrukcji, które mają być wykonywane tylko w przypadku prawdziwości warunku bądź powtarzane wielokrotnie. 
    Bloki można umieszczać wewnątrz innych bloków dowolną liczbę razy. Oto przykład dwupoziomowego zagnieżdżenia:

note: type: Plain text
en: You had better line up the open brace <code>{</code> with the closing brace <code>}</code> in order to improve readability, but it is not compulsory. The following example takes less space, is equivalent to the previous example, but it is not advisable to write your programs in the following style :
pl: Aby poprawić czytelność programu, najlepiej jest wyrównać klamrę otwierającą <code>{</code> z zamykającą <code>}</code>, chociaż nie jest to obowiązkowe. Następujący przykład zajmuje mniej miejsca i jest równoważny poprzedniemu, nie jest jednak polecane używanie takiego stylu:

note: type: Plain text
en: <a cbot>Instructions</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <a cbot>Instrukcje</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: \b; header
en: Type <code>bool</code>
pl: Typ <code>bool</code>

note: type: Plain text
en: In a variable of this type you can put a boolean value, that is a value that can take only two states: true or false.
pl: Zmiennej tego typu można przypisać wartość logiczną, czyli wartość która ma dwa stany: true (prawda) lub false (fałsz).

note: type: \b; header
en: Instruction <code>break</code>
pl: Instrukcja <code>break</code>

note: type: Source code
en: <c/>while ( condition )
    {
    	break;
    }
pl: <c/>while ( warunek )
    {
    	break;
    }

note: type: Plain text
en: With this instruction, you can get out immediately of a <code><a cbot|while>while</a></code> or <code><a cbot|for>for</a></code> loop.
pl: Instrukcja break kończy wykonywanie pętli <code><a cbot|while>while</a></code> lub <code><a cbot|for>for</a></code>.

note: type: Plain text
en: Here is an example:
pl: Oto przykład:

note: type: Source code
en: <c/>int i = 0;
    while ( true )
    {
    	<n/>Instructions ...<c/>
    	i = i+1;
    	if ( i >= 10 )
    	{
    		break;
    	}
    	<n/>more instructions ...<c/>
    }
pl: <c/>int i = 0;
    while ( true )
    {
    	<n/>Instrukcje ...<c/>
    	i = i+1;
    	if ( i >= 10 )
    	{
    		break;
    	}
    	<n/>więcej instrukcji ...<c/>
    }

note: type: \b; header
en: Value <code>Categories</code>
pl: <code>Kategorie</code> wartości

note: type: Plain text
en: Categories represent the names of objects in the CBOT language. Everything in COLOBOT is an object: robots, buildings, raw materials, etc., even yourself.
pl: Kategorie to nazwy obiektów języka CBOT. W grze COLOBOT wszystko to obiekty: roboty, budynki, surowce, itd., nawet Ty.

note: type: Plain text
en:        <code><a object|titanore>TitaniumOre</a>          </code>Titanium Ore
           <code><a object|uranore>UraniumOre</a>           </code>Uranium Ore
           <code><a object|titan>Titanium</a>             </code>Cube of converted Titanium
           <code><a object|power>PowerCell</a>            </code>Regular Power Cell
           <code><a object|atomic>NuclearCell</a>          </code>Nuclear Power Cell
           <code><a object|bullet>OrgaMatter</a>           </code>Organic Matter
           <code><a object|bbox>BlackBox</a>             </code>Black Box
           <code><a object|tnt>TNT</a>                  </code>Explosive device
           <code><a object|key>KeyA..D</a>              </code>Keys A, B, C and D
pl:        <code><a object|titanore>TitaniumOre</a>          </code>Ruda tytanu
           <code><a object|uranore>UraniumOre</a>           </code>Ruda uranu
           <code><a object|titan>Titanium</a>             </code>Kostka przetopionego tytanu
           <code><a object|power>PowerCell</a>            </code>Zwykłe ogniwo elektryczne
           <code><a object|atomic>NuclearCell</a>          </code>Atomowe ogniwo elektryczne
           <code><a object|bullet>OrgaMatter</a>           </code>Materia organiczna
           <code><a object|bbox>BlackBox</a>             </code>Czarna skrzynka
           <code><a object|tnt>TNT</a>                  </code>Materiały wybuchowe
           <code><a object|key>KeyA..D</a>              </code>Klucze A, B, C i D

note: type: Plain text
en: <button 158/>   <code><a object|bottr>PracticeBot</a>            </code>Practice Bot
    <button 173/>   <code><a object|bottarg>TargetBot</a>              </code>Target Bot
pl: <button 158/>   <code><a object|bottr>PracticeBot</a>            </code>Robot treningowy
    <button 173/>   <code><a object|bottarg>TargetBot</a>              </code>Robot cel

note: type: Plain text
en: <button 137/>   <code><a object|botgr>WheeledGrabber</a>         </code>Wheeled Grabber
    <button 138/>   <code><a object|botgc>TrackedGrabber</a>         </code>Tracked Grabber
    <button 139/>   <code><a object|botgj>WingedGrabber</a>          </code>Winged Grabber
    <button 150/>   <code><a object|botgs>LeggedGrabber</a>          </code>Legged Grabber
pl: <button 137/>   <code><a object|botgr>WheeledGrabber</a>         </code>Transporter na kołach
    <button 138/>   <code><a object|botgc>TrackedGrabber</a>         </code>Transporter na gąsienicach
    <button 139/>   <code><a object|botgj>WingedGrabber</a>          </code>Transporter latający
    <button 150/>   <code><a object|botgs>LeggedGrabber</a>          </code>Transporter na nogach

note: type: Plain text
en: <button 140/>   <code><a object|botsr>WheeledSniffer</a>         </code>Wheeled Sniffer
    <button 141/>   <code><a object|botsc>TrackedSniffer</a>         </code>Tracked Sniffer
    <button 142/>   <code><a object|botsj>WingedSniffer</a>          </code>Winged Sniffer
    <button 152/>   <code><a object|botss>LeggedSniffer</a>          </code>Legged Sniffer
pl: <button 140/>   <code><a object|botsr>WheeledSniffer</a>         </code>Szperacz na kołach
    <button 141/>   <code><a object|botsc>TrackedSniffer</a>         </code>Szperacz na gąsienicach
    <button 142/>   <code><a object|botsj>WingedSniffer</a>          </code>Szperacz latający
    <button 152/>   <code><a object|botss>LeggedSniffer</a>          </code>Szperacz na nogach

note: type: Plain text
en: <button 143/>   <code><a object|botfr>WheeledShooter</a>         </code>Wheeled Shooter
    <button 144/>   <code><a object|botfc>TrackedShooter</a>         </code>Tracked Shooter
    <button 145/>   <code><a object|botfj>WingedShooter</a>          </code>Winged Shooter
    <button 151/>   <code><a object|botfs>LeggedShooter</a>          </code>Legged Shooter
pl: <button 143/>   <code><a object|botfr>WheeledShooter</a>         </code>Działo na kołach
    <button 144/>   <code><a object|botfc>TrackedShooter</a>         </code>Działo na gąsienicach
    <button 145/>   <code><a object|botfj>WingedShooter</a>          </code>Działo latające
    <button 151/>   <code><a object|botfs>LeggedShooter</a>          </code>Działo na nogach

note: type: Plain text
en: <button 153/>   <code><a object|botor>WheeledOrgaShooter</a>     </code>Wheeled Orga Shooter
    <button 154/>   <code><a object|botoc>TrackedOrgaShooter</a>     </code>Tracked Orga Shooter
    <button 155/>   <code><a object|botoj>WingedOrgaShooter</a>      </code>Winged Orga Shooter
    <button 156/>   <code><a object|botos>LeggedOrgaShooter</a>      </code>Legged Orga Shooter
pl: <button 153/>   <code><a object|botor>WheeledOrgaShooter</a>     </code>Działo organiczne na kołach
    <button 154/>   <code><a object|botoc>TrackedOrgaShooter</a>     </code>Działo organiczne na gąsienicach
    <button 155/>   <code><a object|botoj>WingedOrgaShooter</a>      </code>Latające działo organiczne
    <button 156/>   <code><a object|botos>LeggedOrgaShooter</a>      </code>Działo organiczne na nogach

note: type: Plain text
en: <button 149/>   <code><a object|botsub>Subber</a>                 </code>Subber
    <button 148/>   <code><a object|botrecy>Recycler</a>               </code>Recycler
    <button 157/>   <code><a object|botshld>Shielder</a>               </code>Shielder
    <button 146/>   <code><a object|bottump>Thumper</a>                </code>Thumper
    <button 147/>   <code><a object|botphaz>PhazerShooter</a>          </code>Phazer Shooter
pl: <button 149/>   <code><a object|botsub>Subber</a>                 </code>Robot nurek
    <button 148/>   <code><a object|botrecy>Recycler</a>               </code>Robot recykler
    <button 157/>   <code><a object|botshld>Shielder</a>               </code>Robot osłaniacz
    <button 146/>   <code><a object|bottump>Thumper</a>                </code>Robot uderzacz
    <button 147/>   <code><a object|botphaz>PhazerShooter</a>          </code>Działo fazowe

note: type: Plain text
en:        <code><a object|mother>AlienQueen</a>         </code>Alien Queen
           <code><a object|egg>AlienEgg</a>           </code>Alien Egg
           <code><a object|ant>AlienAnt</a>           </code>Ant
           <code><a object|spider>AlienSpider</a>        </code>Spider
           <code><a object|wasp>AlienWasp</a>          </code>Wasp
           <code><a object|worm>AlienWorm</a>          </code>Worm
pl:        <code><a object|mother>AlienQueen</a>         </code>Królowa Obcych
           <code><a object|egg>AlienEgg</a>           </code>Jajo Obcych
           <code><a object|ant>AlienAnt</a>           </code>Mrówka
           <code><a object|spider>AlienSpider</a>        </code>Pająk
           <code><a object|wasp>AlienWasp</a>          </code>Osa
           <code><a object|worm>AlienWorm</a>          </code>Robal

note: type: Plain text
en: <a cbot>CBOT Language</a> and <a cbot|type>Variables</a>.
pl: <a cbot>Język CBOT</a> i <a cbot|type>zmienne</a>.

note: type: \b; header
en: Instruction <code>class</code>
pl: Instrukcja <code>class</code>

note: type: Source code
en: public class ClassName
    {
    	declarations;
    }
pl: public class NazwaKlasy
    {
    	deklaracje;
    }

note: type: \b; header
en: Instruction <code>close</code>
pl: Instrukcja <code>close</code>

note: type: Plain text
en: Close a file opened previously with <code><a cbot|open>open</a></code>. This is a method of the <code><a cbot|file>file</a></code> class; therefore you cannot write  <code>close()</code> but only <code>handle.close()</code>:
pl: Zamyka plik otwarty wcześniej przy użyciu instrukcji <code><a cbot|open>open</a></code>. Jest to metoda klasy <code><a cbot|file>file</a></code>, wobec czego nie można napisać <code>close()</code>, lecz jedynie <code>handle.close()</code>:

note: type: Plain text
en: <code><a cbot|file>file</a></code>, <code><a cbot|open>open</a></code>, <code><a cbot|readln>readln</a></code>, <code><a cbot|writeln>writeln</a></code> and <code><a cbot|eof>eof</a></code>.
    <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <code><a cbot|file>file</a></code>, <code><a cbot|open>open</a></code>, <code><a cbot|readln>readln</a></code>, <code><a cbot|writeln>writeln</a></code> i <code><a cbot|eof>eof</a></code>.
    <a cbot>Programowanie</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: \b; header
en: Conditions
pl: Warunki

note: type: Plain text
en: <code>a == b  </code><code>a</code> equals <code>b</code>
    <code>a != b  </code><code>a</code> is different from <code>b</code>
    <code>a <  b  </code><code>a</code> smaller than <code>b</code>
    <code>a <= b  </code><code>a</code> smaller than or equal to <code>b</code>
    <code>a >  b  </code><code>a</code> greater than <code>b</code>
    <code>a >= b  </code><code>a</code> greater than or equal to <code>b</code>
pl: <code>a == b  </code><code>a</code> równe <code>b</code>
    <code>a != b  </code><code>a</code> różne od <code>b</code>
    <code>a <  b  </code><code>a</code> mniejsze od <code>b</code>
    <code>a <= b  </code><code>a</code> mniejsze od lub równe <code>b</code>
    <code>a >  b  </code><code>a</code> większe od <code>b</code>
    <code>a >= b  </code><code>a</code> większe od lub równe <code>b</code>

note: type: Plain text
en: <code>12 == 12  </code>returns true
    <code>45 != 47  </code>returns true 
    <code>99 == 98  </code>returns false
    <code>12 <  -1  </code>returns false
    <code>12 >= 10  </code>returns true 
    <code>12 >= 12  </code>returns true
pl: <code>12 == 12  </code>daje w wyniku true
    <code>45 != 47  </code>daje w wyniku true 
    <code>99 == 98  </code>daje w wyniku false
    <code>12 <  -1  </code>daje w wyniku false
    <code>12 >= 10  </code>daje w wyniku true 
    <code>12 >= 12  </code>daje w wyniku true

note: type: Plain text
en: Be careful not to confuse the equality comparison <code>==</code> with the assignment of a <a cbot|var>variable</a> <code>=</code>.
pl: Nie należy mylić operatora porównania <code>==</code> z operatorem przypisania wartości <a cbot|var>zmiennej</a> <code>=</code>.

note: type: Plain text
en: <code>a == b</code> is an expression that compares <code>a</code> with <code>b</code>.
    <code>a = b</code> is an expression that copies the value of <code>b</code> into <code>a</code>.
pl: <code>a == b</code> jest wyrażeniem porównującym <code>a</code> z <code>b</code>.
    <code>a = b</code> jest wyrażeniem kopiującym wartość <code>b</code> do <code>a</code>.

note: type: \b; header
en: Instruction <code>continue</code>
pl: Instrukcja <code>continue</code>

note: type: Source code
en: <c/>while ( condition )
    {
    	continue;
    }
pl: <c/>while ( warunek )
    {
    	continue;
    }

note: type: Plain text
en: With this instruction, you can jump over the rest of instructions in the <code><a cbot|bloc>bloc</a></code> of a <code><a cbot|while>while</a></code> or <code><a cbot|for>for</a></code> loop: The execution will resume at the beginning of the bloc, the next time the loop is repeated.
pl: Przy użyciu tej instrukcji, można przeskoczyć resztę instrukcji w <code><a cbot|bloc>bloku</a></code> pętli <code><a cbot|while>while</a></code> lub <code><a cbot|for>for</a></code>: Działanie zostanie wznowione na początku bloku przy następnym powtórzeniu pętli.

note: type: Source code
en: <c/>int i = 0;
    while ( i < 5 )
    {
    	i = i+1;
    	if ( i == 3 )
    	{
    		continue;
    	}
    	<n/>Instructions ...<c/>
    }
pl: <c/>int i = 0;
    while ( i < 5 )
    {
    	i = i+1;
    	if ( i == 3 )
    	{
    		continue;
    	}
    	<n/>Instrukcje ...<c/>
    }

note: type: Plain text
en: The instructions will only be executed for the values of <code>i</code> 1, 2, 4 and 5.
pl: Instrukcje będą wykonane tylko dla wartości <code>i</code> 1, 2, 4 i 5.

note: type: \b; header
en: Instruction <code>deletefile</code>
pl: Instrukcja <code>deletefile</code>

note: type: Plain text
en: The deletefile instruction deletes an existing file in the files/ folder.
pl: Instrukcja deletefile usuwa istniejący plik z folderu files/.

note: type: Plain text
en: Files can only be deleted in the files/ folder which is located in the folder inside Colobot save directory. You cannot not delete files that are located elsewhere than in the files/ folder.
pl: Pliki mogą być usuwane tylko w folderze files/ znajdującym się w folderze zapisów gry Colobot. Nie jest możliwe usuwanie plików znajdujących się w innych folderach.

note: type: Source code
en: <c/>deletefile ( filename );<n/>
pl: <c/>deletefile ( nazwa_pliku );<n/>

note: type: \b; header
en: Instruction <code>deleteinfo</code>
pl: Instrukcja <code>deleteinfo</code>

note: type: Source code
en: <c/>deleteinfo ( name, power );<n/>
pl: <c/>deleteinfo ( nazwa, moc );<n/>

note: type: Plain text
en: Delete an existing information in the closest <a object|exchange>information exchange post</a>.
pl: Usuwa istniejącą informację z najbliższej <a object|exchange>stacji przekaźnikowej</a>.

note: type: \t; header
en: name: <code>string</code>
pl: nazwa: <code>string</code>

note: type: Plain text
en: Name of the information to be deleted. This name is a string: it must be written in quotation marks "".
pl: Nazwa informacji do usunięcia. Nazwa jest typu string i musi być napisana w cudzysłowach "".

note: type: \t; header
en: power: <code>float</code>
pl: moc: <code>float</code>

note: type: Plain text
en: Power of the transmitter, which corresponds to the maximal distance between the sender and the exchange post. If the distance is longer, the information won't be deleted. Default value is 10 metres.
pl: Moc transmitera, odpowiadająca maksymalnej odległości pomiędzy nadawcą i stacją przekaźnikową. Jeśli odległość jest większa, informacja nie zostanie usunięta. Domyślana wartość to 10 metrów.

note: type: Plain text
en: <code><a cbot|receive>receive</a></code>, <code><a cbot|send>send</a></code> and <code><a cbot|testinfo>testinfo</a></code>.
    <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <code><a cbot|receive>receive</a></code>, <code><a cbot|send>send</a></code> i <code><a cbot|testinfo>testinfo</a></code>.
    <a cbot>Programowanie</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: \b; header
en: Instruction <code>direction</code>
pl: Instrukcja <code>direction</code>

note: type: Source code
en: <c/>direction ( pos );<n/>
pl: <c/>direction ( pozycja );<n/>

note: type: Plain text
en: Calculates the rotation that a robot must perform in order to point towards a given position.
pl: Oblicza kąt obrotu, niezbędny do skierowania robota w kierunku zadanej pozycji.

note: type: \t; header
en: pos: <code><a cbot|point>point</a></code>
pl: pozycja: <code><a cbot|point>point</a></code>

note: type: Plain text
en: Position towards which the robot must point.
pl: Pozycja, w kierunku której ma być skierowany robot.

note: type: \t; header
en: Return value: <code><a cbot|float>float</a></code>
pl: Typ wyniku: <code><a cbot|float>float</a></code>

note: type: Plain text
en: Angle of the rotation that must be performed. -90 means f. ex. a rotation of 90 degrees to the right.
pl: Kąt obrotu, który powinien być wykonany. -90 oznacza obrót o 90 stopni w prawo.

note: type: \b; header
en: Instruction <code>distance</code>
pl: Instrukcja <code>distance</code>

note: type: Plain text
en: With the instruction <code>distance( , )</code> you can calculate the distance between two positions.
pl: Za pomocą instrukcji <code>distance( , )</code> można obliczyć odległość między dwoma punktami.

note: type: \b; header
en: Basic use
pl: Podstawowe użycie

note: type: Plain text
en: If you write <code>position</code> alone, this gives you the position of the bot that executes the program. If you write the name of a variable followed by <code>.position</code>, this gives you the position of the object described in the variable.
pl: Napisanie samej instrukcji <code>position</code> daje w wyniku pozycję robota wykonującego program. Napisanie nazwy zmiennej, a następnie bezpośrednio po niej <code>.position</code>, daje w wyniku pozycję obiektu opisywanego przez zmienną.

note: type: Plain text
en: Here is a program that moves forward, covering exactly the distance between the bot and the closest ant:
pl: Oto program polecający robotowi podejść do przodu, o odległość równą odległości pomiędzy robotem i najbliższą mrówką:

note: type: Plain text
en: This is of course pure suicide. Better to stop 40 meters before, in order to be at shooting range:
pl: Byłoby to oczywiste samobójstwo. Lepiej zatrzymać robota 40 metrów wcześniej, w odległości odpowiedniej do strzału:

note: type: \b; header, \t; header
en: For specialists
pl: Dla specjalistów

note: type: Source code
en: <c/>distance ( pos1, pos2 );<n/>
pl: <c/>distance ( pozycja1, pozycja2 );<n/>

note: type: Plain text
en: Calculates the distance between two positions.
pl: Oblicza odległość między dwoma punktami.

note: type: \t; header
en: pos1, pos2: <code><a cbot|point>point</a></code>
pl: pozycja1, pozycja2: <code><a cbot|point>point</a></code>

note: type: Plain text
en: Coordinates of the two positions.
pl: Współrzędne dwóch punktów.

note: type: Plain text
en: Distance between the two positions.
pl: Odległość między dwoma punktami.

note: type: \b; header
en: Instruction <code>distance2d</code>
pl: Instrukcja <code>distance2d</code>

note: type: Source code
en: <c/>distance2d ( pos1, pos2 );<n/>
pl: <c/>distance2d ( pozycja1, pozycja2 );<n/>

note: type: Plain text
en: Calculates the distance between two positions (ignores the z coordinate).
pl: Oblicza odległość pomiędzy dwoma punktami (pomijając współrzędną z).

note: type: \b; header
en: Instruction <code>do - while</code>
pl: Instrukcja <code>do - while</code>

note: type: Source code
en: <code>do
    {
    	</code>Instructions ...<c/>
    }
    while ( condition );
pl: <code>do
    {
    	</code>Instrukcje ...<c/>
    }
    while ( warunek );

note: type: Plain text
en: This instruction allows you to perform several times the instructions inside the <a cbot|bloc>block</a>. The instructions are executed at least once, because the condition is tested only afterwards.
    Be careful not to confuse the instruction <c/>do { } while ( );<n/> with the instruction <code><a cbot|while>while</a> ( ) { }</code>; the latter tests the condition before the instructions in the block are executed.
pl: Instrukcja ta umożliwia kilkukrotne wykonanie instrukcji w <a cbot|bloc>bloku</a>. Instrukcje wykonywane są conajmniej jeden raz, gdyż warunek sprawdzany jest dopiero na końcu pętli.
    Należy uważać, aby nie pomylić instrukcji <c/>do { } while ( );<n/> z instrukcją <code><a cbot|while>while</a> ( ) { }</code>; ta druga sprawdza warunek przed wykonaniem instrukcji w bloku.

note: type: \t; header
en: <code>condition</code>
pl: <code>warunek</code>

note: type: Plain text
en: The instructions in the block are performed over and over again, as long as the <a cbot|cond>condition</a> is true.
pl: Instrukcje w bloku są wykonywane tak długo, jak długo prawdziwy jest <a cbot|cond>warunek</a>.

note: type: Plain text
en: Here is an example :
pl: Oto przykład:

note: type: \t; header
en: Attention
pl: Uwaga

note: type: Plain text
en: Always put a <a cbot|term>semicolon</a> at the end of the line <code>while ( )</code>.
pl: Zawsze należy umieszczać <a cbot|term>średnik</a> na końcu wiersza z instrukcją <code>while ( )</code>.

note: type: Plain text
en: The instructions <code><a cbot|break>break</a></code> and <code><a cbot|continue>continue</a></code> can be useful inside a block following the instruction <code>do { }</code>.
pl: Instrukcje <code><a cbot|break>break</a></code> i <code><a cbot|continue>continue</a></code> mogą być przydatne wewnątrz bloku instrukcji <code>do { }</code>.

note: type: \b; header
en: Instruction <code>drop</code>
pl: Instrukcja <code>drop</code>

note: type: Plain text
en: The instruction <c/>drop();<n/> instructs the bot to drop whatever the operating arm is carrying on the ground, on the platform of a building or on the power cell location of a bot.
pl: Instrukcja <c/>drop();<n/> poleca robotowi upuścić niesiony przedmiot na ziemię, platformę budynku lub miejsce na ogniwo elektryczne robota.

note: type: Plain text
en: The instruction <c/>drop();<n/> written in this form drops the object in front of the bot. Here is a short program that grabs an object in front of the bot and drops it 5 meters further:
pl: Instrukcja <c/>drop();<n/> napisana w takiej postaci upuszcza przedmiot przed robotem. Oto krótki program podnoszący przedmiot bezpośrednio przed robotem i upuszczający go 5 metrów dalej:

note: type: Plain text
en: This instruction appeals to the operating arm of a <a object|botgr>grabber bot</a>, in order to drop what it is holding.
pl: Instrukcja ta odwołuje się do ramienia <a object|botgr>robota transportera</a>, w celu upuszczenia niesionego przedmiotu.

note: type: \t; header
en: oper: <code><a cbot|int>int</a></code> (default value<code>InFront</code>)
pl: oper: <code><a cbot|int>int</a></code> (domyślna wartość <code>InFront</code>)

note: type: Plain text
en: Oper indicates where the robot should drop the object. If no indication is given, the object is dropped in front of the bot. 
    <code>InFront   </code>  Drops in front (default value).
    <code>Behind    </code>  Drops behind.
    <code>EnergyCell</code>  Drops on the bot's own power cell location.
pl: Oper oznacza gdzie robot powinien zostawić przedmiot. Jeśli nie jest to określone, przedmiot zostawiany jest przed robotem. 
    <code>InFront   </code>  przed (domyślnie).
    <code>Behind    </code>  za
    <code>EnergyCell</code>  w miejscu na baterię samego robota.

note: type: Plain text
en: Normally an error stops the program. You can prevent the program from stopping on errors by using the <code><a cbot|errmode>errmode</a>(0)</code> instruction. A value different from zero if an error occurred is then returned by <c/>drop();<n/>.
    <code>== 0 </code>object was dropped
    <code>!= 0 </code>error, no object was dropped
pl: Zwykle wystąpienie błędu powoduje zatrzymanie programu. Można wyłączyć zatrzymywanie się programu w przypadku wystąpienia błędu, używając instrukcji <code><a cbot|errmode>errmode</a>(0)</code>. Wtedy w przypadku wystąpienia błędu instrukcja <c/>drop();<n/> zwraca w wyniku wartość różną od zera.
    <code>== 0 </code>przedmiot został upuszczony
    <code>!= 0 </code>błąd, nie upuszczono żadnego przedmiotu

note: type: \b; header
en: Instruction <code>eof</code>
pl: Instrukcja <code>eof</code>

note: type: Plain text
en: Test the end of file condition of an open file. This is a method of the <code><a cbot|file>file</a></code> class; therefore you cannot write  <code>eof()</code> but only <code>handle.eof()</code>:
pl: Sprawdza warunek końca otwartego pliku. Jest to metoda klasy <code><a cbot|file>file</a></code>; wobec czego zamiast <code>eof()</code> należy napisać <code>handle.eof()</code>:

note: type: Plain text
en: Example:
pl: Przykład:

note: type: Plain text
en: <code><a cbot|file>file</a></code>, <code><a cbot|open>open</a></code>, <code><a cbot|close>close</a></code>, <code><a cbot|readln>readln</a></code> and <code><a cbot|writeln>writeln</a></code>.
    <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <code><a cbot|file>file</a></code>, <code><a cbot|open>open</a></code>, <code><a cbot|close>close</a></code>, <code><a cbot|readln>readln</a></code> i <code><a cbot|writeln>writeln</a></code>.
    <a cbot>Programowanie</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: \b; header
en: Instruction <code>errmode</code>
pl: Instrukcja <code>errmode</code>

note: type: Plain text
en: The <c/>errmode();<n/> instruction allows you to chose if the program should stop when an error occurs in one of the following instructions: <code><a cbot|goto>goto</a></code>, <code><a cbot|move>move</a></code>, <code><a cbot|grab>grab</a></code>, <code><a cbot|drop>drop</a></code>, etc.
pl: Instrukcja <c/>errmode();<n/> pozwala wybrać, czy program powinien zatrzymywać się w przypadku wystąpienia błędu w wykonywaniu jednej z następujących instrukcji: <code><a cbot|goto>goto</a></code>, <code><a cbot|move>move</a></code>, <code><a cbot|grab>grab</a></code>, <code><a cbot|drop>drop</a></code>, itd.

note: type: Source code
en: <c/>errmode ( mode );<n/>
pl: <c/>errmode ( tryb );<n/>

note: type: Plain text
en: Normally the program is stopped when an error occurs. If you use the instruction <c/>errmode(0);<n/> at the beginning of the program, the instructions listed above return a value different from zero if the instruction could not be performed.
pl: Zwykle program zatrzymuje się po wystąpieniu błędu. Po użyciu instrukcji <c/>errmode(0);<n/> na początku programu, wymienione powyżej instrukcje dają w wyniku wartość różną od zera jeśli instrukcja nie mogła być wykonana.

note: type: \t; header
en: mode: <code><a cbot|float>float</a></code> (<code>1</code> per default)
pl: tryb: <code><a cbot|float>float</a></code> (domyślnie <code>1</code>)

note: type: Plain text
en: Error treatment mode.
    <code>0</code> -> continues program execution and returns a non zero value
    <code>1</code> -> stops the program (default behavior)
pl: Sposób traktowania błędu.
    <code>0</code> -> kontynuuje działanie programu i daje w wyniku wartość różną od zera
    <code>1</code> -> zatrzymuje program (działanie domyślne)

note: type: Plain text
en: Example 1:
pl: Przykład 1:

note: type: Plain text
en: Example 2:
pl: Przykład 2:

note: type: Source code
en: <c/>errmode(0);
    int err;
    err = goto(pos);
    if ( err != 0 )
    {
    	<n/>goto did not perform correctly ...<code>
    	</code>take some appropriate action ...<c/>
    }
pl: <c/>errmode(0);
    int err;
    err = goto(pozycja);
    if ( err != 0 )
    {
    	<n/>instrukcji goto nie udało się wykonać...<code>
    	</code>podejmij odpowienie działania...<c/>
    }

note: type: \b; header
en: Expressions
pl: Wyrażenia

note: type: Plain text
en: is equivalent to
pl: jest równoważne

note: type: Plain text
en: <code>+=</code>  addition
    <code>-=</code>  subtraction
    <code>*=</code>  multiplication
    <code>/=</code>  division
    <code>%=</code>  remainder of the division (only for the type <code><a cbot|int>int</a></code>)
pl: <code>+=</code>  dodawanie
    <code>-=</code>  odejmowanie
    <code>*=</code>  mnożenie
    <code>/=</code>  dzielenie
    <code>%=</code>  reszta z dzielenia (tylko dla typu całkowitego <code><a cbot|int>int</a></code>)

note: type: Plain text
en: The operators <code>++</code> and <code>--</code> allow you to increment (++) or to decrement (--) a variable in very compact and efficient manner.
pl: Operatory <code>++</code> i <code>--</code> umożliwiają wygodny i zwarty zapis zwiększania (++) lub zmniejszania (--) zmiennych.

note: type: \b; header
en: Instruction <code>extern</code>
pl: Instrukcja <code>extern</code>

note: type: Plain text
en: The <code>extern</code> instruction  determines the <a cbot|function>function</a> that acts as main program of a robot. The name of the function declared with <code>extern</code> will apear in the program list in the lower left corner of the screen.
pl: Instrukcja <code>extern</code> wyróżnia <a cbot|function>funkcję</a>, która jest głównym programem robota. Nazwa funkcji zadeklarowanej jako <code>extern</code> pojawi się na liście programów w lewej dolnej części ekranu.

note: type: Plain text
en: If the program contains other functions, only the main function must be preceded by <code>extern</code>.
pl: Jeśli program zawiera inne funkcje, tylko główna funkcja powinna być poprzedzona słowem <code>extern</code>.

note: type: \b; header
en: Type <code>false</code>
pl: Typ <code>false</code>

note: type: Plain text
en: This value means that a condition is not true; it is one of the two values that a <a cbot|bool>boolean</a> <a cbot|var>variable</a> can take.
pl: Wartość ta oznacza, że warunek nie jest prawdziwy; jest to jedna z dwóch wartości <a cbot|var>zmiennej</a> typu <a cbot|bool>boolean</a>.

note: type: \b; header
en: Type <code>file</code>
pl: Typ <code>file</code>

note: type: Plain text
en: This type is used for accessing files in the files/ folder.
pl: Jest to typ wykorzystywany przy dostępie do plików znajdujących się w folderze files/.

note: type: Plain text
en: Use the syntax above for declaring a file handle. You must use () to create an instance of the <code>file</code> class. Without the () the handle would have the value <code><a cbot|null>null</a></code>.
pl: Powyższej składni należ używać do deklarowania zmiennej plikowej. Konieczne jest użycie () do utworzenia instancji klasy <code>file</code>. Bez (), handle będzie wskazywać na <code><a cbot|null>null</a></code>.

note: type: Plain text
en: Files can only be created and opened in the files/ folder which is located in the folder inside Colobot save directory. You cannot not create or open files elsewhere than in the files/ folder.
pl: Pliki mogą być tworzone i otwierane tylko w folderze files/, który znajduje sie w folderze zapisów gry Colobot. Nie jest możliwe tworzenie ani otwieranie plików poza folderem files/.

note: type: Plain text
en: <code>file</code> is actually not a simple type but a class. <code>open</code>, <code>close</code>, <code>writeln</code> etc. are methods of the <code>file</code> class. This is the reason why we always write <code>handle.method()</code>:
pl: <code>file</code> w rzeczywistości nie jest typem prostym ale klasą. <code>open</code>, <code>close</code>, <code>writeln</code> itd. są metodami klasy <code>file</code>. Dlatego zawsze należy pisać <code>handle.method()</code>:

note: type: Plain text
en: <code><a cbot|open>open</a></code>, <code><a cbot|close>close</a></code>, <code><a cbot|readln>readln</a></code>, <code><a cbot|writeln>writeln</a></code> and <code><a cbot|eof>eof</a></code>.
    <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <code><a cbot|open>open</a></code>, <code><a cbot|close>close</a></code>, <code><a cbot|readln>readln</a></code>, <code><a cbot|writeln>writeln</a></code> i <code><a cbot|eof>eof</a></code>.
    <a cbot>Programowanie</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: \b; header
en: Instruction <code>fire</code>
pl: Instrukcja <code>fire</code>

note: type: Plain text
en: The instruction <c/>fire();<n/> fires the bot's onboard cannon.
pl: Instrukcja <c/>fire();<n/> powoduje wystrzał z broni pokładowej robota.

note: type: Plain text
en: Generally this instruction is used to shoot one-second bursts:
pl: Przeważnie instrukcja ta używana jest do jednosekundowych serii strzałów:

note: type: Source code
en: <c/>fire ( time );<n/>
pl: <c/>fire ( czas );<n/>

note: type: Plain text
en: Fires the gun, with a burst that lasts a certain time. The longer the burst, the more energy it needs. This instruction can be used with the following bot types:
pl: Strzela serią trwającą określony czas. Im dłuższa seria, tym więcej energii jest zużywane. Instrukcja ta może być używana przez następujące typy robotów:

note: type: Plain text
en: In order to move the gun upward or downward, use the instruction <code><a cbot|aim>aim</a></code>.
pl: Do celowania w górę lub w dół, należy używać instrukcji <code><a cbot|aim>aim</a></code>.

note: type: \t; header
en: time: <code><a cbot|float>float</a></code>
pl: czas: <code><a cbot|float>float</a></code>

note: type: Plain text
en: Duration of the burst. Generally, the value given is 1. Shorter bursts can also be performed in order to spare time and energy.
pl: Czas trwania serii. Zwykle jest to 1 sekunda. Krótsze serie pozwalają zaoszczędzić czas i energię.

note: type: Plain text
en: Zero if OK, or a value different from zero if an error occurred.
    <code>== 0 </code>the cannon has been fired
    <code>!= 0 </code>error, the cannon could not be fired
pl: Zero w przypadku powodzenia lub inna wartość jeśli wystąpił błąd.
    <code>== 0 </code>udało się wystrzelić 
    <code>!= 0 </code>błąd, strzał nie mógł byc wykonany

note: type: \b; header
en: Instruction <code>flatground</code>
pl: Instrukcja <code>flatground</code>

note: type: Plain text
en: Calculates the maximal radius of a flat zone on which a building ca be built.
pl: Oblicza maksymalny promień płaskiego obszaru, na którym może być zbudowany budynek.

note: type: Plain text
en: Center of the circlular zone.
pl: Środek kolistej strefy.

note: type: Plain text
en: Maximal radius.
pl: Maksymalny promień.

note: type: Plain text
en: Radius of the flat zone (always between 0 and rmax).
pl: Promień płaskiego obszaru (zawsze pomiędzy 0 i rmax).

note: type: \b; header
en: Type <code>float</code>
pl: Typ <code>float</code>

note: type: Plain text
en: Use this type for most variables that contains numbers. Variables of this type can contain positive and negative numbers, whole or real numbers, for example:
pl: Typ ten jest używany dla większości zmiennych zawierających liczby. Zmienne tego typu mogą zawierać liczby dodatnie i ujemne, zarówno całkowite jak i rzeczywiste, na przykład:

note: type: Plain text
en: If you need only whole numbers (f. ex. 12 or -5000), you should rather use the type <code><a cbot|int>int</a></code>.
pl: Jeśli potrzebne są tylko liczby całkowite (takie jak 12 lub -5000), lepszym wyborem jest użycie typu <code><a cbot|int>int</a></code>.

note: type: Plain text
en: Do not insert space or colon characters into a number. To separate the whole part from the fractional part, use a dot.
pl: Nie można wstawiać spacji ani przecinków wewnątrz liczby. Do rozdzielania części całkowitej i części ułamkowej należy używać kropki.

note: type: Source code
en:    Write       and not
       12.56       12 . 56
      -54.34       -54,34
    12895.69    12,895.69
pl:    dobrze      źle
       12.56       12 . 56
      -54.34       -54,34
    12895.69    12,895.69

note: type: Plain text
en: Floating point numbers are represented in Colobot with 32 bits.
    The highest value that can be represented is 3.4E+38.
    The smallest value that can be represented is 3.4E-38.
pl: Liczby zmiennoprzecinkowe reprezentowane są w grze Colobot za pomocą 32 bitów.
    Największa reprezentowalna wartość to 3.4E+38.
    Najmniejsza reprezentowalna wartość to 3.4E-38.

note: type: \b; header
en: Instruction <code>for</code>
pl: Instrukcja <code>for</code>

note: type: Source code
en: <c/>for ( before ; condition ; end )
    {
    	<n/>Instructions ...<c/>
    }
pl: <c/>for ( przed ; warunek ; koniec )
    {
    	<n/>Instrukcje...<c/>
    }

note: type: Plain text
en: This instruction allows you to execute a certain number of times the instructions contained in the <a cbot|bloc>block</a>.
pl: Instrukcja ta pozwala na powtórzenie określoną ilość razy instrukcji zawartych w <a cbot|bloc>bloku</a>.

note: type: \t; header
en: <code>before</code>
pl: <code>przed</code>

note: type: Plain text
en: This <a cbot|cond>condition</a> determines if another instance of the loop must be executed. It is tested before every instance of the loop.
pl: <a cbot|cond>Warunek</a> określa, czy powinno być wykonane następne przejście pętli. Jest on sprawdzany przed każdym jej przejściem.

note: type: \t; header
en: <code>end</code>
pl: <code>koniec</code>

note: type: Source code
en: {
    	message(i) ;
    }
pl: {
    	message(i);
    }

note: type: Plain text
en: The following example is strictly equivalent to a <code>for</code>-loop, but it uses the instruction <code><a cbot|while>while</a></code>:
pl: Następujący przykład, równoważny pętli <code>for</code>, używa instrukcji <code><a cbot|while>while</a></code>:

note: type: Source code
en: <c/>before;
    while ( condition )
    {
    	<n/>Instructions ...<c/>
    	end;
    }
pl: <c/>przed;
    while ( warunek )
    {
    	<n/>Instrukcje...<c/>
    	koniec;
    }

note: type: Plain text
en: Do not put a <a cbot|term>semicolon</a> at the end of the line <code>for ( )</code>.
pl: Na końcu instrukcji <code>for ( )</code> nie należy umieszczać <a cbot|term>średnika</a>.

note: type: Plain text
en: The instructions <code><a cbot|break>break</a></code> and <code><a cbot|continue>continue</a></code> can be useful inside a block following the instruction <code>for </code>.
pl: Instrukcje <code><a cbot|break>break</a></code> i <code><a cbot|continue>continue</a></code> mogą być przydatne wewnątrz bloku instrukcji <code>for </code>.

note: type: \b; header
en: Functions
pl: Funkcje

note: type: Plain text
en: You can also declare a function <a cbot|public>public</a> so it can be used by other bots.
pl: Można też zadeklarować funkcję <a cbot|public>publiczną</a>, która będzie dostępna dla wszystkich robotów.

note: type: \b; header
en: Instruction <code>goto</code>
pl: Instrukcja <code>goto</code>

note: type: Plain text
en: The instruction <c/>goto();<n/> instructs the bot to reach a given position.
pl: Instrukcja <c/>goto();<n/> rozkazuje robotowi udać się do podanej pozycji.

note: type: Plain text
en: The most current use consists in moving the bot to an object located with the instruction <c/><a cbot|radar>radar</a>();<n/>. If the information returned by the <c/><a cbot|radar>radar</a>();<n/> has been stored in a certain variable, write the name of the variable followed by <code>.position</code> in order to get the position of the object. Here is an example of a program that looks for a <a object|titan>titanium cube</a>, goes to the position and grabs it:
pl: Najczęstsze użycie polega na wysłaniu robota do obiektu zlokalizowanego przy użyciu instrukcji <c/><a cbot|radar>radar</a>();<n/>. Jeśli jego dane zastały zapisane w zmiennej, należy po nazwie zmiennej napisać <code>.position</code> aby otrzymać pozycję obiektu. Oto przykładowy program znajdujący <a object|titan>kostkę tytanu</a> idący na jej pozycję i podnoszący ją:

note: type: Source code
en: 	item = <a cbot|radar>radar</a>(Titanium);
    	goto(item.position);
    	<a cbot|grab>grab</a>();
pl: 	element = <a cbot|radar>radar</a>(Titanium);
    	goto(element.position);
    	<a cbot|grab>grab</a>();

note: type: Source code
en: <c/>goto ( position, altitude, goal, crash );<n/>
pl: <c/>goto ( pozycja, wysokość, cel, zderzenie );<n/>

note: type: Plain text
en: Tells the robot to go to the given position, avoiding all the obstacles if this is possible.
pl: Rozkazuje robotowi udać się w podane miejsce unikając wszelkich przeszkód, jeśli to możliwe.

note: type: Plain text
en: Coordinates of the goal position.
pl: Współrzędne pozycji docelowej.

note: type: \t; header
en: altitude: <code><a cbot|float>float</a></code>
pl: wysokość: <code><a cbot|float>float</a></code>

note: type: Plain text
en: Flight altitude for <a object|botgj>winged bots</a>. The altitude is useful only for <a object|botgj>winged bots</a>. From the initial altitude, the bot climbs higher until it reaches the specified hight. When arriving close to destination, it goes down to touch the ground at the given position. If no value is given, an altitude of 10 meters is the default value. On very short moves, even winged bot stay on the ground. For all bot except winged bots, this parameter is ignored.
pl: Wysokość lotu <a object|botgj>robota latającego</a>. Parametr ten jest użyteczny tylko w przypadku <a object|botgj>robota latającego</a>. Z wysokości początkowej, robot wznosi się do góry, do czasu osiągnięcia określonej wysokości. Po zbliżeniu się do miejsca docelowego, zmniejsza wysokość, aby opaść na ziemię w zadanej pozycji. Jeśli nie określono wysokości, domyślną wartością jest 10 metrów. Przy bardzo krótkich trasach, nawet robot latający może poruszać się po ziemi. Parametr ten jest ignorowany dla wszystkich robotów poza robotem latającym.

note: type: \t; header
en: goal: <code><a cbot|int>int</a></code> (default value <code>0</code>)
pl: cel: <code><a cbot|int>int</a></code> (domyślna wartość: <code>0</code>)

note: type: Plain text
en: This parameter tells the bot how it must reach the goal: 
    <code>0</code>  stops exactly at the goal position
    <code>1</code>  goes close to the goal position, without stopping.
    If no value is given, <code>0</code> (precision) is the default value.
pl: Określa sposób w jaki robot powinien osiągnąć swoj cel: 
    <code>0</code>  zatrzymuje się dokładnie w pozycji docelowej
    <code>1</code>  zbliża się do pozycji docelowej bez zatrzymywania się.
    Jeśli nie określono wartości, domyślnie przyjmowane jest <code>0</code> (dokładnie).

note: type: Plain text
en: Normally an error stops the program. You can prevent the program from stopping on errors by using the <code><a cbot|errmode>errmode</a>(0)</code> instruction. A value different from zero if an error occurred is then returned by <code>goto()</code>.
    <code>== 0 </code>Goal position reached
    <code>!= 0 </code>Goal position impossible to reach
pl: Zwykle wystąpienie błędu powoduje zatrzymanie programu. Można wyłączyć zatrzymywanie się programu w przypadku wystąpienia błędu, używając instrukcji <code><a cbot|errmode>errmode</a>(0)</code>. Wtedy w przypadku wystąpienia błędu instrukcja <code>goto()</code> zwraca w wyniku wartość różną od zera.
    <code>== 0 </code>Pozycja docelowa została osiągnięta
    <code>!= 0 </code>Osiągnięcie pozycji docelowej jest niemożliwe

note: type: \b; header
en: Instruction <code>grab</code>
pl: Instrukcja <code>grab</code>

note: type: Plain text
en: The instruction <c/>grab();<n/> instructs the bot to use the operating arm to grab an object located on the ground, on the platform of a building or on the power cell location of a bot.
pl: Instrukcja <c/>grab();<n/> rozkazuje robotowi podnieść za pomocą ramienia chwytającego przedmiot znajdujący się na ziemi, platformie budynku lub miejscu na ogniwo robota.

note: type: Plain text
en: The instruction <c/>grab();<n/> written in this form grabs the object located in front of the bot. Here is a short program that grabs an object in front of the bot and drops it 5 meters further:
pl: Instrukcja <c/>grab();<n/> napisana w ten sposób, podniesie przedmiot znajdujący się przed robotem. Oto krótki program podnoszący przedmiot przed robotem i upuszczający go 5 metrów dalej:

note: type: Plain text
en: This instruction appeals to the operating arm of a <a object|botgr>grabber bot</a>, in order to grab the closest object.
pl: Instrukcja ta odwołuje się do ramienia <a object|botgr>robota transportera</a>, powodując chwycenie najbliższego obiektu.

note: type: Plain text
en: Oper indicates where the bot should look for an object to grab. If no indication is given, the object is picked up in front of the bot.
    <code>InFront   </code>  Grabs in front (default value).
    <code>Behind    </code>  Grabs behind.
    <code>EnergyCell</code>  Grabs the bot's own power cell.
pl: Parametr oper określa gdzie robot powinien szukać przedmiotu do podniesienia. Jeśli nie jest to określone, podnoszony jest obiekt znajdujący się przed robotem:
    <code>InFront   </code>  przed (domyślnie).
    <code>Behind    </code>  za.
    <code>EnergyCell</code>  wyjmuje własne ogniwo elektryczne.

note: type: Plain text
en: Normally an error stops the program. You can prevent the program from stopping on errors by using the <code><a cbot|errmode>errmode</a>(0)</code> instruction. A value different from zero if an error occurred is then returned by <c/>grab();<n/>.
    <code>== 0 </code>an object was grabbed
    <code>!= 0 </code>error, no object was grabbed
pl: Zwykle wystąpienie błędu powoduje zatrzymanie programu. Można wyłączyć zatrzymywanie się programu w przypadku wystąpienia błędu, używając instrukcji <code><a cbot|errmode>errmode</a>(0)</code>. Wtedy w przypadku wystąpienia błędu instrukcja <c/>grab();<n/> zwraca w wyniku wartość różną od zera.
    <code>== 0 </code>obiekt został chwycony
    <code>!= 0 </code>błąd, obiekt nie został chwycony

note: type: \b; header
en: Instructions <code>if</code> and <code>else</code>
pl: Instrukcje <code>if</code> i <code>else</code>

note: type: Plain text
en: With the instruction <code>if() {}</code> you can execute a set of instructions only if a certain condition is true. Write the condition in brackets <code>()</code>, and the instructions in braces <code>{}</code>.
pl: Używając instrukcji <code>if() {}</code> można uzależnić wykonanie zbioru instrukcji od spełnienia określonego warunku. Warunek należy zapisać w nawiasach <code>()</code>, a instrukcje w nawiasach klamrowych <code>{}</code>.

note: type: Plain text
en: Here is a concrete example: The bot will shoot only if the target is closer than 40 meters:
pl: Oto konkretny przykład: Robot będzie strzelał dopiero wtedy, gdy cel będzie bliżej niż 40 metrów:

note: type: Plain text
en: You can also test if an object exists at all. If the instruction <c/><a cbot|radar>radar</a>();<n/> does not find the requested object, it returns the value <code>null</code>. So you can test if an object does not exists with the condition  <code>(item == null)</code>, or test if it exists with  <code>(item != null)</code>. Two equal signs <code>==</code> test equality, an exclamation mark followed by an equal sign <code>!=</code> test inequality. Here is a test that will go to rechage the <a object|power>power cell</a> only if there is a <a object|station>power station</a>:
pl: Można też sprawdzić, czy obiekt w ogóle istnieje. Jeśli instrukcja <c/><a cbot|radar>radar</a>();<n/> nie znajdzie żądanego obiektu, zwraca wartość <code>null</code>. Można dzięki temu zweryfikować czy obiekt istnieje, warunkiem <code>(item != null)</code>  lub czy nie istnieje <code>(item == null)</code>. Dwa znaki równości <code>==</code> sprawdzają równość, znak równości poprzedzony wykrzyknikiem <code>!=</code>  sprawdza nierówność. Oto program testowy, który będzie ładował <a object|power>ogniwa elektryczne</a> tylko wtedy, gdy znajdzie <a object|station>stację energetyczną</a>:

note: type: Source code
en: <code>if ( condition )
    {
    	</code>Instructions A ...<code>
    }
    else
    {
    	</code>Instructions B ...<c/>
    }
pl: <code>if ( warunek )
    {
    	</code>Instrukcje A ...<code>
    }
    else
    {
    	</code>Instrukcje B ...<c/>
    }

note: type: Plain text
en: With this conditional structure you can execute a <a cbot|bloc>bloc</a> A or a <a cbot|bloc>bloc</a> B depending on a <a cbot|cond>condition</a>. If the condition is true, bloc A is executed. If the condition is false, bloc B is executed. 
    Part <code>else { }</code> is not compulsory.
pl: Przy użyciu tej struktury warunkowej można wykonać <a cbot|bloc>blok</a> A lub <a cbot|bloc>blok</a> B w zależności od <a cbot|cond>warunku</a>. Jeśli warunek jest prawdziwy, wykonywany jest blok A. Jeśli warunek jest fałszywy, wykonywany jest blok B. 
    Część <code>else { }</code> nie jest obowiązkowa.

note: type: Plain text
en: Do not put a <a cbot|term>semicolon</a> at the end of the line <code>if ( )</code>.
pl: Na końcu linii <code>if ( )</code> nie należy stawiać <a cbot|term>średnika</a>.

note: type: \b; header
en: Type <code>int</code>
pl: Typ <code>int</code>

note: type: Plain text
en: Use this type for variables that contain only whole numbers, negative or positive. For example:
pl: Jest to typ zmiennych zawierających tylko liczby całkowite, dodatnie albo ujemne. Na przykład:

note: type: Plain text
en: To represent real numbers like 12.05 or -0.005, use the type <code><a cbot|float>float</a></code>.
pl: Do reprezentacji liczb rzeczywistych, takich jak 12,05 lub -0,005 należy używać typu <code><a cbot|float>float</a></code>.

note: type: Plain text
en: Do not put space or colon signs inside a number.
pl: Nie należy używać spacji ani przecinków w zapisie liczby.

note: type: Plain text
en: Numbers of the type <code>int</code> are represented with 32 bits.
    The highest number that can be represented is (2^31)-1, that is 2'147'483'647.
    The smallest number that can be represented is -(2^31), that is -2'147'483'648.
pl: Reprezentacja liczb typu <code>int</code> zajmuje 32 bity.
    Największa reprezentowalna liczba to (2^31)-1, czyli 2 147 483 647.
    Najmniejsza reprezentowalna liczba to -(2^31), czyli -2 147 483 648.

note: type: \b; header
en: Instruction <code>jet</code>
pl: Instrukcja <code>jet</code>

note: type: Source code
en: <c/>jet ( power );<n/>
pl: <c/>jet ( moc );<n/>

note: type: Plain text
en: Direct control of the jet of a <a object|botgj>winged bot</a>. The jet is what makes the bot fly. Use this instruction in order to take off, climb, descend or land.
pl: Umożliwia bezpośrednią kontrolę nad silnikiem odrzutowym <a object|botgj>robota latającego</a>. Silnik odrzutowy umożliwia robotom latanie. Instrukcja ta może służyć do wznoszenia się, zwiększania i zmniejszania wysokości lotu oraz lądowania.

note: type: \t; header
en: power: <code><a cbot|float>float</a></code>
pl: moc: <code><a cbot|float>float</a></code>

note: type: Plain text
en: Power of the jet, ranges between <code>-1</code> and <code>+1</code>. <c/>jet(1);<n/> instructs the bot to climb as fast as possible, <c/>jet(-1);<n/> descends as fast as possible, <c/>jet(0);<n/> stabilizes the altitude. In order to get slower altitude changes, use intermediate values, for example <c/>jet(0.3);<n/>.
pl: Moc silnika odrzutowego, może zawierać się w zakresie od <code>-1</code> do <code>+1</code>. <c/>jet(1);<n/> to sposób na najszybsze wznoszenie się robota, <c/>jet(-1);<n/> zmniejsza wysokość tak szybko, jak to możliwe, <c/>jet(0);<n/> utrzymuje stałą wysokość. W celu uzyskania wolniejszych zmian wysokości, należy użyć wartości pośrednich, na przykład <c/>jet(0.3);<n/>.

note: type: \t; header
en: Return value: <code><a cbot|void>void</a></code>
pl: Typ wyniku: <code><a cbot|void>void</a></code>

note: type: Plain text
en: None.
pl: Brak.

note: type: \b; header
en: Instruction <code>message</code>
pl: Instrukcja <code>message</code>

note: type: Source code
en: <c/>message ( text, type );<n/>
pl: <c/>message ( tekst, typ );<n/>

note: type: Plain text
en: Prints a message on top of the screen. After a few seconds, the message disappears automatically.
pl: Wyświetla wiadomość na górze ekranu. Wiadomość znika automatycznie po kilku sekundach.

note: type: \t; header
en: text: <code><a cbot|string>string</a></code>
pl: tekst: <code><a cbot|string>string</a></code>

note: type: Plain text
en: Text that is to be displayed. It is possible to append several texts and/or values with the operator <code>+</code>:
    <c/>message("Not found");<n/> 
    <c/>message(angle);<n/> 
    <c/>message(n + " object(s) found");<n/> 
    <c/>message("Distance = " + dist + " meters");<n/>
pl: Tekst do wyświetlenia. Możliwe jest złączanie tekstów i/lub wartości przy użyciu operatora <code>+</code>:
    <c/>message("Nie znaleziono");<n/> 
    <c/>message(kąt);<n/> 
    <c/>message(n + " obiektów");<n/> 
    <c/>message("Odległość = " + dist + " metrów");<n/>

note: type: \t; header
en: type: <code><a cbot|int>int</a></code> (default value <code>DisplayMessage</code>)
pl: typ: <code><a cbot|int>int</a></code> (domyślna wartość: <code>DisplayMessage</code>)

note: type: Plain text
en: Type of the message, that determines the background color.
pl: Typ wiadomości, określający kolor tła.

note: type: Bullet: 'o'
en: <code>DisplayMessage</code>  Standard message on yellow background.
pl: <code>DisplayMessage</code>  Standardowa wiadomość na żółtym tle.

note: type: Bullet: 'o'
en: <code>DisplayInfo   </code>  Information on green background.
pl: <code>DisplayInfo   </code>  Informacja na zielonym tle.

note: type: Bullet: 'o'
en: <code>DisplayWarning</code>  Warning on blue background.
pl: <code>DisplayWarning</code>  Ostrzeżenie na niebieskim tle.

note: type: Bullet: 'o'
en: <code>DisplayError  </code>  Error on red background.
pl: <code>DisplayError  </code>  Błąd na czerwonym tle.

note: type: \b; header
en: Instruction <code>motor</code>
pl: Instrukcja <code>motor</code>

note: type: Plain text
en: The instruction <c/>motor( , );<n/> sets the speed for the left-hand and the right-hand motor of the bot.
pl: Instrukcja <c/>motor( , );<n/> ustawia prędkość lewego i prawego silnika robota.

note: type: Plain text
en: The speed given to the motors will remain constant during the execution of the following instructions. Thanks to this characteristic it is possible to perform a rotation during the instruction <c/><a cbot|fire>fire</a>();<n/>. This will sweep a whole zone with only one burst. Here is an example that will sweep the zone in front of the bot:
pl: Prędkość nadana robotowi pozostaje niezmienna podczas wykonywania następujących instrukcji. Dzięki temu możliwe jest obracanie robota podczas wykonywania instrukcji <c/><a cbot|fire>fire</a>();<n/>. Pozwala to na omiecenie całego obszaru jedną serią. Oto program omiatający całą strefę przed robotem:

note: type: Source code
en: 	<a cbot|turn>turn</a>(45);         // turns 45 degrees left
    	motor(0.5, -0.5); // slow rotation to the right
    	<a cbot|fire>fire</a>(2);          // fire
    	motor(0,0);       // stops the rotation
pl: 	<a cbot|turn>turn</a>(45);         // obróć o 45 stopnie w lewo
    	motor(0.5, -0.5); // powoli obracaj w prawo
    	<a cbot|fire>fire</a>(2);          // strzelaj
    	motor(0,0);       // zatrzymaj obracanie

note: type: Plain text
en: With the left-hand motor turning half-speed forward and the right-hand motor turning half-speed backward, the bot will turn slowly on itself during the 2-second-burst.
pl: Z lewym silnikiem obracającym się z połową prędkości do przodu i prawym obracającym się z połową prędkości do tyłu, robot będzie się powoli obracał podczas 2 sekundowej serii strzałów.

note: type: Source code
en: <c/>motor ( left, right );<n/>
pl: <c/>motor ( lewy, prawy );<n/>

note: type: Plain text
en: Gives speed instructions to the right and left motors of the robot. The motors will keep this speed until a new motor instruction is performed, or until a <code><a cbot|move>move</a></code>, <code><a cbot|turn>turn</a></code> or <code><a cbot|goto>goto</a></code> instruction is performed.
pl: Ustala prędkości prawego i lewego silnika. Silniki będą poruszały się z tą prędkością do czasu ustalenia nowej prędkości silników lub wykonania jednej z instrukcji: <code><a cbot|move>move</a></code>, <code><a cbot|turn>turn</a></code> lub <code><a cbot|goto>goto</a></code>.

note: type: \t; header
en: left: <code><a cbot|float>float</a></code>
pl: lewy: <code><a cbot|float>float</a></code>

note: type: Plain text
en: Speed instruction for the left motor; the value must range between -1 and 1.
pl: Prędkość lewego silnika; wartości w zakresie od -1 do 1.

note: type: \t; header
en: right: <code><a cbot|float>float</a></code>
pl: prawy: <code><a cbot|float>float</a></code>

note: type: Plain text
en: Speed instruction for the right motor; the value must range between -1 and 1.
pl: Prędkość prawego silnika; wartości w zakresie od -1 do 1.

note: type: Plain text
en: Examples :
    <c/>motor(1, 1);<n/> moves forward with highest possible speed.
    <c/>motor(-0.5, -0.5);<n/> moves backward with half speed.
    <c/>motor(1, -1);<n/> turns right as fast as possible.
pl: Przykłady :
    <c/>motor(1, 1);<n/> ruch do przodu z maksymalną prędkością.
    <c/>motor(-0.5, -0.5);<n/> ruch do tyłu z połową prędkości.
    <c/>motor(1, -1);<n/> obrót w prawo z maksymalną prędkością.

note: type: Plain text
en: Note :
    <c/>motor(2, 2);<n/> will not move forward any faster than <code>motor(1, 1)</code> 
    <c/>motor(-2, -2);<n/> will not move backward any faster than <code>motor(-1, -1)</code>
pl: Uwaga:
    <c/>motor(2, 2);<n/> nie będzie poruszało robotem do przodu szybciej niż <code>motor(1, 1)</code> 
    <c/>motor(-2, -2);<n/> nie będzie poruszało robotem do tyłu szybciej niż  <code>motor(-1, -1)</code>

note: type: \b; header
en: Instruction <code>move</code>
pl: Instrukcja <code>move</code>

note: type: Plain text
en: The instruction <c/>move();<n/> instructs the bot to move forward or backward while keeping the same orientation. In brackets you must specify the length of the move in meters.
pl: Instrukcja <c/>move();<n/> rozkazuje robotowi poruszać się do przodu lub do tyłu przy zachowaniu niezmiennej orientacji. W nawiasie należy podać odległość (w metrach) o jaką powinien przemieścić się robot.

note: type: Plain text
en: If you want the bot to move forward 30 meters, write <c/>move(30);<n/>. In order to move the bot backward after it dropped a chunk of <a object|titanore>titanium ore</a> on the <a object|convert>converter</a>, write <c/>move(-2.5);<n/>.
pl: Aby robot przemieścił się do przodu o 30 metrów, należy napisać <c/>move(30);<n/>. Aby robot cofnął się po umieszczeniu <a object|titanore>rudy tytanu</a> w <a object|convert>hucie</a>, należy napisać <c/>move(-2.5);<n/>.

note: type: Source code
en: <c/>move ( length );<n/>
pl: <c/>move ( odległość );<n/>

note: type: Plain text
en: Moves forward or backward of a given distance, always keeping the current orientation of the bot.
pl: Porusza robotem do przodu lub do tyłu o zadaną odległość, zachowując bieżącą orientację robota.

note: type: \t; header
en: length: <code><a cbot|float>float</a></code>
pl: odległość: <code><a cbot|float>float</a></code>

note: type: Plain text
en: Length of the move, in meters. A negative value makes the bot move backward.
pl: Odległość w metrach. Wartość ujemna powoduje ruch do tyłu.

note: type: Plain text
en: Normally an error stops the program. You can prevent the program from stopping on errors by using the <code><a cbot|errmode>errmode</a>(0)</code> instruction. A value different from zero if an error occurred is then returned by <code>move()</code>.
    <code>== 0 </code>Move executed
    <code>!= 0 </code>error, the instruction was not performed correctly
pl: Zwykle wystąpienie błędu powoduje zatrzymanie programu. Można wyłączyć zatrzymywanie się programu w przypadku wystąpienia błędu, używając instrukcji <code><a cbot|errmode>errmode</a>(0)</code>. Wtedy w przypadku wystąpienia błędu instrukcja <c/>move();<n/> zwraca w wyniku wartość różną od zera.
    <code>== 0 </code>instrukcja move zosta��a wykonana
    <code>!= 0 </code>błąd, instrukcja nie została poprawnie wykonana

note: type: \b; header
en: Type <code>nan</code>
pl: Typ <code>nan</code>

note: type: Plain text
en: This special value indicates that a <a cbot|var>variable</a> of type <code><a cbot|int>int</a></code> or <code><a cbot|float>float</a></code> contains no number, but "nothing". 
    For example, if the instruction <code><a cbot|receive>receive</a></code> can not get the requested information, it returns <code>nan</code> :
pl: Specjalna wartość oznaczająca, że <a cbot|var>zmienna</a> typu <code><a cbot|int>int</a></code> lub <code><a cbot|float>float</a></code> nie zawiera liczby ale "nic". 
    Na przykład jeśli instrukcja <code><a cbot|receive>receive</a></code> nie może uzyskać żądanej informacji, zwraca w wyniku wartość <code>nan</code>:

note: type: Source code
en: 	value = receive("Length");
    	if ( value == nan )  // not found ?
    	{
    		
    	}
pl: 	wartość = receive("Length");
    	if ( wartość == nan )  // nie znaleziono?
    	{
    		
    	}

note: type: \t; header
en: Dictionnary
pl: Słownik

note: type: Plain text
en: <code>nan</code> = Not A Number
pl: <code>nan</code> = Not A Number (nie liczba)

note: type: \b; header
en: Instruction <code>new</code> (for specialists)
pl: Instrukcja <code>new</code> (dla specjalistów)

note: type: Plain text
en: The <code>new</code> operator creates a <a cbot|class>class</a> instance:
    <c/><s/>	MyClass item;    // now item is a null reference
pl: Operator <code>new</code> tworzy nową instancję <a cbot|class>klasy</a>:
    <c/><s/>	MojaKlasa element;         // jest teraz wskaźnikiem null

note: type: Source code
en: 	item = new MyClass(); // now item is a reference
    	                      // to a new class instance
pl: 	element = new MojaKlasa(); // jest teraz wskaźnikiem
    	                           // do nowej instancji klasy

note: type: Plain text
en: If you want to create a new instance at declaration time you can ommit the new <code>new</code> operator by putting () after the declaration:
pl: W przypadku tworzenia nowej instancji podczas deklaracji, można ominąć operator <code>new</code>, dodając () na końcu deklaracji:

note: type: Plain text
en: Instead of:
    <c/><s/>	MyClass item = new MyClass();
    <n/>you can write:
    <c/><s/>	MyClass item();
pl: Zamiast:
    <c/><s/>	MojaKlasa element = new MojaKlasa();
    <n/>można napisać:
    <c/><s/>	MojaKlasa element();

note: type: Plain text
en: If your class has a constructor with parameters you can write:
    <c/><s/>	MyClass item = new MyClass(2, 3);
    <n/>or:
    <c/><s/>	MyClass item(2, 3);
pl: Jeśli klasa ma konstruktor z parametrami, można napisać:
    <c/><s/>	MojaKlasa element = new MojaKlasa(2, 3);
    <n/>lub:
    <c/><s/>	MojaKlasa element(2, 3);

note: type: Plain text
en: <code><a cbot|class>class</a></code>, <code><a cbot|pointer>reference</a></code>
    <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <code><a cbot|class>klasa</a></code>, <code><a cbot|pointer>wskaźnik</a></code>
    <a cbot>Programowanie</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: \b; header
en: Type <code>null</code>
pl: Typ <code>null</code>

note: type: Plain text
en: This special value indicates that the variable containing it does not reference an instance.
pl: Specjalna wartość oznaczająca, że zmienna, która ją zawiera nie wskazuje na żadną instancję.

note: type: Plain text
en: <a cbot|pointer>References</a>
    <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <a cbot|pointer>Wskaźniki</a>
    <a cbot>Programowanie</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: \b; header
en: Type <code>object</code>
pl: Typ <code>object</code>

note: type: Plain text
en: Position of the object on the planet, in meters. The coordinates <code>x</code> and <code>y</code> correspond to the location on a map, the <code>z</code> coordinate corresponds to the altitude above (respectively below) sea level.
pl: Położenie obiektu na planecie, w metrach. Współrzędne <code>x</code> i <code>y</code> odnoszą się do położenia na mapie, współrzędna <code>z</code> odpowiada wysokości nad (lub odpowiednio pod) poziomem morza.

note: type: Plain text
en: Orientation of the object, in degrees. The orientation tells you what direction the object is facing. An orientation of <code>0</code> corresponds to an object facing eastwards, thus following the positive <code>x</code> axis. The orientation is measured counterclockwise.
pl: Orientacja obiektu, w stopniach. Określa kierunek, w którym obrócony jest obiekt. Wartość <code>0</code> odpowiada orientacji na wschód, zgodnie z dodatnią osią <code>x</code>. Orientacja liczona jest przeciwnie do ruchu wskazówek zegara.

note: type: Plain text
en: Forward/backward angle of the robot. A pitch of <code>0</code> means that the bot is standing on flat ground. A positive inclination means that it is facing upwards, a negative inclination means that it is facing downwards.
pl: Pochylenie robota w przód/tył. Wartość <code>0</code> oznacza, że robot stoi na płaskim terenie. Wartość dodatnia oznacza, że robot "patrzy" w górę, wartość ujemna, że w dół.

note: type: Plain text
en: Left/right angle of the bot, in degrees. A positive value means that the bot is leaning to the left side, a negative value means that it is leaning to the right side.
pl: Pochylenie robota w lewo/prawo. Wartość dodatnia oznacza, że robot jest przechylony na lewą stronę, wartość ujemna, że na prawą.

note: type: Plain text
en: Energy level, between 0 and 1. A normal <a object|power>power cell</a> that is fully charged returns the value <code>1</code>. A <a object|atomic>nuclear power cell</a> never returns a value higher than 1, it just lasts longer. Attention: The energy level of a bot is always zero, because the energy is not contained in the bot, but in the power cell. To know the energy level of the power cell of a bot, you must write <code>energyCell.energyLevel</code>.
pl: Poziom energii, pomiędzy 0 i 1. Dla w pełni naładowanego <a object|power>zwykłego ogniwa elektrycznego</a> zwracana jest wartość <code>1</code>. <a object|atomic>Atomowe ogniwo elektryczne</a> nigdy nie zwraca wartości większej niż 1, jedynie działa dłużej. Uwaga: Poziom energii robota zawsze jest równy zero, gdyż energia nie jest zawarta w robocie ale w ogniwie elektrycznym. Aby poznać poziom energii ogniwa elektrycznego robota, należy napisać <code>energyCell.energyLevel</code>.

note: type: Plain text
en: Shield level of a robot or building. A level <code>1</code> indicates that the shield is still perfect. Every time that the bot or building gets a bullet or collides with another object, the shield level decreases. When the level reaches <code>0</code>, the next bullet or collision will destroy the bot or building. 
    Bots can re-energize their shield on a <a object|repair>repair center</a>. The shield of a building is repaired if it lays inside the protection sphere of a <a object|botshld>shielder</a>.
pl: Poziom osłony robota albo budynku. Wartość <code>1</code> oznacza w pełni sprawną osłonę. Za każdym uderzeniem pocisku lub zderzeniem z innym obiektem, zmniejsza się poziom osłony. Gdy osiągnie on <code>0</code>, następny pocisk bądź zderzenie spowoduje zniszczenie robota albo budynku. 
    Roboty mogą zregenerować osłony w <a object|repair>warsztacie</a>. Powłoka budynku regenerowana jest gdy znajdzie się w zasięgu sfery ochronnej robota <a object|botshld>osłaniacza</a>.

note: type: Plain text
en: Temperature of the jet of <a object|botgj>winged bots</a>. <code>0</code> corresponds to a cold jet. When used, the temperature increases progressively. When it reaches the value <code>1</code>, the jet is overheated and stops working, until it cooled down a little.
pl: Temperatura silnika odrzutowego <a object|botgj>robotów latających</a>. <code>0</code> odpowiada zimnemu silnikowi. W miarę używania, wzrasta jego temperatura. Gdy osiągnie wartość <code>1</code>, silnik przegrzewa się i przestaje działać do czasu ostygnięcia.

note: type: Plain text
en: The <code>z</code> coordinate of the position indicates the altitude above sea level, whereas the <code>altitude</code> indicates the height above ground. This value is meaningful only for <a object|botgj>winged bots</a> and for <a object|wasp>wasps</a>. For all other objects, this value is zero.
pl: Współrzędna <code>z</code> oznacza wysokość nad poziomem morza, podczas gdy <code>altitude</code> oznacza wysokość nad poziomem ziemi. Wartość ta ma znaczenie jedynie dla <a object|botgj>robotów latających</a> i <a object|wasp>os</a>. Dla pozostałych obiektów jest zerowa.

note: type: Plain text
en: The age of the object in seconds since it's creation.
pl: Wiek obiektów, w sekundach, od czasu ich powstania.

note: type: Plain text
en: This information is special, because it returns the information about another object, in this case the power pack. This means that energyCell contains all the characteristics of a normal object, for example <code>category</code> (PowerCell or NuclearCell), <code>position</code> (the position of the cell), etc.
    If you want to know the energy level of a robot, you must not check <code>energyLevel</code>, but <code>energyCell.energyLevel</code>.
    If the bot has bot no power cell, <code>energyCell</code> returns <code>null</code>.
pl: Jest to specjalna informacja, gdyż zwraca informacje o innym obiekcie, w tym przypadku ogniwie elektrycznym. Oznacza to, że energyCell zawiera wszystkie charakterystyki normalnego obiektu, na przykład <code>category</code> (PowerCell lub NuclearCell), <code>position</code> (pozycję ogniwa), itp.
    Aby poznać poziom energii robota, zamiast <code>energyLevel</code>, należy sprawdzić <code>energyCell.energyLevel</code>.
    Jeśli robot nie zawiera ogniwa elektrycznego, <code>energyCell</code> jest równe <code>null</code>.

note: type: Plain text
en: This information also returns the description of a whole object: the description of the object carried by a <a object|botgr>grabber</a>. If it carries nothing, <code>load</code> returns <code>null</code>.
pl: Ta informacja również zwraca opis całego obiektu, a mianowicie opis obiektu trzymanego przez <a object|botgr>transporter</a>. Jeśli nie niesie on niczego, <code>load</code> jest równe <code>null</code>.

note: type: \t; header, \b; header
en: Examples
pl: Przykłady

note: type: Plain text
en: The type <code>object</code> returns the special value <code><a cbot|null>null</a></code> when the object does not exist. For example:
pl: Typ <code>object</code> zwraca specjalną wartość <code><a cbot|null>null</a></code> gdy obiekt nie istnieje. Na przykład:

note: type: Source code
en: 	object a;
    	a = radar(BotGrabberRoller);
    	if ( a == null )  // object does not exist ?
    	{
    	}
    	if ( a.position.z > 50 )  // is it on a mountain ?
    	{
    	}
pl: 	object a;
    	a = radar(BotGrabberRoller);
    	if ( a == null )  // obiekt nie istnieje?
    	{
    	}
    	if ( a.position.z > 50 )  // czy jest na górze?
    	{
    	}

note: type: \b; header
en: Instruction <code>open</code>
pl: Instrukcja <code>open</code>

note: type: Plain text
en: Open a text file in the files/ folder. This is a method of the <code><a cbot|file>file</a></code> class. This is the reason why we always write <code>handle.open()</code>:
pl: Otwiera plik tekstowy w folderze files/. Jest to metoda klasy <code><a cbot|file>file</a></code>, dlatego zawsze należy używać konstrukcji <code>handle.open()</code>:

note: type: Plain text
en: To open a file, proceed as follows:
pl: Aby otworzyć plik, należy postępować następująco:

note: type: Source code
en: 	file handle();
    	handle.open("filename", "w");
    	handle.writeln("abc");
    	handle.close();
pl: 	file handle();
    	handle.open("nazwapliku", "w");
    	handle.writeln("abc");
    	handle.close();

note: type: Plain text
en: Files can only be created and opened in the files/ folder which is located in the folder inside Colobot save directory. You cannot not create or open files that are located elsewhere than in the files/ folder.
pl: Pliki mogą być tworzone tylko w folderze files/ znajdującym się w folderze zapisów gry Colobot. Nie jest możliwe tworzenie ani otwieranie plików znajdujących się w innych folderach.

note: type: Plain text
en: <code><a cbot|file>file</a></code>, <code><a cbot|close>close</a></code>, <code><a cbot|readln>readln</a></code>, <code><a cbot|writeln>writeln</a></code> and <code><a cbot|eof>eof</a></code>.
    <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <code><a cbot|file>file</a></code>, <code><a cbot|close>close</a></code>, <code><a cbot|readln>readln</a></code>, <code><a cbot|writeln>writeln</a></code> i <code><a cbot|eof>eof</a></code>.
    <a cbot>Programowanie</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: \b; header
en: Instruction <code>openfile</code>
pl: Instrukcja <code>openfile</code>

note: type: Source code
en: file handle = openfile("filename", "r");
pl: file handle = openfile("nazwapliku", "r");

note: type: \b; header
en: Type <code>point</code>
pl: Typ <code>point</code>

note: type: Plain text
en: Variables of this type contain the coordinates of a point in space. This type is made of three values that represent the <code>x</code>, <code>y</code> and <code>z</code> coordinates.
    <code>x</code> and <code>y</code> correspond to the place on the ground. The positive <code>x</code> axis faces towards east, the positive <code>y</code> axis faces towards north. 
    The <code>z</code> value corresponds to the altitude above sea level.
pl: Zmienne tego typu zawierają współrzędne punktu w przestrzeni. Składa się on z trzech wartości reprezentujących współrzędne <code>x</code>, <code>y</code> oraz \ c;z<n/>.
    <code>x</code> i <code>y</code> odpowiadają miejscu na powierzchni ziemi. Dodatnia oś <code>x</code> wskazuje wschód, dodatnia oś <code>y</code> wskazuje północ. 
    Wartość <code>z</code> odpowiada wysokości nad poziomem morza.

note: type: Plain text
en: If you want to declare a variable of type point, you can write:
pl: Aby zadeklarować zmienną typu point, można napisać:

note: type: Plain text
en: You can also set the variable taking one value after another:
pl: Można również pojedynczo ustawić wartości współrzędnych:

note: type: Plain text
en: With these examples, the following <a cbot|cond>condition</a> is true:
pl: W przykładach tych, następujący <a cbot|cond>warunek</a> jest prawdziwy:

note: type: Plain text
en: <n/> 
    The following declaration :
pl: <n/> 
    Następująca deklaracja:

note: type: Plain text
en: Is equivalent to :
pl: Jest równoważna poniższej:

note: type: \b; header
en: References (for specialists)
pl: Wskaźniki (dla specjalistów)

note: type: Plain text
en: CBOT uses references for <a cbot|class>classes</a> and <a cbot|array>arrays</a>. Any class variable actually contains a reference to the instance. The instance actually contains the class fields. Several references can reference the same instance. A <code><a cbot|null>null</a></code> reference references nothing. You can compare an instance to a suitcase and a reference to a carrier. Each time we need a new suitcase we create a new instance with a carrier. But a suitcase can be carried by more than one carrier. A carrier who carries no suitcase is a <code><a cbot|null>null</a></code> reference.
pl: CBOT używa odwołań do <a cbot|class>klas</a> i <a cbot|array>tablic</a>. Każda zmienna w rzeczywistości zawiera odwołanie do instancji. Instancja natomiast zawiera pola klasy. Wiele wskaźników może odwoływać się do tej samej instancji. Wskaźnik <code><a cbot|null>null</a></code> nie odwołuje się do niczego. Instancję można porównać do teczki, a wskaźnik do trzymającego. Za każdym razem gdy potrzebujemy nowej teczki, tworzymy nową instancję z trzymającym. Ale teczka może być trzymana przez więcej niż jedną osobę. Osoba nie trzymająca żadnej teczki to wskaźnik na <code><a cbot|null>null</a></code>.

note: type: Plain text
en: Example:
    <c/><s/>{
pl: Przykład:
    <c/><s/>{

note: type: Source code
en: 	MyClass item1(); // create a new instance
    	                 // referenced by item1
    	MyClass item2;   // create a null reference
    	item2 = item1;   // copy the reference,
    	                 // item2 and item1 now reference
    	                 // the same instance
    	item1.a = 12;    // modifies the instance
    	                 // referenced by item1 (and item2)
    	message(item2.a);// displays 12
    }
pl: 	MojaKlasa item1();// utwórz nową instancję
    	                  // wskazywaną przez item1
    	MojaKlasa item2;  // utwórz wskaźnik null
    	item2 = item1;    // skopiuj wskaźnik,
    	                  // item2 i item1 wskazują
    	                  // teraz tę samą instancję
    	item1.a = 12;     // zmodyfikuj instancję 
    	                  // wskazywaną przez item1 (i item2)
    	message(item2.a); // wyświetla liczbę 12
    }

note: type: Plain text
en: If you pass a <a cbot|class>class</a> instance as parameter to a function, the function only receives a reference to the instance. That means if you modify the instance in the function, the instance that has been specified by the caller will be actuallay modified.
pl: W przypadku przekazania instancji <a cbot|class>klasy</a> jako parametru funkcji, funkcja otrzymuje wskaźnik do tej instancji. Oznacza to, że w przypadku modyfikacji instancji wewnątrz funkcji, zostanie zmodyfikowana instancja podana przy wywołaniu funkcji jako parametr.

note: type: Plain text
en: <c/><s/>void Test( MyClass item )
pl: <c/><s/>void Test( MojaKlasa item )

note: type: Source code
en: {
    	item.a = 12;          // modify the original instance
    	item = new MyClass(); // new local instance
    	item.a = 33;          // modifie the local instance
    }
pl: {
    	item.a = 12;            // zmodyfikuj oryginalną instancję
    	item = new MojaKlasa(); // nowa instancja lokalna
    	item.a = 33;            // zmodyfikuj instancję lokalną
    }

note: type: Plain text
en: Calling the fucntion <code>Test()</code>:
    <c/><s/>{
pl: Wywołanie funkcji <code>Test()</code>:
    <c/><s/>{

note: type: Source code
en: 	MyClass toto();
    	Test(toto);
    	message(toto.a);  // displays 12
    }
pl: 	MojaKlasa toto();
    	Test(toto);
    	message(toto.a);  // wyświetla 12
    }

note: type: Plain text
en: The instance containing the field <code>a = 33</code> is referenced only by the newly created instance <code>item</code> inside the fucntion <code>Test</code>. At the end of <code>Test</code> this newly created instance referenced by <code>item</code> is automatically deleted.
pl: Instancja zawierająca pole <code>a = 33</code> jest wskazywana tylko przez nowoutworzoną instancję <code>item</code> wewnątrz funkcji <code>Test</code>. Na końcu funkcji <code>Test</code> ta instancja wskazywana przez <code>item</code> jest automatycznie usuwana.

note: type: Plain text
en: A function can return an instance:
    <c/><s/>MyClass Test2( )
pl: Funkcja może zwrócić instancję:
    <c/><s/>MojaKlasa Test2( )

note: type: Source code
en: {
    	MyClass item = new MyClass();
    	item.a = 33;
    	return item;
    }
pl: {
    	MojaKlasa item = new MojaKlasa();
    	item.a = 33;
    	return item;
    }

note: type: Plain text
en: Call the function like this:
    <c/><s/>{
pl: W taki sposób należy wywoływać funkcję:
    <c/><s/>{

note: type: Source code
en: 	MyClass toto;
    	toto = Test2(); // toto will contain a reference to
    	                // the instance created by Test2()
    	message(toto.a); // displays 33
    }
pl: 	MojaKlasa toto;
    	toto = Test2(); // toto będzie zawierać wskaźnik do
    	                // instancji utworzonej przez Test2()
    	message(toto.a); // wyświetla 33
    }

note: type: Plain text
en: <code><a cbot|class>class</a></code>, <code><a cbot|new>new</a></code>
    <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <code><a cbot|class>class</a></code>, <code><a cbot|new>new</a></code>
    <a cbot>Programowanie</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: \b; header
en: Instruction <code>private</code> (for specialists)
pl: Instrukcja <code>private</code> (dla specjalistów)

note: type: Source code
en: public class MyClass
    {
    	int    b;                // public by default
    	public int a;            // also public 
    	private point position;  // private
    }
    void Test()
    {
    	MyClass item;
    	item.a = item.b = 12;      // ok
    	message( item.position );  // this is an error
    }
pl: public class MojaKlasa
    {
    	int    b;                // publiczna domyślnie
    	public int a;            // również publiczna 
    	private point position;  // prywatna
    }
    void Test()
    {
    	MojaKlasa item;
    	item.a = item.b = 12;      // ok
    	message( item.position );  // powoduje błąd
    }

note: type: \b; header
en: Instruction <code>public</code> (for specialists)
pl: Instrukcja <code>public</code> (dla specjalistów)

note: type: Plain text
en: This instruction has two distinct purposes:
pl: Instrukcja ta ma dwa podstawowe zadania:

note: type: Bullet: '1)'
en: Make a function available to other bots.
pl: Czyni funkcję dostępną dla innych robotów.

note: type: Bullet: '2)'
en: Make a class member accessible from outside the class definition.
pl: Sprawia, że element klasy jest widoczny poza definicją klasy.

note: type: \b; header
en: Instruction <code>public</code> for functions
pl: Instrukcja <code>public</code> dla funkcji

note: type: Plain text
en: If you put <code>public</code> before a <a cbot|function>function</a> definition, you can make the function available to programs in other bots in the same mission.
pl: Umieszczenie instrukcji <code>public</code> przed definicją <a cbot|function>funkcji</a> sprawi, że funkcja będzie dostępna dla innych robotów podczas tej misji.

note: type: Plain text
en: For example in the first bot we would have:
pl: Na przykład pierwszy robot może zawierać:

note: type: Source code
en: public void object::Segment(float dist, float angle)
    {
    	move(dist);
    	turn(angle);
    }
pl: public void object::Segment(float odl, float kąt)
    {
    	move(odl);
    	turn(kąt);
    }

note: type: Plain text
en: And in another bot we would have:
pl: A inny:

note: type: Source code
en: extern void object::Square( )
    {
    	for ( int i=0 ; i<4 ; i++ )
    	{
    		Segment(10, 90);
    		fire(1);
    	}
    }
pl: extern void object::Kwadrat( )
    {
    	for ( int i=0 ; i<4 ; i++ )
    	{
    		Segment(10, 90);
    		fire(1);
    	}
    }

note: type: Plain text
en: If you have declared a function <code>public</code>, you cannot define a function with the same name and arguments in another bot of the same mission.
pl: Jeśli funkcję zadeklarowano jako <code>public</code>, nie można zadeklarować funkcji o tej samej nazwie i parametrach w innym robocie podczas tej samej misji.

note: type: Plain text
en: If a bot containing a <code>public</code> function is destroyed, the other bots that make use of this function will be stopped with an error.
pl: Jeśli robot zawierający funkcję zadeklarowaną jako <code>public</code> zostanie zniszczony, inne roboty używające tej funkcji zatrzymają się sygnalizując wystąpienie błędu.

note: type: \b; header
en: Instruction <code>public</code> for classes
pl: Instrukcja <code>public</code> dla klas

note: type: Source code
en: public class MyClass
    {
    	int    b;                // public by default
    	public int a;            // also public 
    	private point position;  // privat
    }
    void Test()
    {
    	MyClass item;
    	item.a = item.b = 12;      // ok
    	message( item.position );  // this is an error
    }
pl: public class MojaKlasa
    {
    	int    b;                // publiczna domyślnie
    	public int a;            // również publiczna 
    	private point position;  // prywatna
    }
    void Test()
    {
    	MojaKlasa item;
    	item.a = item.b = 12;      // ok
    	message( item.position );  // powoduje błąd
    }

note: type: \b; header
en: Instruction <code>radar</code>
pl: Instrukcja <code>radar</code>

note: type: Plain text
en: Write in brackets the <a cbot|category>name of the object</a> that you look for. Put the result in a variable of the <a cbot|type>type</a> <code>object</code>. Here is an example that looks for the closest ant:
pl: W nawiasach należy napisać <a cbot|category>nazwę poszukiwanego obiektu</a>. Wynik należy umieścić w zmiennej <a cbot|type>typu</a> <code>object</code>. Oto przykład znajdujący najbliższą mrówkę:

note: type: Source code
en: // At the beginning of the program:
    object  item; // variable declaration
    
    // Look for the closest ant
    item = radar(AlienAnt);
pl: // Na początku programu:
    object  item; // deklaracja zmiennej
    
    // Znajdź najbliższą mrówkę
    item = radar(AlienAnt);

note: type: Plain text
en: Detects an object according to several parameters.
pl: Wykrywa obiekty w zależnie od różnych parametrów.

note: type: Plain text
en: Seen from above, the purple zone corresponds to the zone where objects will be detected.
pl: Patrząc z góry, czerwona strefa odpowiada strefie, w której będą wykrywane obiekty.

note: type: \t; header
en: category: <code><a cbot|int>int</a></code>
pl: kategoria: <code><a cbot|int>int</a></code>

note: type: Plain text
en: Direction that the radar is facing, in degrees. 
    <code>  0</code> -> radar is facing straight ahead
    <code>-90</code> -> radar is facing a quarter turn right
    <code> 90</code> -> radar is facing a quarter turn left
pl: Kierunek, w którym "patrzy" radar, w stopniach: 
    <code>  0</code> -> na wprost 
    <code>-90</code> -> ćwierć obrotu w prawo
    <code> 90</code> -> ćwierć obrotu w lewo

note: type: Plain text
en: Opening angle of the radar, in degrees.
pl: Kąt widzenia radaru, w stopniach.

note: type: Plain text
en: Minimum detection distance, in meters. Objects that are closer than the minimum distance will not be detected.
pl: Minimalna odległość wykrywania, w metrach. Obiekty znajdujące się bliżej nie będą wykryte.

note: type: Plain text
en: Maximum detection distance, in meters. Objects that are farther away than the maximum distance will not be detected.
pl: Maksymalna odległość wykrywania, w metrach. Obiekty znajdujące się dalej nie będą wykryte.

note: type: Plain text
en: Determines which way the objects are detected. With value <code>1</code>, returns the closest object found in the specified zone. With value <code>-1</code>, the farthest object in the zone will be returned.
pl: Określa sposób wykrywania obiektu. Przy wartości <code>1</code>, znajduje najbliższy obiekt w podanej strefie. Przy wartości<code>-1</code>, znajduje najdalszy obiekt w strefie.

note: type: \t; header
en: Return value: <code><a cbot|object>object</a></code>
pl: Typ wyniku: <code><a cbot|object>object</a></code>

note: type: Plain text
en: Returns the first object found that corresponds to the specified category in the specified zone. If no object was found, returns the value <code><a cbot|null>null</a></code>.
pl: Zwraca pierwszy znaleziony obiekt odpowiadający podanej kategorii w podanej strefie. Jeśli nie znaleziono obiektu, zwracana jest wartość <code><a cbot|null>null</a></code>.

note: type: \t; header
en: Remark
pl: Uwaga

note: type: Plain text
en: You do not have to give all the parameters. Here are two examples of instructions that are equivalent:
pl: Nie jest konieczne podawanie wszystkich parametrów. Oto dwa przykłady równoważnych instrukcji:

note: type: Source code
en: 	radar(Titanium, 0, 360, 0, 1000);
    	radar(Titanium);  // equivalent
pl: 	radar(Titanium, 0, 360, 0, 1000);
    	radar(Titanium);  // równoważne

note: type: Source code
en: 	radar(Titanium, 0, 90, 0, 1000);
    	radar(Titanium, 0, 90);  // equivalent
pl: 	radar(Titanium, 0, 90, 0, 1000);
    	radar(Titanium, 0, 90);  // równoważne

note: type: Plain text
en: When one or more parameters are not specified, the default values indicated above are used instead; only the first parameter is compulsory.
    Generally, only the first parameter is specified: f. ex. <code>radar (AlienAnt)</code> detects the closest ant, wherever it may be.
pl: Jeśli pominięto jeden lub więcej parametrów, przyjmowane są wymienione powyżej wartości domyślne; tylko pierwszy parametr jest obowiązkowy.
    Zwykle określony jest tylko pierwszy parametr, np. <code>radar (AlienAnt)</code> wykrywa najbliższą mrówkę, niezależnie od jej położenia.

note: type: \b; header
en: Instruction <code>readln</code>
pl: Instrukcja <code>readln</code>

note: type: Plain text
en: Read one line from an open file in the files/ folder. This is a method of the <code><a cbot|file>file</a></code> class. This is the reason why we always write <code>handle.readln()</code>:
pl: Wczytuje jedną linię z otwartego pliku w folderze files/. Jest to metoda klasy <code><a cbot|file>file</a></code>, dlatego też zawsze należy używać konstrukcji <code>handle.readln()</code>:

note: type: Plain text
en: The file must have been opened for reading (<code>"r"</code>) with the <code><a cbot|open>open</a></code> instruction. <code>readln</code> returns the string containing the whole line but without the end of line characters 0x0D (CR) and 0x0A (LF).
pl: Plik musi być otwarty do odczytu (<code>"r"</code>) przy użyciu instrukcji <code><a cbot|open>open</a></code>. Metoda <code>readln</code> zwraca cały wiersz ale bez znaków końca linii 0x0D (CR) i 0x0A (LF)

note: type: Plain text
en: <code><a cbot|file>file</a></code>, <code><a cbot|open>open</a></code>, <code><a cbot|close>close</a></code>, <code><a cbot|writeln>writeln</a></code> and <code><a cbot|eof>eof</a></code>.
    <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <code><a cbot|file>file</a></code>, <code><a cbot|open>open</a></code>, <code><a cbot|close>close</a></code>, <code><a cbot|writeln>writeln</a></code> i <code><a cbot|eof>eof</a></code>.
    <a cbot>Programowanie</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: \b; header
en: Instruction <code>receive</code>
pl: Instrukcja <code>receive</code>

note: type: Source code
en: <c/>receive ( name, power );<n/>
pl: <c/>receive ( nazwa, moc );<n/>

note: type: Plain text
en: Retrieves an information from the closest <a object|exchange>information exchange post</a>.
pl: Pobiera informację z najbliższej <a object|exchange>stacji przekaźnikowej informacji</a>.

note: type: Plain text
en: Name of the information required from the exchange post. This name is a string: it must be written in quotation marks "".
pl: Nazwa informacji żądanej od stacji przekaźnikowej. Jest ona łańcuchem i powinna być zapisana w cudzysłowach "".

note: type: Plain text
en: Power of the receiver, which corresponds to maximal distance between the receiver and the exchange post. If the distance is longer, no information is received. Default value is 10 metres.
pl: Moc odbiornika, która odpowiada maksymalnej odległości pomiędzy odbiorcą i stacją przekaźnikową. Jeśli odległość jest większa, nie zostanie pobrana żadna informacja. Domyślną wartością jest 10 metrów.

note: type: Plain text
en: Value of the retrieved information. If no exchange post is close enough, or if the name of the requested information does not exist in the exchange post, the value <code>nan</code> is returned.
pl: Wartość pobranej informacji. Jeśli wystarczająco blisko nie ma żadnej stacji przekaźnikowej, lub jeśli informacja o podanej nazwie nie istnieje, zwracana jest wartość <code>nan</code>.

note: type: Plain text
en: <code><a cbot|send>send</a></code>, <code><a cbot|testinfo>testinfo</a></code> and <code><a cbot|delinfo>deleteinfo</a></code>.
    <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <code><a cbot|send>send</a></code>, <code><a cbot|testinfo>testinfo</a></code> i <code><a cbot|delinfo>deleteinfo</a></code>.
    <a cbot>Programowanie</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: \b; header
en: Instruction <code>recycle</code>
pl: Instrukcja <code>recycle</code>

note: type: Plain text
en: Recycles the derelict bot in front of the <a object|botrecy>recycler</a> into a <a object|titan>titanium cube</a>.
pl: Odzyskuje surowce z pozostałości robota znajdującego się bezpośrednio przed robotem <a object|botrecy>recyklerem</a> i tworzy <a object|titan>kostkę tytanu</a>.

note: type: Plain text
en: Zero if OK, or a value different from zero if an error occurred.
    <code>== 0 </code>the derelict bot has been recycled
    <code>!= 0 </code>error, no derelict bot could be recycled
pl: Zero jeśli wszystko w porządku, lub wartość inna od zera w przypadku wystąpienia błędu.
    <code>== 0 </code>odzyskano surowce z pozostałości robota
    <code>!= 0 </code>błąd, pozostałość robota nie mogła zostać przetworzona

note: type: \b; header
en: Instruction <code>retobject</code>
pl: Instrukcja <code>retobject</code>

note: type: Source code
en: <c/>retobject ( number );<n/>
pl: <c/>retobject ( numer );<n/>

note: type: Plain text
en: Returns the object corresponding to the given number.
pl: Zwraca obiekt odpowiadający podanemu numerowi.

note: type: \t; header
en: number: <code><a cbot|int>int</a></code>
pl: numer: <code><a cbot|int>int</a></code>

note: type: Plain text
en: Number of the object, between 0 and n. "n" represents the total number of objects in the scene.
pl: Numer obiektu, pomiędzy 0 i n, gdzie "n" to liczba wszystkich obiektów na planecie.

note: type: Plain text
en: Object corresponding to the number. The return value <code><a cbot|null>null</a></code> means that no object corresponds to this number, because the number was too high, and there are not so many objects in the scene.
pl: Obiekt odpowiadający numerowi. Wartość <code><a cbot|null>null</a></code> oznacza, że nie ma obiektu odpowiadającego podanemu numerowi, gdyż nie ma aż tylu obiektów na tej planecie.

note: type: \b; header
en: Instruction <code>return</code>
pl: Instrukcja <code>return</code>

note: type: Plain text
en: Returns from a function. Syntax:
pl: Powrót z funkcji. Składnia:

note: type: Source code
en: void function ( )
    {
    	return;
    }
pl: void funkcja ( )
    {
    	return;
    }

note: type: Plain text
en: If the <a cbot|function>function</a> has a return type, the <code>return</code> instruction must be followed by the value to be returned:
pl: Jeśli <a cbot|function>funkcja</a> ma określony typ wyniku, po instrukcji <code>return</code> musi wystąpić wartość, która ma być zwrócona przez funkcję:

note: type: Source code
en: float Mean (float a, float b)
    {
    	return (a+b)/2;
    }
pl: float Średnia (float a, float b)
    {
    	return (a+b)/2;
    }

note: type: Source code
en: string Sign (float a)
    {
    	if ( a > 0 )  return "positive";
    	if ( a < 0 )  return "negative";
    	return "null";
    }
pl: string Znak (float a)
    {
    	if ( a > 0 )  return "dodatnia";
    	if ( a < 0 )  return "ujemna";
    	return "zero";
    }

note: type: \b; header
en: Instruction <code>search</code>
pl: Instrukcja <code>search</code>

note: type: Source code
en: <c/>search ( category, position );<n/>
pl: <c/>search ( kategoria, pozycja );<n/>

note: type: \t; header
en: position: <code><a cbot|point>point</a></code>
pl: pozycja: <code><a cbot|point>point</a></code>

note: type: Plain text
en: <code>search</code> returns the object of the given category that is closest to the position indicated here.
pl: Funkcja <code>search</code> zwraca obiekt o podanej kategorii znajdujący się najbliżej określonej tutaj pozycji.

note: type: Plain text
en: Characteristics of the object that has been found. The value <code><a cbot|null>null</a></code> means that no object of this category has been found.
pl: Charakterystyka znalezionego obiektu. Wartość <code><a cbot|null>null</a></code> oznacza, że nie znaleziono obiektu o podanej kategorii.

note: type: \b; header
en: Instruction <code>send</code>
pl: Instrukcja <code>send</code>

note: type: Source code
en: <c/>send ( name, value, power );<n/>
pl: <c/>send ( nazwa, wartość, moc );<n/>

note: type: Plain text
en: Sends an information to the closest <a object|exchange>information exchange post</a>.
pl: Wysyła informację do najbliższej <a object|exchange>stacji przekaźnikowej</a>.

note: type: Plain text
en: Name of the information to be sent to the exchange post. This name is a string: it must be written in quotation marks "".
    If there is any information having this name, a new entry is created, as far as the total number of entries does not exceed 10. If there is already an information having this name, value is simply replaced by the new.
pl: Nazwa informacji wysyłanej do stacji przekaźnikowej. Jest to łańcuch, który powinien być zapisany w cudzysłowach "".
    Jeśli nie ma informacji o podanej nazwie, tworzony jest nowy wpis, o ile ich liczba nie przekroczy 10. Jeśli istnieje już informacja o podanej nazwie, zastępowana jest ona nową wartością.

note: type: \t; header
en: value: <code>float</code>
pl: wartość: <code>float</code>

note: type: Plain text
en: Value of the information to be sent.
pl: Wartość informacji do wysłania.

note: type: Plain text
en: Power of the transmitter, which corresponds to the maximal distance to where information can be the sent. Default value is 10 metres.
pl: Moc transmitera, odpowiadająca maksymalnej odległości gdzie ma być przesłana informacja. Domyślna wartość to 10 metrów.

note: type: Plain text
en: <code><a cbot|receive>receive</a></code>, <code><a cbot|testinfo>testinfo</a></code> and <code><a cbot|delinfo>deleteinfo</a></code>.
    <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <code><a cbot|receive>receive</a></code>, <code><a cbot|testinfo>testinfo</a></code> i <code><a cbot|delinfo>deleteinfo</a></code>.
    <a cbot>Programowanie</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: \b; header
en: Instruction <code>shield</code>
pl: Instrukcja <code>shield</code>

note: type: Source code
en: <c/>shield ( oper, radius );<n/>
pl: <c/>shield ( oper, promień );<n/>

note: type: Plain text
en: Activates or deactivates the shield of the <a object|botshld>shielder</a>. You can of course move the shielder when the shield is active. It protects all objects that are inside the shielded sphere from enemy fire. The radius of the sphere can range between 10 and 25 meters.
pl: Aktywuje lub dezaktywuje osłonę robota <a object|botshld>osłaniacza</a>. Oczywiście można poruszać robotem przy aktywnej osłonie. Zabezpiecza ona wszystkie obiekty znajdujące się wewnątrz strefy przed atakami wroga. Promień sfery może się zawierać pomiędzy 10 a 25 metrami.

note: type: Plain text
en: <code>1</code> activates the shield.
    <code>0</code> deactivates the shield
    A normal <a object|power>power cell</a> fully charged can maintain the shield active during 20 seconds. When the cell is empty, the shield deactivates.
pl: <code>1</code> aktywuje osłonę.
    <code>0</code> dezaktywuje osłonę
    Zwykłe, w pełni naładowane <a object|power>ogniwo elektryczne</a> wystarcza na 20 sekund aktywności osłony. Gdy ogniwo się wyczerpie, osłona jest wyłączana.

note: type: \t; header
en: radius: <code><a cbot|float>float</a></code>
pl: promień: <code><a cbot|float>float</a></code>

note: type: Plain text
en: Radius of the shield, ranging between 10 and 25 meters.
pl: Promień sfery ochronnej, pomiędzy 10 a 25 metrów.

note: type: \b; header
en: Instruction <code>sizeof</code>
pl: Instrukcja <code>sizeof</code>

note: type: Plain text
en: The sizeof function lets you know the number of elements contained in an <a cbot|array>array</a>.
    That is the index of the last element plus one ("empty" elements are counted).
pl: Funkcja sizeof pozwala poznać ilość elementów zawartych w <a cbot|array>tablicy</a>.
    Jest to indeks ostatniego elementu plus jeden (liczone są również "puste" elementy).

note: type: Source code
en: {
    	int a[12];
    	a[5] = 345;
    	message( sizeof(a) );  // will display 6
    }
pl: {
    	int a[12];
    	a[5] = 345;
    	message( sizeof(a) );  // wyświetli liczbę 6
    }

note: type: Plain text
en: In this example we have 6 elements in the array after <code>a[5]=345</code>. The non initialized elements <code>[0]</code>, <code>[1]</code>, <code>[2]</code>, <code>[3]</code> and <code>[4]</code> will be counted.
pl: W tym przykładzie po operacji <code>a[5]=345</code> tablica ma 6 elementów. Liczone są również następujące niezainicjalizowane elementy: <code>[0]</code>, <code>[1]</code>, <code>[2]</code>, <code>[3]</code> i <code>[4]</code>.

note: type: Plain text
en: With multidimensionnal arrays you can get the size of a sub array:
pl: W przypadku tablicy wielowymiarowej można otrzymać rozmiar podtablicy:

note: type: Source code
en: float xy[][];  // 2 dimensionnal array
    xy[5][10] = 67;
    message( sizeof(xy)    );  // will display 6
    message( sizeof(xy[5]) );  // will display 11
pl: float xy[][];  // tablica dwuwymiarowa
    xy[5][10] = 67;
    message( sizeof(xy)    );  // wyświetli liczbę 6
    message( sizeof(xy[5]) );  // wyświetli liczbę 11

note: type: \b; header
en: Instruction <code>sniff</code>
pl: Instrukcja <code>sniff</code>

note: type: Plain text
en: Sounds the underground in front of the <a object|botsr>sniffer</a>. According to what raw materials were detected, the following objects will be created:
pl: Analizuje grunt przed robotem <a object|botsr>szperaczem</a>. W zależności od wykrytego surowca, pojawia się następujący znacznik:

note: type: Plain text
en: <code>TitaniumSpot</code>  ->  <a object|stonspot>Red cross</a>
    <code>UraniumSpot </code>  ->  <a object|uranspot>Yellow circle</a>
    <code>PowerSpot   </code>  ->  <a object|enerspot>Green cross</a>
pl: <code>Złoże tytanu</code>  ->  <a object|stonspot>Czerwony plus</a>
    <code>Złoże uranu </code>  ->  <a object|uranspot>Żółte kółko</a>
    <code>Źródło energii  </code>  ->  <a object|enerspot>Zielony plus</a>

note: type: Plain text
en: Zero if everything is OK, or a value different from zero if an error occurred. 
    <code>== 0 </code>sounding performed
    <code>!= 0 </code>sounding impossible
pl: Zero jeśli wszystko jest w porządku, lub wartość inna od zera w przypadku wystąpienia błędu. 
    <code>== 0 </code>analiza wykonana
    <code>!= 0 </code>analiza niemożliwa

note: type: \b; header
en: Instruction <code>space</code>
pl: Instrukcja <code>space</code>

note: type: Source code
en: <c/>space ( center, rmin, rmax, dist );<n/>
pl: <c/>space ( środek, rmin, rmaks, odl );<n/>

note: type: Plain text
en: Determines the position of the nearest free space around a given position.
pl: Określa pozycję najbliższego wolnego miejsca w pobliżu podanej pozycji.

note: type: \t; header
en: center: <code><a cbot|point>point</a></code> (default: bot position)
pl: środek: <code><a cbot|point>point</a></code> (domyślnie: pozycja robota)

note: type: Plain text
en: Desired position of the free space.
pl: Preferowana pozycja wolnego miejsca.

note: type: \t; header
en: rmin: <code><a cbot|float>float</a></code> (default value: <code>8</code>)
pl: rmin: <code><a cbot|float>float</a></code> (domyślna wartość: <code>8</code>)

note: type: Plain text
en: Minimum distance from the desired position.
pl: Minimalna odległość od żądanej pozycji.

note: type: \t; header
en: rmax: <code><a cbot|float>float</a></code> (default value: <code>50</code>)
pl: rmaks: <code><a cbot|float>float</a></code> (domyślna wartość: <code>50</code>)

note: type: Plain text
en: Maximum distance from the desired position.
pl: Maksymalna odległość od żądanej pozycji.

note: type: \t; header
en: dist: <code><a cbot|float>float</a></code> (default value: <code>4</code>)
pl: odl: <code><a cbot|float>float</a></code> (domyślna wartość: <code>4</code>)

note: type: Plain text
en: Required distance between two free spaces.
pl: Wymagana odległość między dwoma wolnymi miejscami.

note: type: \t; header
en: Return: <code><a cbot|point>point</a></code>
pl: Wynik: <code><a cbot|point>point</a></code>

note: type: Plain text
en: Position of the free space.
pl: Pozycja wolnego miejsca.

note: type: \b; header
en: Instruction <code>static</code> (for specialists)
pl: Instrukcja <code>static</code> (dla specjalistów)

note: type: Plain text
en: <a cbot|class>Class</a> members declared with <code>static</code> are shared between all instances of the class.
pl: Elementy <a cbot|class>klasy</a> zadeklarowane jako <code>static</code> są współdzielone przez wszystkie instancje klasy.

note: type: Source code
en: public class MyClass
    {
    	static int nb = 1;
    	static string [ ] list = null;
    }
    void Test ()
    {
    	MyClasse item1();
    	MyClasse item2();
    	item1.nb = 3;
    	item1.list[item1.nb] = "Hello";
    	message( item2.list[item2.nb] ); // display "Hello"
    }
pl: public class MojaKlasa
    {
    	static int nb = 1;
    	static string [ ] list = null;
    }
    void Test ()
    {
    	MojaKlasa item1();
    	MojaKlasa item2();
    	item1.nb = 3;
    	item1.list[item1.nb] = "Cześć";
    	message( item2.list[item2.nb] ); // wyświetla komunikat "Cześć"
    }

note: type: Plain text
en: <code>Static</code> members can be declared <code><a cbot|private>private</a></code> so they will be only acessible from within class members (including constructors and destructors).
pl: Elementy <code>static</code> mogą być zadeklarowane jako <code><a cbot|private>private</a></code>, co spowoduje, że będą dostępne tylko dla elementów klasy (włączając konstruktory i destruktory).

note: type: Plain text
en: <code><a cbot|class>class</a></code>, <code><a cbot|synchro>synchronized</a></code>
    <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <code><a cbot|class>class</a></code>, <code><a cbot|synchro>synchronized</a></code>
    <a cbot>Programowanie</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: \b; header
en: Instruction <code>strfind</code>
pl: Instrukcja <code>strfind</code>

note: type: Plain text
en: Find a substring in a string and returns the position of the first substring found or <a cbot|nan>nan</a> if the substring has not been found.
pl: Znajduje podciąg w łańcuchu i zwraca pozycję pierwszego znalezionego podciągu lub wartość <a cbot|nan>nan</a> jeśli podciągu nie znaleziono.

note: type: Source code
en: <c/>strfind ( string, sub );<n/>
pl: <c/>strfind ( łańcuch, sub );<n/>

note: type: \t; header
en: string: <code><a cbot|string>string</a></code>
pl: łańcuch: <code><a cbot|string>string</a></code>

note: type: Plain text
en: String we are searching in.
pl: Przeszukiwany łańcuch.

note: type: Plain text
en: Substring we are searching for.
pl: Podciąg, który ma zostać znaleziony.

note: type: Plain text
en: Examples:
pl: Przykłady:

note: type: Source code
en: <c/>	int pos = strfind("abcdef", "ab"); // pos will be 0
    	int pos = strfind("abcdef", "de"); // pos will be 3
    	int pos = strfind("abcdef", "xy"); // pos will be <a cbot|nan>nan</a>
pl: <c/>	int pos = strfind("abcdef", "ab"); // pos równe 0
    	int pos = strfind("abcdef", "de"); // pos równe 3
    	int pos = strfind("abcdef", "xy"); // pos równe <a cbot|nan>nan</a>

note: type: Plain text
en: <code><a cbot|strlen>strlen</a></code>, <code><a cbot|strleft>strleft</a></code>, <code><a cbot|strright>strright</a></code>, <code><a cbot|strmid>strmid</a></code>, <code><a cbot|strval>strval</a></code>, <code><a cbot|strupper>strupper</a></code>, <code><a cbot|strlower>strlower</a></code>
    <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <code><a cbot|strlen>strlen</a></code>, <code><a cbot|strleft>strleft</a></code>, <code><a cbot|strright>strright</a></code>, <code><a cbot|strmid>strmid</a></code>, <code><a cbot|strval>strval</a></code>, <code><a cbot|strupper>strupper</a></code>, <code><a cbot|strlower>strlower</a></code>
    <a cbot>Programowanie</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: \b; header
en: Type <code>string</code>
pl: Typ <code>string</code>

note: type: Plain text
en: Use a variable of this type for storing characters or strings.
pl: Zmiennej tego typu można używać do przechowywania znaków lub ciągów znaków.

note: type: Plain text
en: For example:
pl: Na przykład:

note: type: Source code
en: <c/>	"Hello!"
    	"This is a string"
    	"x"
    	""  // empty string
pl: <c/>	"Cześć!"
    	"To jest łańcuch"
    	"x"
    	""  // pusty łańcuch

note: type: Plain text
en: You can append two strings with the <code>+</code> operator :
pl: Dwa łańcuchy można złączać, używając operatora <code>+</code>:

note: type: Source code
en: <c/>	"Good morning," + " " + "Sir"
pl: <c/>	"Dzień dobry" + " " + "Panu"

note: type: Plain text
en: Returns the string:
pl: Daje w wyniku łańcuch:

note: type: Source code
en: <c/>	"Good morning, Sir"
pl: <c/>	"Dzień dobry Panu"

note: type: Plain text
en: If you want to put a quotation mark (") or a backslash (\) in a string you must write:
pl: Aby użyć cudzysłowu (") lub odwróconej kreski ułamkowej (\) w łańcuchu, należy napisać:

note: type: Source code
en: <c/>"This is \"very\" important"
pl: <c/>"To jest \"bardzo\" ważne"

note: type: Plain text
en: <n/>which will result in the string <c/> This is "very" important.
pl: <n/>czego wynikiem będzie <c/> To jest "bardzo" ważne.

note: type: Plain text
en: <n/>will result in <c/>%user%\ant.txt
pl: <n/>czego wynikiem będzie <c/>%user%\ant.txt

note: type: Plain text
en: Following instructions can be used with strings:
    <code><a cbot|strlen>strlen</a>     </code>Get string length
    <code><a cbot|strleft>strleft</a>    </code>Extract left part
    <code><a cbot|strright>strright</a>   </code>Extract right part
    <code><a cbot|strmid>strmid</a>     </code>Extract center part
    <code><a cbot|strfind>strfind</a>    </code>Find a substring.
    <code><a cbot|strval>strval</a>     </code>Convert string to number
    <code><a cbot|strupper>strupper</a>   </code>Convert to upper case
    <code><a cbot|strlower>strlower</a>   </code>Convert to lower case
pl: Następujące instrukcje mogą być używane na łańcuchach:
    <code><a cbot|strlen>strlen</a>     </code>Podaje długość łańcucha
    <code><a cbot|strleft>strleft</a>    </code>Wyodrębnia lewą część
    <code><a cbot|strright>strright</a>   </code>Wyodrębnia prawą część
    <code><a cbot|strmid>strmid</a>     </code>Wyodrębnia środkową część
    <code><a cbot|strfind>strfind</a>    </code>Znajduje podłańcuch
    <code><a cbot|strval>strval</a>     </code>Zamienia łańcuch na liczbę
    <code><a cbot|strupper>strupper</a>   </code>Zamienia litery na wielkie
    <code><a cbot|strlower>strlower</a>   </code>Zamienia litery na małe

note: type: \b; header
en: Instruction <code>strleft</code>
pl: Instrukcja <code>strleft</code>

note: type: Plain text
en: Extracts the first (that is, leftmost) characters from a string.
pl: Wyodrębnia początkowe (najbardziej na lewo) znaki z łańcucha.

note: type: Source code
en: <c/>strleft ( string, len );<n/>
pl: <c/>strleft ( łańcuch, długość );<n/>

note: type: \t; header
en: len: <code><a cbot|int>int</a></code>
pl: długość: <code><a cbot|int>int</a></code>

note: type: Plain text
en: Number of characters to be extracted.
pl: Liczba znaków do wyodrębnienia.

note: type: Source code
en: <c/>	string s = strleft("abcdef", 2);  // s is "ab"
    	string s = strleft("abc", 10);  // s is "abc"
pl: <c/>	string s = strleft("abcdef", 2);  // s równe "ab"
    	string s = strleft("abc", 10);  // s równe "abc"

note: type: Plain text
en: <code><a cbot|strlen>strlen</a></code>, <code><a cbot|strright>strright</a></code>, <code><a cbot|strmid>strmid</a></code>, <code><a cbot|strfind>strfind</a></code>, <code><a cbot|strval>strval</a></code>, <code><a cbot|strupper>strupper</a></code>, <code><a cbot|strlower>strlower</a></code>
    <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <code><a cbot|strlen>strlen</a></code>, <code><a cbot|strright>strright</a></code>, <code><a cbot|strmid>strmid</a></code>, <code><a cbot|strfind>strfind</a></code>, <code><a cbot|strval>strval</a></code>, <code><a cbot|strupper>strupper</a></code>, <code><a cbot|strlower>strlower</a></code>
    <a cbot>Programowanie</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: \b; header
en: Instruction <code>strlen</code>
pl: Instrukcja <code>strlen</code>

note: type: Plain text
en: Get the length of a string.
pl: Podaje długość łańcucha.

note: type: Source code
en: <c/>strlen ( string );<n/>
pl: <c/>strlen ( łańcuch );<n/>

note: type: Source code
en: <c/>	int len = strlen("abc");  // len is 3
    	int len = strlen("");  // len is 0
    	if ( strlen(s) == 0 )  // is string empty ?
pl: <c/>	int len = strlen("abc");  // len równe 3
    	int len = strlen("");  // len równe 0
    	if ( strlen(s) == 0 )  // czy łańcuch pusty?

note: type: Plain text
en: <code><a cbot|strleft>strleft</a></code>, <code><a cbot|strright>strright</a></code>, <code><a cbot|strmid>strmid</a></code>, <code><a cbot|strfind>strfind</a></code>, <code><a cbot|strval>strval</a></code>, <code><a cbot|strupper>strupper</a></code>, <code><a cbot|strlower>strlower</a></code>
    <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <code><a cbot|strleft>strleft</a></code>, <code><a cbot|strright>strright</a></code>, <code><a cbot|strmid>strmid</a></code>, <code><a cbot|strfind>strfind</a></code>, <code><a cbot|strval>strval</a></code>, <code><a cbot|strupper>strupper</a></code>, <code><a cbot|strlower>strlower</a></code>
    <a cbot>Programowanie</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: \b; header
en: Instruction <code>strlower</code>
pl: Instrukcja <code>strlower</code>

note: type: Plain text
en: Convert all characters in a string to lowercase.
pl: Zamienia wszystkie znaki łańcucha na małe litery.

note: type: Source code
en: <c/>strlower ( string );<n/>
pl: <c/>strlower ( łańcuch );<n/>

note: type: Source code
en: <c/>	string s = strlower("Abc");  // s is "abc"
pl: <c/>	string s = strlower("Abc");  // s jest równe "abc"

note: type: Plain text
en: <code><a cbot|strlen>strlen</a></code>, <code><a cbot|strleft>strleft</a></code>, <code><a cbot|strright>strright</a></code>, <code><a cbot|strmid>strmid</a></code>, <code><a cbot|strfind>strfind</a></code>, <code><a cbot|strval>strval</a></code>, <code><a cbot|strupper>strupper</a></code>
    <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <code><a cbot|strlen>strlen</a></code>, <code><a cbot|strleft>strleft</a></code>, <code><a cbot|strright>strright</a></code>, <code><a cbot|strmid>strmid</a></code>, <code><a cbot|strfind>strfind</a></code>, <code><a cbot|strval>strval</a></code>, <code><a cbot|strupper>strupper</a></code>
    <a cbot>Programowanie</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: \b; header
en: Instruction <code>strmid</code>
pl: Instrukcja <code>strmid</code>

note: type: Plain text
en: Extracts a substring of a given length starting at a given position from a string.
pl: Wyodrębnia z łańcucha podłańcuch o określonej długości i określonej pozycji początkowej.

note: type: Source code
en: <c/>strmid ( string, pos, len );<n/>
pl: <c/>strmid ( łańcuch, pozycja, długość );<n/>

note: type: \t; header
en: pos: <code><a cbot|int>int</a></code>
pl: pozycja: <code><a cbot|int>int</a></code>

note: type: Plain text
en: The index of the first character that is to be included in the extracted substring.
pl: Indeks pierwszego znaku, który powinien wystąpić w wyodrębnionym podłańcuchu.

note: type: Source code
en: <c/>	string s = strmid("abcdef", 1, 2);  // s is "bc"
    	string s = strmid("abcdef", 4, 5);  // s is "ef"
    	string s = strmid("abcdef", 9, 2);  // s is ""
pl: <c/>	string s = strmid("abcdef", 1, 2);  // s równe "bc"
    	string s = strmid("abcdef", 4, 5);  // s równe "ef"
    	string s = strmid("abcdef", 9, 2);  // s równe ""

note: type: Plain text
en: <code><a cbot|strlen>strlen</a></code>, <code><a cbot|strleft>strleft</a></code>, <code><a cbot|strright>strright</a></code>, <code><a cbot|strfind>strfind</a></code>, <code><a cbot|strval>strval</a></code>, <code><a cbot|strupper>strupper</a></code>, <code><a cbot|strlower>strlower</a></code>
    <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <code><a cbot|strlen>strlen</a></code>, <code><a cbot|strleft>strleft</a></code>, <code><a cbot|strright>strright</a></code>, <code><a cbot|strfind>strfind</a></code>, <code><a cbot|strval>strval</a></code>, <code><a cbot|strupper>strupper</a></code>, <code><a cbot|strlower>strlower</a></code>
    <a cbot>Programowanie</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: \b; header
en: Instruction <code>strright</code>
pl: Instrukcja <code>strright</code>

note: type: Plain text
en: Extracts the last (that is, rightmost) characters from a string.
pl: Wyodrębnia końcowe (najbardziej na prawo) znaki z łańcucha.

note: type: Source code
en: <c/>strright ( string, len );<n/>
pl: <c/>strright ( łańcuch, długość );<n/>

note: type: Source code
en: <c/>	string s = strright("abcdef", 2);  // s is "ef"
    	string s = strright("abc", 10);  // s is "abc"
pl: <c/>	string s = strright("abcdef", 2);  // s równe "ef"
    	string s = strright("abc", 10);  // s równe "abc"

note: type: Plain text
en: <code><a cbot|strlen>strlen</a></code>, <code><a cbot|strleft>strleft</a></code>, <code><a cbot|strmid>strmid</a></code>, <code><a cbot|strfind>strfind</a></code>, <code><a cbot|strval>strval</a></code>, <code><a cbot|strupper>strupper</a></code>, <code><a cbot|strlower>strlower</a></code>
    <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <code><a cbot|strlen>strlen</a></code>, <code><a cbot|strleft>strleft</a></code>, <code><a cbot|strmid>strmid</a></code>, <code><a cbot|strfind>strfind</a></code>, <code><a cbot|strval>strval</a></code>, <code><a cbot|strupper>strupper</a></code>, <code><a cbot|strlower>strlower</a></code>
    <a cbot>Programowanie</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: \b; header
en: Instruction <code>strupper</code>
pl: Instrukcja <code>strupper</code>

note: type: Plain text
en: Convert all characters in a string to uppercase.
pl: Zamienia wszystkie znaki łańcucha na wielkie litery.

note: type: Source code
en: <c/>strupper ( string );<n/>
pl: <c/>strupper ( łańcuch );<n/>

note: type: Source code
en: <c/>	string s = strupper("Abc");  // s is "ABC"
pl: <c/>	string s = strupper("Abc");  // s jest równe "ABC"

note: type: Plain text
en: <code><a cbot|strlen>strlen</a></code>, <code><a cbot|strleft>strleft</a></code>, <code><a cbot|strright>strright</a></code>, <code><a cbot|strmid>strmid</a></code>, <code><a cbot|strfind>strfind</a></code>, <code><a cbot|strval>strval</a></code>, <code><a cbot|strlower>strlower</a></code>
    <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <code><a cbot|strlen>strlen</a></code>, <code><a cbot|strleft>strleft</a></code>, <code><a cbot|strright>strright</a></code>, <code><a cbot|strmid>strmid</a></code>, <code><a cbot|strfind>strfind</a></code>, <code><a cbot|strval>strval</a></code>, <code><a cbot|strlower>strlower</a></code>
    <a cbot>Programowanie</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: \b; header
en: Instruction <code>strval</code>
pl: Instrukcja <code>strval</code>

note: type: Plain text
en: Convert a string to a number. Don't confuse the string <code>"45"</code> that contains actually the two characters <code>4</code> and <code>5</code> and the number <code>45</code>.
pl: Zamienia łańcuch na liczbę. Nie należy mylić łańcucha <code>"45"</code>, zawierającego dwa znaki <code>4</code> i <code>5</code> oraz liczby <code>45</code>.

note: type: Source code
en: <c/>	string s = "45"+"12";  // s contains "4512"
    	float  n =  45 + 12;   // n contains 67
pl: <c/>	string s = "45"+"12";  // s zawiera "4512"
    	float  n =  45 + 12;   // n zawiera 67

note: type: Source code
en: <c/>strval ( string );<n/>
pl: <c/>strval ( łańcuch );<n/>

note: type: Source code
en: <c/>	float n = strval("1.23");     // n is 1.23
    	float n = strval("12abc45");  // n is 12
    	float n = strval("abc");      // n is 0
    	float n = strval("100")+2;    // n is 102
pl: <c/>	float n = strval("1.23");     // n równe 1,23
    	float n = strval("12abc45");  // n równe 12
    	float n = strval("abc");      // n równe 0
    	float n = strval("100")+2;    // n równe 102

note: type: Plain text
en: <code><a cbot|strlen>strlen</a></code>, <code><a cbot|strleft>strleft</a></code>, <code><a cbot|strright>strright</a></code>, <code><a cbot|strmid>strmid</a></code>, <code><a cbot|strfind>strfind</a></code>, <code><a cbot|strupper>strupper</a></code>, <code><a cbot|strlower>strlower</a></code>
    <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <code><a cbot|strlen>strlen</a></code>, <code><a cbot|strleft>strleft</a></code>, <code><a cbot|strright>strright</a></code>, <code><a cbot|strmid>strmid</a></code>, <code><a cbot|strfind>strfind</a></code>, <code><a cbot|strupper>strupper</a></code>, <code><a cbot|strlower>strlower</a></code>
    <a cbot>Programowanie</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: \b; header
en: Instruction <code>synchronized</code> (for specialists)
pl: Instrukcja <code>synchronized</code> (dla specjalistów)

note: type: Plain text
en: A <a cbot|class>class</a> method can be declared <code>synchronized</code>. This is to make sure that the method is never being executed by more than one bot at the same time.
pl: Metoda <a cbot|class>klasy</a> może być zadeklarowana jako <code>synchronized</code>. Dzięki temu można zapewnić, że metoda będzie uruchamiana nie więcej niż przez jednego robota w tym samym czasie.

note: type: Plain text
en: The following example illustrates the problem:
pl: Następujący przykład pomoże zilustrować problem:

note: type: Source code
en: class blocking
    {
    	static int nb = 33;
    	synchronized int inc( )
    	{
    		int val = nb;
    		wait ( 2 );  // wait 2 sec.
    		nb = nb + 1;
    		return val;
    	}
    }
pl: class blokowanie
    {
    	static int nb = 33;
    	synchronized int inc( )
    	{
    		int val = nb;
    		wait ( 2 );  // czekaj 2 sekundy
    		nb = nb + 1;
    		return val;
    	}
    }

note: type: Plain text
en: What happens if two bots execute the <code>inc</code> method at the same time?
    Both of them will execute <code>val=nb</code> and wait 2 seconds so both of them will have <code>val=33</code>. With <code>synchronized</code> the first bot starts execution with <code>val=33</code> and then waits 2 seconds and returns. Only once the first bot has returned from the <code>inc</code> method, the second bot will be allowed to enter the <code>inc</code> method and therefore the second bot will always have <code>val=34</code>.
pl: Co się dzieje, gdy dwa roboty wykonają metodę <code>inc</code> w tym samym czasie?
    Oba wykonają polecenie <code>val=nb</code> i poczekają 2 sekundy, a więc oba otrzymają <code>val=33</code>. Gdy użyjemy instrukcji <code>synchronized</code> pierwszy robot rozpocznie wykonywanie z <code>val=33</code> poczeka 2 sekundy i wyjdzie z metody. Dopiero po zakończeniu wykonywania metody <code>inc</code> przez pierwszego robota, drugi robot będzie miał możliwość wykonania metody <code>inc</code>, wobec czego otrzyma on zawsze <code>val=34</code>.

note: type: Plain text
en: You can have more than one synchronized method in your <a cbot|class>class</a> in order to prevent simultaneous execution across more than one method. In other words: as long as a bot's program is inside a synchronized method, no other bot can enter any synchronized method of the same class.
pl: Można mieć więcej niż jedną zsynchronizowaną metodę w <a cbot|class>klasie</a> w celu zapobieżenia równoczesnemu wykonywaniu więcej niż jednej metody. Innymi słowy: tak długo, jak długo robot jest wewnątrz zsynchronizowanej metody, żaden inny robot nie może wykonywać żadnej zsynchronizowanej metody tej samej klasy.

note: type: Plain text
en: <code><a cbot|class>class</a></code>, <code><a cbot|static>static</a></code>
    <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <code><a cbot|class>klasa</a></code>, <code><a cbot|static>static</a></code>
    <a cbot>Programowanie</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: \b; header
en: Semicolon
pl: Średnik

note: type: Plain text
en: Always use a semicolon <c/>;<n/> after a simple expression. For example:
pl: Po prostych wyrażeniach zawsze należy używać średnika <c/>;<n/>. Na przykład:

note: type: Source code
en: 	int counter = 0;
pl: 	int licznik = 0;

note: type: Plain text
en: However, after a <a cbot|bloc>bloc</a>, never put a semicolon:
pl: Nie należy jednak używać średnika na zakończenie <a cbot|bloc>bloku</a>:

note: type: Source code
en: 	{
    		float dist;
    		dist = distance(p1, p2);
    	} <n/>// no semicolon here!<c/>
pl: 	{
    		float odl;
    		odl = distance(p1, p2);
    	} <n/>// tutaj bez średnika!<c/>

note: type: Plain text
en: Do not use a semicolon either immediately after the instructions <code><a cbot|while>while</a></code>, <code><a cbot|if>if</a></code> or <code><a cbot|for>for</a></code>:
pl: Nie należy również stosować średnika bezpośrednio po instrukcjach <code><a cbot|while>while</a></code>, <code><a cbot|if>if</a></code> lub <code><a cbot|for>for</a></code>:

note: type: Source code
en: 	if ( a < b ) <n/>// no semicolon here!<c/>
    	{
    		b = 100-a;
    	}
pl: 	if ( a < b ) <n/>// tutaj bez średnika!<c/>
    	{
    		b = 100-a;
    	}

note: type: Plain text
en: An instruction is always ended by a semicolon, and not by the end of the line. So you can very well put several instructions on the same line:
pl: Ponieważ instrukcje zawsze kończą się średnikiem a nie znakiem końca linii, można umieścić kilka instrukcji w jednej linii:

note: type: Plain text
en: Is equivalent to:
pl: Jest równoważne:

note: type: \b; header
en: Instruction <code>testinfo</code>
pl: Instrukcja <code>testinfo</code>

note: type: Source code
en: <c/>testinfo ( name, power );<n/>
pl: <c/>testinfo ( nazwa, moc );<n/>

note: type: Plain text
en: Tests if an information exists in the closest <a object|exchange>information exchange post</a>.
pl: Sprawdza czy istnieje żądana informacja w najbliższej <a object|exchange>stacji przekaźnikowej</a>.

note: type: Plain text
en: Name of the information to be tested in the exchange post. This name is a string: it must be written in quotation marks "".
pl: Nazwa informacji do sprawdzenia. Jest ona łańcuchem i powinna być zapisana w cudzysłowach "".

note: type: Plain text
en: Power of the transmitter, which corresponds to the maximal distance between the transmitter and the exchange post. If the distance is longer, the function returns <code>false</code>. Default value is 10 metres.
pl: Moc transmitera, odpowiadająca maksymalnej odległości pomiędzy transmiterem i stacją przekaźnikową. Jeśli odległość jest większa, funkcja zwraca wartość <code>false</code>. Domyślna wartość to 10 metrów.

note: type: \t; header
en: Return: <code><a cbot|bool>bool</a></code>
pl: Typ wyniku: <code><a cbot|bool>bool</a></code>

note: type: Plain text
en: Return <code>true</code> if the information exists. Return and <code>false</code> if the information does not exist or if the receiver is too far away from the exchange post.
pl: Daje w wyniku <code>true</code> jesli informacja istnieje, oraz <code>false</code> jeśli informacja nie istnieje lub odbiorca jest za daleko od stacji przekaźnikowej.

note: type: Plain text
en: <code><a cbot|receive>receive</a></code>, <code><a cbot|send>send</a></code> and <code><a cbot|delinfo>deleteinfo</a></code>.
    <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <code><a cbot|receive>receive</a></code>, <code><a cbot|send>send</a></code> i <code><a cbot|delinfo>deleteinfo</a></code>.
    <a cbot>Programowanie</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: \b; header
en: Instruction <code>this</code>
pl: Instrukcja <code>this</code>

note: type: Plain text
en: Occasionally, a <a cbot|class>class</a> method needs to know the reference to the instance it is acting upon. For example the instance might want to pass it's own reference to another function. An implicit reference name <code>this</code> is available to methods and <code>this</code> is a reference to the current instance.
pl: Czasami metoda <a cbot|class>klasy</a> potrzebuje wskaźnika do instancji, w której działa. Na przykład instancja może chcieć przekazać wskaźnik do samej siebie jako parametr dla innej  funkcji. Odwołanie wprost poprzez <code>this</code> jest dostępne również dla metod; <code>this</code> jest odwołaniem do bieżącej instancji.

note: type: Source code
en: public class MyClass
    {
    	int    m_int;
    	string m_str;
    	void MyFunction()
    	{
    		OtherFunction(this);
    		m_int = 2;
    	}
    }
    
    void OtherFunction(MyClass obj)
    {
    	message(obj.m_str);
    }
    
    extern void object::Test()
    {
    	MyClass item();
    	item.m_str = "Hello";
    	item.MyFunction();  // display "Hello"
    }
pl: public class MojaKlasa
    {
    	int    m_int;
    	string m_str;
    	void MojaFunkcja()
    	{
    		InnaFunkcja(this);
    		m_int = 2;
    	}
    }
    
    void InnaFunkcja(MojaKlasa obj)
    {
    	message(obj.m_str);
    }
    
    extern void object::Test()
    {
    	MojaKlasa item();
    	item.m_str = "Cześć";
    	item.MojaFunkcja();  // wyświetla "Cześć"
    }

note: type: Plain text
en: You can also put <code>this</code> before a field name in a method but this is not necessary. In the example above in the method <code>MyFunction()</code> following two lines have strictly the same meaning:
pl: Można również umieścić <code>this</code> przed nazwą pola w metodzie, ale nie jest to konieczne. W powyższym przykładzie metody <code>MojaFunkcja()</code> następujące dwie linie mają identyczne znaczenie:

note: type: Source code
en: 	m_int = 2;
    	this.m_int = 2;  // identical
pl: 	m_int = 2;
    	this.m_int = 2;  // identyczne

note: type: Plain text
en: In a method of the <code><a cbot|object>object</a></code> class, you can also use <code>this.</code> before a fieldname.
pl: Również w metodzie klasy <code><a cbot|object>object</a></code> można użyć <code>this.</code> przed nazwą pola.

note: type: Source code
en: extern void object::Display()
    {
    	message(orientation);
    	message(this.orientation); // same thing but
    	                           // more explicit
    }
pl: extern void object::Display()
    {
    	message(orientation);
    	message(this.orientation); // to samo ale
    	                           // bardziej jednoznacznie
    }

note: type: Plain text
en: However if a field name is hidden by a parameter declaration or a variable declaration you must use <code>this</code>. In the following example the name <code>value</code> of the parameter is the same as the name of the field <code>value</code> of the <a cbot|class>class</a> <code>MyClass</code>, we must therefore write <code>this.value</code> in order to distinguish the field from the parameter.
pl: Jednakże jeśli nazwa pola jest ukryta poprzez deklarację parametru lub zmiennej, należy użyć <code>this</code>. W następującym przykładzie nazwa parametru <code>value</code> jest taka sama jak nazwa pola <code>value</code> w <a cbot|class>klasie</a> <code>MojaKlasa</code>, wobec tego w celu rozróżnienia pola od parametru, konieczne jest napisanie <code>this.value</code>.

note: type: Source code
en: public class MyClass
    {
    	int  value;
    	void Put( int value )
    	{
    		this.value = value;
    	}
    }
pl: public class MojaKlasa
    {
    	int  value;
    	void Put( int value )
    	{
    		this.value = value;
    	}
    }

note: type: \b; header
en: Instruction <code>thump</code>
pl: Instrukcja <code>thump</code>

note: type: Plain text
en: Activates the weapon system of the <a object|bottump>thumper</a>, that turns ants and spiders belly up and makes them completely harmless for a while.
pl: Uruchamia system broni robota <a object|bottump>uderzacza</a>, który przewraca mrówki i pająki do góry brzuchem, powodując ich chwilowe unieszkodliwienie.

note: type: Plain text
en: Zero if everything is OK, a value different from zero if an error occurred. 
    <code>== 0 </code>Thumping performed
    <code>!= 0 </code>Operation impossible
pl: Zero w przypadku powodzenia lub inna wartość, jeśli wystąpił błąd. 
    <code>== 0 </code>Uderzenie wykonane
    <code>!= 0 </code>Operacja niemożliwa

note: type: \b; header
en: Instruction <code>topo</code>
pl: Instrukcja <code>topo</code>

note: type: Source code
en: <c/>topo ( position );<n/>
pl: <c/>topo ( pozycja );<n/>

note: type: Plain text
en: Returns the altitude of the ground at a give position. The altitude zero corresponds to sea level. A negative value indicates that at this position ground is covered with water.
pl: Podaje wysokość gruntu w podanej pozycji. Wysokość zerowa odpowiada poziomowi morza. Wartość ujemna oznacza, że sprawdzany punkt jest przykryty wodą.

note: type: Plain text
en: Coordinates of the position whose altitude you want to know.
pl: Współrzędne pozycji, której wysokość ma być sprawdzona.

note: type: Plain text
en: Altitude of the ground at the given position.
pl: Wysokość gruntu w podanej pozycji.

note: type: \b; header
en: Type <code>true</code>
pl: Typ <code>true</code>

note: type: Plain text
en: This value means that a condition is true; it is one of the two values that a <a cbot|bool>boolean</a> <a cbot|var>variable</a> can take.
pl: Wartość ta oznacza, że warunek jest prawdziwy; jest to jedna z dwóch wartości <a cbot|var>zmiennej</a> typu <a cbot|bool>boolean</a>.

note: type: \b; header
en: Instruction <code>turn</code>
pl: Instrukcja <code>turn</code>

note: type: Plain text
en: Use the instruction <c/>turn();<n/> to instruct the bot to perform a rotation on itself of a certain number of degrees.
pl: Instrukcja <c/>turn();<n/> służy do wykonania przez robota obrotu o określoną liczbę stopni.

note: type: Plain text
en: 90 degreed means a quarter turn, 180 degrees means a half turn. A positive angle will perform a counterclockwise rotation, a negative angle means a clockwise rotation. Here are some examples with <c/>turn();<n/>:
pl: 90 stopni oznacza ćwierć obrotu, 180 stopni to pół obrotu. Kąt dodatni to obrót przeciwny do ruchu wskazówek zegara, kąt ujemny oznacza obrót zgodny z ruchem wskazówek zegara. Oto kilka przykładów użycia instrukcji <c/>turn();<n/>:

note: type: Plain text
en: <c/>turn(90);<n/>  quarter turn to the left
    <c/>turn(-90);<n/> quarter turn to the right (negative angle)
    <c/>turn(180);<n/> half turn
pl: <c/>turn(90);<n/>  ćwierć obrotu w lewo
    <c/>turn(-90);<n/> ćwierć obrotu w prawo (ujemny kąt)
    <c/>turn(180);<n/> połowa obrotu

note: type: Plain text
en: In order to turn the bot towards an object found with the instruction <c/><a cbot|radar>radar</a>();<n/>, you must calculate the rotation angle with the instruction <code><a cbot|direct>direction</a>()</code>:
pl: Aby obrócić robota w kierunku obiektu znalezionego przy użyciu instrukcji <c/><a cbot|radar>radar</a>();<n/>, należy obliczyć kąt obrotu przy pomocy instrukcji <code><a cbot|direct>direction</a>()</code>:

note: type: Plain text
en: After these lines, just fire the cannon, and there is one hostile element less.
pl: Po tych liniach wystarczy wystrzelić z działa i już mamy jednego wroga mniej.

note: type: Source code
en: <c/>turn ( angle );<n/>
pl: <c/>turn ( kąt );<n/>

note: type: Plain text
en: Turns the bot with a given angle, right or left, without moving either forward or backward.
pl: Obraca robota o podany kąt, w prawo lub w lewo, bez poruszania do przodu ani do tyłu.

note: type: Plain text
en: Angle of the required rotation, in degrees. A positive value turns left, a negative value turns right. <code>turn(180)</code> turns round completely.
pl: Kąt obrotu w stopniach. Wartość dodatnia to obrót w lewo, ujemna - w prawo. <code>turn(180)</code> obraca do tyłu.

note: type: Plain text
en: Zero if everything is OK, or a value different from zero if an error occurred. 
    <code>== 0 </code>rotation performed
    <code>!= 0 </code>rotation impossible
pl: Zero w przypadku powodzenia lub inna wartość, jeśli wystąpił błąd. 
    <code>== 0 </code>obrót wykonany
    <code>!= 0 </code>obrót niemożliwy

note: type: \b; header
en: Variable types
pl: Typy zmiennych

note: type: Plain text
en: When you define a <a cbot|var>variable</a>, you must give two elements:
pl: Definiując <a cbot|var>zmienną</a>, należy podać dwa elementy:

note: type: Bullet: '1)'
en: a name
pl: nazwę

note: type: Bullet: '2)'
en: a type
pl: typ

note: type: Plain text
en: Once you defined a variable, you can use it to put information in it. However, the information that a variable can contain must always be of the correct type: a variable of type <a cbot|float>float</a> can not contain a string, etc.
pl: Po zdefiniowaniu zmiennej można w niej umieszczać informacje. Jednakże informacja, którą może przechowywać zmienna, musi być odpowiedniego typu: zmienna typu <a cbot|float>float</a> nie może zawierać łańcucha itd.

note: type: Plain text
en: For a whole number (12, -500, etc.).
pl: Dla liczb całkowitych (12, -500, itd.)

note: type: Plain text
en: For a real number (12, 3.14, 0.2, -99.98, etc.).
pl: Dla liczb rzeczywistych (12, 3.14, 0.2, -99.98, itd.)

note: type: Plain text
en: For a boolean variable, that can only take the values <code>true</code> or <code>false</code>.
pl: Dla zmiennych logicznych, które mogą zawierać wartości <code>true</code> lub <code>false</code>

note: type: Plain text
en: For texts ("Hello!", "No object found", etc.)
pl: Dla tekstów ("Cześć!", "Nie znaleziono obiektu", itd.)

note: type: Plain text
en: For the coordinates of a point in space; a variable of this type consists of three parts named x, y and z.
pl: Dla współrzędnych punktu w przestrzeni; zmienna tego typu składa się z trzech części nazwanych x, y oraz z.

note: type: Plain text
en: A variable of this type contains the information about an object (bot, building, enemy, etc.).
pl: Zmienna tego typu może zawierać informacje o obiekcie (robocie, budynku, wrogu, itd.)

note: type: Plain text
en: This type is an "empty type", that you use when you do not want to specify a type.
pl: Jest to "typ pusty", używany wtedy, gdy nie chcemy określać typu.

note: type: \b; header
en: Variables
pl: Zmienne

note: type: Plain text
en: A variable is like a box, where you can put some information. The content of the variable can change during the execution of the program.
pl: Zmienna jest jak pudełko, do którego można wkładać różne informacje. Wartość zmiennej może się zmieniać podczas wykonywania programu.

note: type: Plain text
en: For example, you can use a variable to count the number of titanium ore units that the grabber has collected and carried to the converter. First, you must find a name for it: the name should not be too long, but explain by itself what the variable is used for. Let's call it <code>countTit</code>. This variable must contain only whole numbers, so choose the type <code>int</code>. At the beginning of the program, you must declare the variable. Then you put the value <code>0</code> into the variable, and every time you grab a titanium ore, you increase the variable by <code>1</code>. At every moment, the variable contains the number of titanium ore units that the grabber collected.
pl: Na przykład można użyć zmiennej do liczenia jednostek rudy tytanu zebranych i przeniesionych przez transporter do huty. Najpierw należy ustalić odpowiednią nazwę dla zmiennej: nie powinna być ona zbyt długa, ale powinna wyjaśniać, do czego używana jest zmienna. Nazwijmy ją <code>liczTyt</code>. Zmienna ta będzie zawierała tylko liczby całkowite, dlatego odpowiednim dla niej typem będzie <code>int</code>. Na początku programu zmienną trzeba zadeklarować. Następnie można w niej umieścić wartość <code>0</code>, zwiększając ją o <code>1</code> za każdym razem, gdy robot podniesie rudę tytanu. Zmienna ta będzie zawierać liczbę porcji rudy tytanu zebranych do tej pory przez robota.

note: type: Plain text
en: For the declaration of the variable, write the following line: 
    <c/><s/>	int  countTit;<n/>
pl: Aby zadeklarować zmienną, należy napisać: 
    <c/><s/>	int  liczTyt;<n/>

note: type: Plain text
en: To put <code>0</code> into the variable, write:
    <c/><s/>	countTit = 0;<n/>
pl: Aby przypisać jej wartość <code>0</code>, należy napisać:
    <c/><s/>	liczTyt = 0;<n/>

note: type: Plain text
en: At every titanium ore grabbed, write:
    <c/><s/>	countTit = countTit + 1<n/>
pl: Po zebraniu każdej porcji rudy tytanu należy napisać:
    <c/><s/>	liczTyt = liczTyt + 1<n/>

note: type: Plain text
en: You have much freedom in the choice of the name for a variable, you can call them by any name, f. ex.: <code>dist</code>, <code>direct</code>, <code>p2</code>, <code>a</code>, <code>x</code>, <code>nothing_2_shoot_at</code>, etc.
    A variable name must always begin with a letter. It can be followed by any combination of letters, digits or the underscore character <code>_</code>. You can of course not use the keywords of the CBOT language like <code><a cbot|for>for</a></code>, <code><a cbot|while>while</a></code>, <code><a cbot|break>break</a></code>, <code><a cbot|continue>continue</a></code>, <code>do</code>, etc.
    You should be careful about the choice of the names that you give to variables; writing a program can become very difficult if you forget the names of variables or if you do not remember what they are used for. Elaborate your own system to find variable names, and do not use names like <code>Bmo45</code>, <code>a</code> or <code>tgBinX</code>.
pl: W wyborze nazwy dla zmiennej jest dużo swobody, można ją nazwać dowolnie, np.: <code>odl</code>, <code>kierunek</code>, <code>p2</code>, <code>a</code>, <code>x</code>, <code>nic_do_zestrzelenia</code>, itd.
    Nazwa zmiennej musi zaczynać się od litery, po której może następować dowolna kombinacja liter, cyfr i znaków podkreślenia <code>_</code>. Oczywiście nie można używać słów kluczowych języka CBOT takich jak <code><a cbot|for>for</a></code>, <code><a cbot|while>while</a></code>, <code><a cbot|break>break</a></code>, <code><a cbot|continue>continue</a></code>, <code>do</code>, itd.
    Należy być ostrożnym w wyborze nazw przydzielanych zmiennym; pisanie programu może okazać się bardzo trudne jeśli zapomni się nazwy zmiennych lub nie pamięta, do czego one służyły. Należy opracować własny system nazywania zmiennych i raczej nie używać nazw podobnych do <code>Bmo45</code>, <code>a</code> czy <code>tgBinX</code>.

note: type: Plain text
en: In the example above, the keyword <code>int</code> indicates that this variable can contain only whole numbers, which is adequate to counting objects. If you want to measure a distance, better use a variable that can contain also real numbers, with a fractional part (like 3.45 or 0.034): in this case, use the type <code>float</code>.
pl: W powyższym przykładzie, słowo <code>int</code> określa, że zmienna może zawierać tylko liczby całkowite, odpowiednie do liczenia obiektów. Do mierzenia odległości lepiej jest użyć zmiennej, która może również zawierać liczby rzeczywiste z częścią ułamkową (takie jak 3.45 lub 0.034): w tym przypadku odpowiedniejszy jest typ <code>float</code>.

note: type: Plain text
en: In fact, a variable is made up of three parts:
pl: Zmienna składa się z trzech części:

note: type: Bullet: '1)'
en: the name,
pl: nazwy,

note: type: Bullet: '2)'
en: the type of the information stored inside,
pl: typu informacji przez nią przechowywanych,

note: type: Bullet: '3)'
en: the content, i.e. the information itself.
pl: zawartości, czyli samej informacji.

note: type: \t; header
en: the name
pl: nazwa

note: type: Plain text
en: You need the name to be able to distinguish the different variables from each other.
pl: Jest niezbędna do rozróżniania zmiennych pomiędzy sobą.

note: type: \t; header
en: the type
pl: typ

note: type: Plain text
en: The <a cbot|type>type</a> determines what kind of information the variable can contain. According to the type, a variable can contain a whole number, a real number, a string, the coordinates of a point, information about an object, etc. 
    Here is a list of the most common variable types:
pl: <a cbot|type>Typ</a> warunkuje rodzaj informacji, jaką może zawierać zmienna. Zależnie od typu, zmienna może zawierać liczby całkowite, liczby rzeczywiste, łańcuchy, współrzędne punktu, informacje o obiekcie, itd. 
    Oto lista najczęściej występujących typów zmiennych:

note: type: Bullet: 'o'
en: <code><a cbot|int>int</a></code> for a whole number (12, -500, etc.)
pl: <code><a cbot|int>int</a></code> dla liczb całkowitych (12, -500, itd.)

note: type: Bullet: 'o'
en: <code><a cbot|float>float</a></code> for a real number (3.14, 0.2, -99.98, etc.)
pl: <code><a cbot|float>float</a></code> dla liczb rzeczywistych (3.14, 0.2, -99.98, itd.)

note: type: Bullet: 'o'
en: <code><a cbot|string>string</a></code> for a character string ("Hello!", "No object found", etc.)
pl: <code><a cbot|string>string</a></code> dla łańcuchów znakowych ("Cześć!", "Nie znaleziono obiektu", itd.)

note: type: Bullet: 'o'
en: <code><a cbot|point>point</a></code> for a x,y,z-coordinate in space
pl: <code><a cbot|point>point</a></code> dla współrzędnych x, y, z w przestrzeni

note: type: Bullet: 'o'
en: <code><a cbot|object>object</a></code> for information about an object (bot, building, etc.)
pl: <code><a cbot|object>object</a></code> dla informacji o obiekcie (robocie, budynku, itd.)

note: type: \t; header
en: The content
pl: zawartość

note: type: Plain text
en: The content of a variable is an information of the kind specified in the type. It can change during the execution of the program.
pl: Zawartością zmiennej jest informacja, której rodzaj jest określony przez typ. Może się ona zmieniać w trakcie działania programu.

note: type: Plain text
en: Once you declared a variable, it still does not contain any value. Before you can use it, you must put a value inside: 
    <c/><s/>	int  i, j;
pl: Po zadeklarowaniu zmiennej nie zawiera ona żadnej wartości. Zanim będzie można jej użyć, trzeba nadać jej wartość: 
    <c/><s/>	int  i, j;

note: type: Source code
en: 	j = 25;  // j takes the value 25
    	j = i;   // can not write this, because i has got no content yet.
pl: 	j = 25;  // j przyjmuje wartość 25
    	j = i;   // tak nie można napisać, gdyż i nie ma jeszcze żadnej wartości.

note: type: Plain text
en: You can also declare a variable and put a value inside in the same line, writing: 
    <c/><s/>	int  countTit = 0;
pl: Możliwe jest zadeklarowanie zmiennej i przypisanie jej wartości w tym samym wierszu: 
    <c/><s/>	int  liczTyt = 0;

note: type: Plain text
en: When you assign a value to a variable with the equals sign <code>=</code>, the value on the right side is copied into the value on the left side. Consider the following example: 
    <c/><s/>	int  i, j;
pl: Przy wykonywaniu przypisania wartości zmiennej przy użyciu znaku równości<code>=</code>, wartość z prawej strony jest kopiowana do wartości po lewej stronie. Rozważmy następujący przykład: 
    <c/><s/>	int  i, j;

note: type: Source code
en: 	i = 5+2;  // i takes the value 7
    	j = i+6;  // j takes the value of i plus 6, this is 13
    	i = j;    // i takes the value of j, this is 13
pl: 	i = 5+2;  // i przyjmuje wartość 7
    	j = i+6;  // j przyjmuje wartość i plus 6, czyli 13
    	i = j;    // i przyjmuje wartość j, czyli 13

note: type: Plain text
en: At the end of this example, both variables <code>i</code> and <code>j</code> contain the value <code>13</code>.
pl: Na końcu tego przykładu obie zmienne <code>i</code> oraz <code>j</code> zawierają wartość <code>13</code>.

note: type: Plain text
en: The following assignment is not correct, because on the left side of the equals sign <code>=</code>, there can be only a variable name:
    <c/><s/>	i+2 = j;  // impossible
pl: Następujące przypisanie jest niepoprawne, gdyż po lewej stronie znaku równości <code>=</code> może występować tylko nazwa zmiennej:
    <c/><s/>	i+2 = j;  // niemożliwe

note: type: Plain text
en: If you want to exchange the values of two variables, you must use a third variable. Here is an example to exchange the content of two variables <code>a</code> and <code>b</code> :
    <c/><s/>	int temp;
pl: Do zamiany zawartości dwóch zmiennych konieczne jest użycie trzeciej zmiennej. Oto przykład zamieniający zawartość zmiennych <code>a</code> i <code>b</code>:
    <c/><s/>	int pom;

note: type: Source code
en: 	temp = a;  // temp takes the value of a
    	a = b;     // the content of b is copied into a
    	b = temp;  // the content of temp is copied into b
pl: 	pom = a;  // pom przyjmuje wartość a
    	a = b;    // zawartość b jest kopiowana do a
    	b = pom;  // zawartość pom jest kopiowana do b

note: type: \b; header
en: Type <code>void</code>
pl: Typ <code>void</code>

note: type: Plain text
en: Use this type when you want to declare a function that returns nothing.
pl: Tego typu należy użyć do deklaracji funkcji, która nie zwraca żadnego wyniku.

note: type: Plain text
en: Example:
    <c/><s/>void MyFunction(int a)
pl: Przykład:
    <c/><s/>void MojaFunkcja(int a)

note: type: \b; header
en: Instruction <code>wait</code>
pl: Instrukcja <code>wait</code>

note: type: Plain text
en: The instruction <c/>wait();<n/> instructs the bot to wait for some seconds, according to the value written in brackets.
pl: Instrukcja <c/>wait();<n/> każe robotowi czekać przez kilka sekund, zależnie od wartości podanej w nawiasach.

note: type: Plain text
en: In order to wait until the <a object|power>power cell</a> is recharged on a power station, wait 5 seconds with <c/>wait(5);<n/>.
pl: Na naładowanie <a object|power>ogniwa elektrycznego</a> w stacji energetycznej należy poczekać 5 sekund używając instrukcji <c/>wait(5);<n/>.

note: type: Plain text
en: In order to wait until the <a object|convert>converter</a> finished transforming some <a object|titanore>titanium ore</a> in a <a object|titan>titanium cube</a>, wait 15 seconds with <c/>wait(15);<n/>.
pl: Na przetopienie <a object|titanore>rudy tytanu</a> w <a object|titan>kostkę tytanu</a> w <a object|convert>hucie</a> należy poczekać 15 sekund używając instrukcji <c/>wait(15);<n/>.

note: type: Source code
en: <c/>wait ( time );<n/>
pl: <c/>wait ( czas );<n/>

note: type: Plain text
en: Waits for a moment.
pl: Czeka przez chwilę.

note: type: Plain text
en: Specifies the time that the bot must wait.
pl: Określa czas przez jaki robot powinien czekać.

note: type: \b; header
en: Instruction <code>while</code>
pl: Instrukcja <code>while</code>

note: type: Plain text
en: The instruction <code>while () {}</code> is used to repeat a set of instructions several times.
pl: Instrukcja <code>while () {}</code> jest używana do wielokrotnego powtarzania zbioru instrukcji.

note: type: Plain text
en: The most frequent use of <code>while</code> consists in repeating a set of instructions again and again. In order to achieve this, write <code>while (true) {}</code> and put the instructions to be repeated in braces <code>{}</code>. As an example, here is a program that repeats again and again the following actions:
pl: Najczęstsze użycie instrukcji <code>while</code> polega na nieskończonym powtarzaniu zbioru instrukcji. Aby to osiągnąć, należy napisać <code>while (true) {}</code>, a instrukcje, które mają być powtarzane zapisać w nawiasach klamrowych <code>{}</code>. Oto przykładowy program powtarzający w nieskończoność następujące czynności:

note: type: Bullet: 'o'
en: look for a spider,
pl: znajdź pająka,

note: type: Bullet: 'o'
en: turn towards it,
pl: obróć się w jego stronę,

note: type: Bullet: 'o'
en: shoot.
pl: strzelaj.

note: type: Plain text
en: Just execute this program once, and it will kill all spiders around it.
pl: Wystarczy raz uruchomić ten program, a zabije on wszystkie pająki dookoła robota.

note: type: Source code
en: <code>while ( condition )
    {
    	</code>Instructions ...<c/>
    }
pl: <code>while ( warunek )
    {
    	</code>Instrukcje ...<c/>
    }

note: type: Plain text
en: This instruction allows you to perform the instructions inside the <a cbot|bloc>block</a> several times.
pl: Instrukcja ta pozwala na wielokrotne powtarzanie instrukcji wewnątrz <a cbot|bloc>bloku</a>.

note: type: Plain text
en: Be careful not to confuse the instruction <code>while( ) { }</code> with the instruction <c/><a cbot|do>do</a> { } while( );<n/>; the latter tests the condition only after the instructions in the block have been performed a first time.
pl: Nie należy mylić instrukcji <code>while( ) { }</code> z instrukcją <c/><a cbot|do>do</a> { } while( );<n/>; ta druga sprawdza warunek dopiero po pierwszym wykonaniu instrukcji w bloku.

note: type: Source code
en: <c/>int i = 0;
    while ( i < 10 )
    {
    	<n/>Instructions ...<c/>
    	i = i+1;
    }
pl: <c/>int i = 0;
    while ( i < 10 )
    {
    	<n/>Instrukcje...<c/>
    	i = i+1;
    }

note: type: Plain text
en: Do not put a <a cbot|term>semicolon</a> at the end of the line <code>while ( )</code>.
pl: Na końcu instrukcji <code>while ( )</code> nie należy umieszczać <a cbot|term>średnika</a>.

note: type: Plain text
en: The instructions <code><a cbot|break>break</a></code> and <code><a cbot|continue>continue</a></code> can be useful inside a block following the instruction <code>while { }</code>.
pl: Instrukcje <code><a cbot|break>break</a></code> i <code><a cbot|continue>continue</a></code> mogą być przydatne wewnątrz bloku instrukcji <code>while ( )</code>.

note: type: \b; header
en: Instruction <code>writeln</code>
pl: Instrukcja <code>writeln</code>

note: type: Plain text
en: Write one line of text to an open file in the files/ folder. This is a method of the <code><a cbot|file>file</a></code> class. This is the reason why we always write <code>handle.writeln()</code>:
pl: Zapisuje linię tekstu do otwartego pliku w folderze files/. Jest to metoda klasy <code><a cbot|file>file</a></code>, dlatego też zawsze należy używać konstrukcji <code>handle.writeln()</code>:

note: type: Plain text
en: The file must have been opened for writing (<code>"w"</code>) with the <code><a cbot|open>open</a></code> instruction. The line will automatically be terminated by the end of line characters 0x0D (CR) and 0x0A (LF).
pl: Plik musi być otwarty do zapisu (<code>"w"</code>) przy użyciu instrukcji <code><a cbot|open>open</a></code>. Zapisywany wiersz zostanie automatycznie zakończony znakami końca linii 0x0D (CR) i 0x0A (LF).

note: type: Source code
en: 	writeln("Line of text");
pl: 	writeln("Linia tekstu");

note: type: Plain text
en: <code><a cbot|file>file</a></code>, <code><a cbot|open>open</a></code>, <code><a cbot|close>close</a></code>, <code><a cbot|readln>readln</a></code> and <code><a cbot|eof>eof</a></code>.
    <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <code><a cbot|file>file</a></code>, <code><a cbot|open>open</a></code>, <code><a cbot|close>close</a></code>, <code><a cbot|readln>readln</a></code> i <code><a cbot|eof>eof</a></code>.
    <a cbot>Programowanie</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: \b; header
en: Instruction <code>acos</code>
pl: Instrukcja <code>acos</code>

note: type: Source code
en: <c/>acos ( value );<n/>
pl: <c/>acos ( wartość );<n/>

note: type: \t; header
en: value: <code><a cbot|float>float</a></code>
pl: wynik: <code><a cbot|float>float</a></code>

note: type: Plain text
en: Number between -1 and 1 (including both).
pl: Liczba z przedziału od -1 do 1 (obustronnie domkniętego).

note: type: Plain text
en: Arcus cosine (in degrees) of the value.
pl: Arcus cosinus (w kątach) danej wartości.

note: type: Plain text
en: <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|expr>expressions</a>.
pl: <a cbot>Programowanie</a>, <a cbot|type>typy</a> i <a cbot|expr>wyrażenia</a>.

note: type: Plain text
en: This instruction sets the vertical and the horizontal angle of the cannon. The following robots are equipped with a cannon:
pl: Instrukcja ta ustawia działo pod określony kątem, zarówno w pionie, jak i w poziomie. W działo są wyposażone następujące roboty:

note: type: Plain text
en: When controlling the robot through programming, the gun can be also turned left or right by turning the whole robot with the instruction <code><a cbot|turn>turn</a></code>.
pl: Podczas kontrolowania działanie robota przy użyciu programu, lufę można obrócić w prawo lub w lewo, obracając całego robota instrukcją <code><a cbot|turn>turn</a></code>.

note: type: \t; header
en: y: <code><a cbot|float>float</a></code>
pl: y: <a cbot|float><code>float</code></a>

note: type: \t; header
en: x: <code><a cbot|float>float</a></code> (default value: <code>0</code>)
pl: x: <code><a cbot|float>float</a></code> (domyślna wartość: <code>0</code>)

note: type: Plain text
en: Angle in degrees of the gun relative to the robot. A positive value orients the gun to the right. The angle must range from <code>-40</code> to <code>+40</code> degrees for all shooters.
pl: Kąt w stopniach w odniesieniu do robota. Wartość dodatnia ustawia lufę w prawo. Ograniczeniem jest przedział od <code>-40</code> do <code>+40</code> stopni; dotyczy on wszystkich dział.

note: type: \b; header
en: Instruction <code>asin</code>
pl: Instrukcja <code>asin</code>

note: type: Source code
en: <c/>asin ( value );<n/>
pl: <c/>asin ( wartość );<n/>

note: type: Plain text
en: Arcus sine (in degrees) of the value.
pl: Arcus sinus (w kątach) danej wartości.

note: type: \b; header
en: Instruction <code>atan</code>
pl: Instrukcja <code>atan</code>

note: type: Source code
en: <c/>atan ( value );<n/>
pl: <c/>atan ( wartość );<n/>

note: type: Plain text
en: Number.
pl: Liczba:

note: type: Plain text
en: Arcus tangent (in degrees) of the value.
pl: Arcus tangens (w kątach) danej wartości.

note: type: \b; header
en: Instruction <code>atan2</code>
pl: Instrukcja <code>atan2</code>

note: type: Plain text
en: The purpose of using two arguments instead of one is to gather information on the signs of the inputs in order to return the appropriate quadrant of the computed angle, which is not possible for the single-argument <c/><a cbot|atan>atan();</a><n/> function. For example, consider a point <code>(-1, -1)</code>: <c/>atan(-1/-1);<n/> is <code>45.00</code> degrees, whereas <c/>atan2(-1, -1);<n/> is <code>-135.00</code> degrees, which is obviously more correct in this case.
pl: Użycie dwóch argumentów zamiast jednego ma na celu wykorzystanie informacji o znakach obu wartości wejściowych w celu ustalenia ćwiartki, w której znajduje się wyliczony kąt, co nie jest możliwe przy podaniu tyko jednego argumentu.<c/>Funkcja <a cbot|atan>atan();</a><n/>. Przykładowo, rozważmy punkt <code>(-1, -1)</code>: <c/>atan(-1/-1);<n/> zwróci wartość <code>45.00</code> stopni, podczas gdy <c/>atan2(-1, -1);<n/>: <code>-135.00</code> stopni, co jest zdecydowanie poprawniejsze w tej sytuacji.

note: type: Plain text
en: Arcus tangent (in degrees) of <code>y/x</code>.
pl: Arcus tangens (w kątach) z <code>y/x</code>.

note: type: \b; header
en: Instruction <code>build</code>
pl: Instrukcja <code>build</code>

note: type: Source code
en: <c/>build ( cat );<n/>
pl: <c/>build ( kategoria );<n/>

note: type: \t; header
en: cat: <code><a cbot|int>int</a></code>
pl: kategoria: <code><a cbot|int>int</a></code>

note: type: Plain text
en: <a cbot|category>Category</a> of a building.
pl: <a cbot|category>Kategoria</a> budynku.

note: type: Plain text
en: Normally an error stops the program. You can prevent the program from stopping on errors by using the <code><a cbot|errmode>errmode</a>(0)</code> instruction. A value different from zero if an error occurred is then returned by <code>build()</code>.
    <code>== 0 </code>Successfully built
    <code>!= 0 </code>Impossible to build (for example, the nearest titanium cube is too far away or the specified building is not available in the mission)
pl: Z reguły po wywołaniu błędu program zatrzymuje się. Możesz temu zapobiec, wykorzystując instrukcję <code><a cbot|errmode>errmode</a>(0)</code>. Jeśli wystąpi błąd, funkcja <code>build()</code> zwróci wartość różną od zera.
    <code>== 0 </code>Wybudowano pomyślnie
    <code>!= 0 </code>Nie można wybudować (przykładowo: najbliższa kostka tytanu jest za daleko albo wybrany budynek nie jest dostępny w tej misji)

note: type: \b; header
en: Instruction <code>buildingenabled</code>
pl: Instrukcja <code>buildingenabled</code>

note: type: Plain text
en: It is similar to the <c/><a cbot|canbuild>canbuild();</a><n/> instruction. However, it does not check if a required research has been done.
pl: Jest podobna do instrukcji <c/><a cbot|canbuild>canbuild();</a><n/>. W przeciwieństwie do niej nie sprawdza jednak, czy odkryto wymaganą technologię.

note: type: Source code
en: <c/>buildingenabled ( cat );<n/>
pl: <c/>buildingenabled ( kategoria );<n/>

note: type: \t; header
en: Return value: <code><a cbot|bool>bool</a></code>
pl: Typ wyniku: <code><a cbot|bool>bool</a></code>

note: type: \t; header
en: <a cbot|object>object</a>
pl: <a cbot|object>obiekt</a>

note: type: Plain text
en: Any building which can take some action (e.g. <a cbot|convert>Converter</a>).
pl: Dowolny budynek, który wykonuje jakieś czynności (np. <a cbot|convert>Huta</a>).

note: type: Plain text
en: <code><format const>true</format></code> if the object is doing something (e.g. converting)
    <code><format const>false</format></code> if the object is not doing anything
pl: Zwraca wartość <code><format const>true</format></code>, jeśli obiekt jest zajęty pewną czynnością (np. przetapianiem)
    <code><format const>false</format></code>, jeśli obiekt nic nie robi.

note: type: \b; header
en: Instruction <code>canbuild</code>
pl: Instrukcja <code>canbuild</code>

note: type: Plain text
en: It helps to prevent errors in programs using the <c/><a cbot|build>build();</a><n/> instruction. Here is an example:
pl: Użycie jej pozwala uniknąć błędów w programach, które wykorzystują instrukcję <c/><a cbot|build>build();</a><n/>. Przykładowo:

note: type: Plain text
en: <code>true</code> if the building can be built, <code>false</code> otherwise.
pl: Zwraca wartość <code>true</code>, jeśli można wybudować budynek, w przeciwnym razie <code>false</code>.

note: type: Source code
en: <c/>canresearch ( research );<n/>
pl: <c/>canresearch ( technologia );<n/>

note: type: \t; header
en: research: <code><a cbot|int>int</a></code>
pl: technologia: <code><a cbot|int>int</a></code>

note: type: Plain text
en: <a cbot|researches>Research name</a>.
pl: <a cbot|researches>Nazwa technologii</a>.

note: type: Plain text
en: <format const>true</format> if the research can be done (even if it is already done, to check that, use the <a cbot|researched>researched</a> instruction)
    <format const>false</format> if the research cannot be done
pl: Zwraca wartość <format const>true</format>, jeśli technologię można odkryć (nie sprawdza jednak, czy nie została już odkryta; do tego służy instrukcja <a cbot|researched>researched</a>)
    <format const>false</format>, jeśli technologii nie można odkryć

note: type: Plain text
en: Below are the different categories available:
pl: Poniżej podano dostępne kategorie:

note: type: \t; header
en: Buildings:
pl: Budynki:

note: type: \t; header
en: Portable Objects:
pl: Obiekty przenośne:

note: type: \t; header
en: Robots:
pl: Roboty:

note: type: \t; header
en: Enemies:
pl: Przeciwnicy:

note: type: \t; header
en: Miscellaneous:
pl: Różne:

note: type: \t; header
en: Flags and Other Indicators:
pl: Flagi i inne wskaźniki:

note: type: \b; header
en: Instruction <code>ceil</code>
pl: Instrukcja <code>ceil</code>

note: type: Source code
en: <c/>ceil ( value );<n/>
pl: <c/>ceil ( wartość );<n/>

note: type: Plain text
en: Rounds up a number.
pl: Zaokrągla liczbę.

note: type: Plain text
en: Ceiling of the value, i.e. the smallest integer not less than <code>value</code>. For example, <code>ceil(2.1)</code> is <code>3.0</code>.
pl: Zaokrąglona wartość, tzn. najmniejsza liczba całkowita nie mniejsza od <code>wartość</code>. Na przykład, <code>ceil(2.1)</code> da w wyniku <code>3.0</code>.

note: type: Plain text
en: <a cbot|round>round</a>, <a cbot>programming</a>, <a cbot|type>types</a> and <a cbot|expr>expressions</a>.
pl: <a cbot|round>round</a>, <a cbot>programowanie</a>, <a cbot|type>typy</a> i <a cbot|expr>wyrażenia</a>.

note: type: \b; header
en: Value <code>Colors</code>
pl: Wartości <code>kolorów</code>

note: type: Plain text
en: Color names are used to define a specific color to use. They can be passed to functions like <a cbot|pendown>pendown</a> or <a cbot|pencolor>pencolor</a>.
pl: Nazwy kolorów określają kolor, który ma być użyty. Mogą być przekazane do takich funkcji jak <a cbot|pendown>pendown</a> czy <a cbot|pencolor>pencolor</a>.

note: type: Plain text
en: In a program, colors are always displayed on a <format const>red background</format>. If a color isn't highlighted in red, it is misspelled. Caps and lower cases should be kept as is.
pl: W edytorze programów kolory są zawsze pokazywane na <format const>czerwonym tle</format>. Jeśli kolor nie ma takiego tła, do jego nazwy wkradła się literówka. Nie należy zmieniać wielkości liter.

note: type: Plain text
en: Below are the different colors available:
pl: Poniżej opisano dostępne kolory:

note: type: Plain text
en: <code><format const>White</format></code>
    <code><format const>Black</format></code>
    <code><format const>Gray</format></code>
    <code><format const>LightGray</format></code>
    <code><format const>Red</format></code>
    <code><format const>Pink</format></code>
    <code><format const>Purple</format></code>
    <code><format const>Orange</format></code>
    <code><format const>Yellow</format></code>
    <code><format const>Beige</format></code>
    <code><format const>Brown</format></code>
    <code><format const>Skin</format></code>
    <code><format const>Green</format></code>
    <code><format const>LightGreen</format></code>
    <code><format const>Blue</format></code>
    <code><format const>LightBlue</format></code>
pl: <code><format const>White</format></code>
    <code><format const>Black</format></code>
    <code><format const>Gray</format></code>
    <code><format const>LightGray</format></code>
    <code><format const>Red</format></code>
    <code><format const>Pink</format></code>
    <code><format const>Purple</format></code>
    <code><format const>Orange</format></code>
    <code><format const>Yellow</format></code>
    <code><format const>Beige</format></code>
    <code><format const>Brown</format></code>
    <code><format const>Skin</format></code> (biały)
    <code><format const>Green</format></code> (zielony)
    <code><format const>LightGreen</format></code> (jasnozielony)
    <code><format const>Blue</format></code> (niebieski)
    <code><format const>LightBlue</format></code> (jasnoniebieski)

note: type: Plain text
en: You can also draw colored symbols:
pl: Można też rysować kolorowe symbole:

note: type: Plain text
en: <code><format const>BlackArrow</format></code>
    <code><format const>RedArrow</format></code>
pl: <code><format const>BlackArrow</format></code> (czarna strzałka)
    <code><format const>RedArrow</format></code> (czerwona strzałka)

note: type: \b; header
en: Instruction <code>cos</code>
pl: Instrukcja <code>cos</code>

note: type: Source code
en: <c/>cos ( angle );<n/>
pl: <c/>cos ( kąt );<n/>

note: type: Plain text
en: Angle in degrees.
pl: Miara kąta w stopniach.

note: type: Plain text
en: Cosine of the angle.
pl: Cosinus danego kąta.

note: type: \b; header
en: Instruction <code>destroy</code>
pl: Instrukcja <code>destroy</code>

note: type: Plain text
en: Destroys an object.
pl: Niszczy obiekt.

note: type: Plain text
en: <a object|destroy>Destroyer</a>.
pl: <a object|destroy>Niszczarka</a>.

note: type: Plain text
en: Normally an error stops the program. You can prevent the program from stopping on errors by using the <code><a cbot|errmode>errmode</a>(0)</code> instruction. A value different from zero if an error occurred is then returned by <code>destroy()</code>.
    <code>== 0 </code>The operation of destroying of an object was started
    <code>!= 0 </code>The instruction could not be done (e.g. nothing to destroy)
pl: Z reguły po wywołaniu błędu program zatrzymuje się. Możesz temu zapobiec, wykorzystując instrukcję <code><a cbot|errmode>errmode</a>(0)</code>. Jeśli wystąpi błąd, funkcja <code>destroy()</code> zwróci wartość różną od zera.
    <code>== 0 </code>Rozpoczęto operację niszczenia
    <code>!= 0 </code>Nie udało się wykonać instrukcji (np. nie ma nic do zniszczenia)

note: type: \b; header
en: Instruction <code>detect</code>
pl: Instrukcja <code>detect</code>

note: type: Plain text
en: With the instruction <c/>detect();<n/>, you can look for objects like <a object|mother>enemies</a>, bots, buildings or raw materials, which are in front of the bot. It is a simpler version of <c/><a cbot|radar>radar</a>();<n/>.
pl: Korzystając z instrukcji <c/>detect();<n/> można szukać <a object|mother>przeciwników</a>, robotów, budynków oraz nieprzetworzonych materiałów, które znajdują się z przodu robota. Jest to uproszczona wersja instrukcji <c/><a cbot|radar>radar</a>();<n/>.

note: type: Source code
en: <c/>detect ( cat );<n/>
pl: <c/>detect ( kategoria );<n/>

note: type: Plain text
en: Detects the nearest object of the specified <a cbot|category>category</a> being in front of the bot. It is similar to the following instruction:
pl: Wykrywa najbliższy obiekt podanej <a cbot|category>kategorii</a> znajdujący się z przodu robota. Jest podobna do następującej instrukcji:

note: type: Bullet: 'o'
en: <a cbot|category>Category</a> of the objects that should be detected. For example, when you are looking for an ant, write <code>radar(AlienAnt)</code>.
pl: <a cbot|category>Kategoria</a> obiektów, które powinny być wykryte. Na przykład, gdy szukasz mrówki, napisz <code>radar(AlienAnt)</code>.

note: type: Bullet: 'o'
en: <a cbot|array>Array</a> of categories of the objects that should be detected. For example, when you are looking only for grabbers:<c/>
pl: <a cbot|array>Tablica</a> kategorii obiektów, które powinny zostać wykryte. Na przykład, gdy szukasz tylko transporterów:<c/>

note: type: Bullet: 'o'
en: Keyword <format const>Any</format> if you are looking for any object (including even plants and so on).
pl: Użyj słowa <format const>Any</format>, jeśli szukasz dowolnego obiektu (wliczając w to rośliny itp.).

note: type: Plain text
en: <format const>true</format> if the object was found
    <format const>false</format> if the object was not found
pl: <format const>true</format> jeśli obiekt został znaleziony
    <format const>false</format> jeżeli obiektu nie znaleziono

note: type: \b; header
en: Instruction <code>factory</code>
pl: Instrukcja <code>factory</code>

note: type: Plain text
en: <a cbot|category>Category</a> of the robot to construct.
pl: <a cbot|category>Kategoria</a> robota, który ma zostać skonstruowany.

note: type: \t; header
en: program: <code><a cbot|string>string</a></code> (default value: <code>""</code>)
pl: program: <code><a cbot|string>string</a></code> (domyślnie przyjmuje: <code>""</code>)

note: type: Plain text
en: Normally an error stops the program. You can prevent the program from stopping on errors by using the <code><a cbot|errmode>errmode</a>(0)</code> instruction. A value different from zero if an error occurred is then returned by <code>factory()</code>.
    <code>== 0 </code>The construction successfully started
    <code>!= 0 </code>The construction could not be started (e.g. no <a object|titan>Titanium</a> in the factory, the bot is not researched)
pl: Z reguły po wywołaniu błędu program zatrzymuje się. Możesz temu zapobiec, wykorzystując instrukcję <code><a cbot|errmode>errmode</a>(0)</code>. Jeśli wystąpi błąd, funkcja <code>factory()</code> zwróci wartość różną od zera.
    <code>== 0 </code>Rozpoczęto konstrukcję
    <code>!= 0 </code>Nie udało się rozpocząć konstrukcji (np. w fabryce nie ma <a object|titan>kostki tytanu</a>, robot nie został odkryty)

note: type: \b; header
en: Instruction <code>flatspace</code>
pl: Instrukcja <code>flatspace</code>

note: type: Plain text
en: Determines the position of the nearest free space with at least <code>flatmin</code> of flat ground around a given position. Works similar to <c/><a cbot|space>space();</a><n/>. Useful for finding a place for a <a cbot|category>building</a>.
pl: Określa pozycję najbliższego pustego miejsca, wokół którego jest przynajmniej <code>flatmin</code> płaskiego terenu. Działa podobnie do instrukcji <c/><a cbot|space>space();</a><n/>. Przydatna podczas szukania miejsca na <a cbot|category>budynek</a>.

note: type: Plain text
en: Minimum radius of flat ground around the desired position.
pl: Najmniejszy promień płaskiego gruntu wokół żądanej pozycji.

note: type: \b; header
en: Instruction <code>floor</code>
pl: Instrukcja <code>floor</code>

note: type: Source code
en: <c/>floor ( value );<n/>
pl: <c/>floor ( wartość );<n/>

note: type: Plain text
en: Rounds down a number.
pl: Zaokrągla numer w dół.

note: type: Plain text
en: Floor of the value, i.e. the largest integer not greater than <code>value</code>. For example, <code>floor(2.9)</code> is <code>2.00</code>.
pl: Zaokrąglona wartość, tzn. największa liczba całkowita nie większa od <code>wartość</code>. Na przykład, <code>floor(2.9)</code> da w wyniku <code>2.00</code>.

note: type: Plain text
en: Example: count from 1 to 4
    <c/><s/><c/>for ( i = 1 ; i <= 4 ; i++ )
pl: Przykład: liczenie od 1 do 4
    <c/><s/><c/>for ( i = 1 ; i <= 4 ; i++ )

note: type: Plain text
en: Function, simply put, is an instruction created by you.
pl: Mówiąc najprościej, funkcja to instrukcja stworzona przez ciebie.

note: type: \b; header
en: Main function
pl: Funkcja główna

note: type: Plain text
en: You probably already know how to create a function. Every program in CBOT must have a main function, which looks like this:
pl: Pewnie już wiesz, jak się tworzy funkcje. Każdy program napisany w CBOT musi mieć funkcję główną, która wygląda tak:

note: type: Source code
en: extern void object::ProgramName()
    {
    	
    	// instructions
    	
    }
pl: extern void object::NazwaProgramu()
    {
    	
    	// instrukcje
    	
    }

note: type: Plain text
en: With functions you can divide your program into several parts. Each of them will execute a specific task. For example, see the following program:
pl: Funkcje pozwalają na podzielenie programu na kilka części. Każda z nich wykonuje określone zadanie. Poniższy program jest przykładem takiego zastosowania:

note: type: Plain text
en: <code><a cbot|send>send</a></code> and <code><a cbot|wait>wait</a></code> are repeated several times. So it would be a good thing if we created a function that executes these two instructions:
pl: Instrukcje <code><a cbot|send>send</a></code> i <code><a cbot|wait>wait</a></code> są powtarzane po kilka razy. Byłoby więc dobrze stworzyć funkcję, która wykonuje obie te instrukcje:

note: type: Plain text
en: Now the program is much easier to read. It is a good practice to split the program into several functions with self-describing names.
pl: Program jest teraz zdecydowanie czytelniejszy. Dzielenie program na kilka funkcji o nazwach, które je opisują, jest dobrą praktyką.

note: type: \b; header
en: Syntax
pl: Składnia

note: type: Source code
en: result_type FunctionName(optional_parameters)
    {
    	body
    }
pl: typ Nazwa funkcji(opcjonalne_parametry)
    {
    	ciało funkcji
    }

note: type: Plain text
en: Result <a cbot|type>type</a> should be <a cbot/void>void</a> if the function does not give any. Body is just a set of instructions. Function name must be created with the exact same rules applied to <a cbot|var>variables</a>.
pl: Jeśli funkcja nie ma zwracać żadnych danych, <a cbot|type>typem</a> powinien być <a cbot/void>void</a>. Ciało funkcji stanowią instrukcje. Nazwa funkcji musi być stworzona na podstawie reguł tworzenia nazw <a cbot|var>zmiennych</a>.

note: type: \t; header
en: Parameters
pl: Parametry

note: type: Plain text
en: A function can have parameters:
pl: Funkcja może mieć parametry:

note: type: Source code
en: void Example(int a, float x, string s)
    {
    	message(a);
    	message(x);
    	message(s);
    }
pl: void Przyklad(int a, float x, string s)
    {
    	message(a);
    	message(x);
    	message(s);
    }

note: type: Plain text
en: The <code>Example</code> function will receive an <a cbot|int>integer</a> <code>a</code>, a <a cbot|float>floating point number</a> <code>x</code> and a <a cbot|string>string</a> <code>s</code>. Parameters are "passed by value", that is the values of parameter variables in a function are copies of the values the caller specified as variables. If you pass an <code><a cbot|int>int</a></code> to a function, its parameter is a copy of whatever value was being passed as the argument, and the function can change its parameter value without affecting values in the code that invoked the function.
pl: Funkcja <code>Przyklad</code> otrzyma <a cbot|int>liczbę całkowitą</a> <code>a</code>, <a cbot|float>liczbę zmiennoprzecinkową</a> <code>x</code> i <a cbot|string>łańcuch znaków</a> <code>s</code>. Parametry są "przekazywane wartościami", tzn. wartości zmiennych parametrów w funkcji są kopiami wartości, które zostały do niej przekazane. Jeśli przekażesz funkcji wartość typu <code><a cbot|int>int</a></code>, wartość ta zostanie skopiowana do parametru i funkcja będzie mogła na niej operować, nie zmieniając jednocześnie wartości w kodzie, który ją wywołał.

note: type: Plain text
en: If you pass a <a cbot|class>class</a> instance or an <a cbot|array>array</a> as parameter to a function, the function only receives a <a cbot|pointer>reference</a> to the instance or the array. That means if you modify the instance or the array in the function, the instance or the array that has been specified by the caller will be actually modified.
pl: Jeśli przekażesz jako parametr funkcji instancję <a cbot|class>klasy</a> lub <a cbot|array>tablicę</a>, funkcja otrzyma tylko <a cbot|pointer>odniesienie</a> do instancji lub tablicy. Oznacza to, że jeśli zmieniona w funkcji tę instancję lub tablicę, oryginalna instancja lub tablica zostanie również zmieniona.

note: type: \t; header
en: Result
pl: Wynik

note: type: Plain text
en: A function can also return a result with the <code><a cbot|return>return</a></code> instruction. Therefore the function must be declared no longer as <code><a cbot|void>void</a></code> but as an other <a cbot|type>type</a>:
pl: Funkcja może też zwrócić wynik, korzystając z instrukcji <code><a cbot|return>return</a></code>. W takiej sytuacji <a cbot|type>typem</a> funkcji nie może być <code><a cbot|void>void</a></code>:

note: type: Source code
en: float Average(float a, float b)
    {
    	return (a+b)/2;
    }
    
    extern void object::Test( )
    {
    	float value;
    	value = Average(2, 6);
    	message(value);  // will display 4
    }
pl: float Srednia(float a, float b)
    {
    	return (a+b)/2;
    }
    
    extern void object::Test( )
    {
    	float value;
    	value = Srednia(2, 6);
    	message(value);  // zwróci 4
    }

note: type: Plain text
en: Some other examples:
pl: Inne przykłady:

note: type: Source code
en: float Pi()
    {
    	return 3.1415;
    }
    
    string Sign(float a)
    {
    	if (a > 0)  return "positive";
    	if (a < 0)  return "negative";
    	return "null";
    }
pl: float Pi()
    {
    	return 3.1415;
    }
    
    string Sign(float a)
    {
    	if (a > 0)  return "dodatnia";
    	if (a < 0)  return "ujemna";
    	return "null";
    }

note: type: \b; header
en: Overloading
pl: Przeciążanie funkcji

note: type: Plain text
en: You can declare several functions with the same name but different parameters:
pl: Możesz zadeklarować kilka funkcji o tej samej nazwie, ale innych parametrach:

note: type: Source code
en: float Pythagoras(float a, float b)
    {
    	return sqrt((a*a)+(b*b));
    }
    
    float Pythagoras(float a, float b, float c)
    {
    	return sqrt((a*a)+(b*b)+(c*c));
    }
pl: float Pitagoras(float a, float b)
    {
    	return sqrt((a*a)+(b*b));
    }
    
    float Pitagoras(float a, float b, float c)
    {
    	return sqrt((a*a)+(b*b)+(c*c));
    }

note: type: Plain text
en: CBOT will call either the one or the other function depending on the parameters passed. They must be distinguishable, i.e. you can't declare two functions with the same name and parameter types in the exact same order, e.g. declaring <code>int Pythagoras(float b, float a)</code> will result in error. Note that result type does not matter.
pl: CBOT wywoła jedną z funkcji w zależności od przekazanych parametrów. Funkcje muszą być odróżnialne, tzn. nie możesz zadeklarować dwóch funkcji o takiej samej nazwie i typach parametrów w tej samej kolejności. Odnosząc się do przykładu: zadeklarowanie funkcji <code>int Pythagoras(float b, float a)</code> wywoła błąd. Zwróć uwagę, że typ wyniku, jaki zwraca funkcja, nie ma znaczenia.

note: type: Plain text
en: Declaring a function as a part of the <a cbot|object>object</a> namespace gives it access to <code><a cbot|this>this</a></code> <a cbot|pointer>pointer</a>, in other words, to all available properties of the robot which the program is run on.
pl: Deklaracja funkcji w przestrzeni nazw <a cbot|object>object</a> daje jej dostęp do <a cbot|pointer>wskaźnika</a> <code><a cbot|this>this</a></code>. Innymi słowy, funkcja ma wtedy dostęp do wszystkich właściwości robota, na którym jest uruchomiona.

note: type: Source code
en: void object::Example()
    {
    	message(this.category);
    }
pl: void object::Przyklad()
    {
    	message(this.category);
    }

note: type: Plain text
en: Use this type for variables that contain the characteristics of an object, be it a bot, a building, some raw material, an enemy, etc. Here are all properties of an object:
pl: Użyj tego typu dla zmiennych, które zawierają informacje o obiekcie, niezależnie od tego, czy jest to robot, budynek, materiał, przeciwnik itp. Obiekty mają następujące właściwości:

note: type: Plain text
en: <code><a cbot|int>int</a>    object.category     </code><a cbot|category>Category</a> of the object
    <code><a cbot|point>point</a>  object.position     </code>Position of the object (x,y,z)
    <code><a cbot|float>float</a>  object.orientation  </code>Orientation of the object (0..360)
    <code><a cbot|float>float</a>  object.pitch        </code>Forward/backward angle of the object
    <code><a cbot|float>float</a>  object.roll         </code>Right/left angle of the object 
    <code><a cbot|float>float</a>  object.energyLevel  </code>Energy level (0..1)
    <code><a cbot|float>float</a>  object.shieldLevel  </code>Shield level (0..1)
    <code><a cbot|float>float</a>  object.temperature  </code>Jet temperature (0..1)
    <code><a cbot|float>float</a>  object.altitude     </code>Altitude above ground
    <code><a cbot|float>float</a>  object.lifeTime     </code>Lifetime of the object
    <code>object object.energyCell   </code>Power cell on the bot
    <code>object object.load         </code>Object carried by the bot
    <code><a cbot|int>int</a>    object.team         </code>The object's team (see <a battles>code battles</a>)
    <code><a cbot|point>point</a>  object.velocity     </code>Velocity of the object
pl: <code><a cbot|int>int</a>    object.category     </code><a cbot|category>Kategoria</a> obiektu
    <code><a cbot|point>point</a>  object.position     </code>Współrzędne obiektu (x,y,z)
    <code><a cbot|float>float</a>  object.orientation  </code>Kierunek obiektu (0..360)
    <code><a cbot|float>float</a>  object.pitch        </code>Pochylenie obiektu w przód lub w tył
    <code><a cbot|float>float</a>  object.roll         </code>Pochylenie obiektu w lewo lub w prawo
    <code><a cbot|float>float</a>  object.energyLevel  </code>Poziom energii (0..1)
    <code><a cbot|float>float</a>  object.shieldLevel  </code>Poziom osłony (0..1)
    <code><a cbot|float>float</a>  object.temperature  </code>Temperatura silnika (0..1)
    <code><a cbot|float>float</a>  object.altitude     </code>Wysokość nad poziomem gruntu
    <code><a cbot|float>float</a>  object.lifeTime     </code>Czas istnienia obiektu
    <code>object object.energyCell   </code>Ogniwo elektryczne robota
    <code>object object.load         </code>Obiekt trzymany przez robota
    <code><a cbot|int>int</a>    object.team         </code>Drużyna, do której należy obiekt (zobacz <a battles>programobitwy</a>)
    <code><a cbot|point>point</a>  object.velocity     </code>Prędkość obiektu

note: type: Plain text
en: Also, some objects have additional methods (instructions). See them in <a cbot>the main list</a> in the <c/>"Instructions specific for some objects" section.
pl: Niektóre obiekty mają dodatkowe metody (instrukcje). Możesz je sprawdzić w sekcji <c/>"Instrukcje charakterystyczne dla pewnych obiektów" <a cbot>główne listy obiektów</a>

note: type: Plain text
en: The <n/><a cbot|category>category</a> of an object allows you to know what it is, f. ex. what kind of bot, building, enemy, etc.
pl: <n/><a cbot|category>Kategoria</a> obiektu pozwala się się dowiedzieć, czym on jest, tzn. jaki to rodzaj robota, budynku, przeciwnika, itp.

note: type: Plain text
en: The bot's team. Used in <a battles>code battles</a>. If the object has no team assigned (e.g. in no team-based levels, the object being a resource), this is equal to <code>0</code>.
pl: Drużyna robota. Ma zastosowanie w <a battles>programobitwach</a>. Jeśli obiekt nie należy do żadnej drużyny (np. gdy obiektem jest surowiec lub gdy obecny poziom nie jest programobitwą), wartość ta jest równa <code>0</code>.

note: type: Plain text
en: Current velocity of the object. Should be treated as a three-dimensional vector.
pl: Aktualna prędkość obiektu. Powinna być traktowana jako wektor w przestrzeni trójwymiarowej.

note: type: \b; header
en: Instruction <code>pencolor</code>
pl: Instrukcja <code>pencolor</code>

note: type: Plain text
en: The instruction <c/>pencolor();<n/> instructs the bot to change the color of the pencil.
pl: Instrukcja <c/>pencolor();<n/> rozkazuje robotowi zmianę koloru pisaka.

note: type: \t; header
en: color: <code><a cbot|int>int</a></code> (default value: <code>Black</code>)
pl: kolor: <code><a cbot|int>int</a></code> (domyślna wartość: <code>Black</code> (czarny))

note: type: Plain text
en: <a cbot|colors>Color name</a>.
pl: <a cbot|colors>Nazwa koloru</a>.

note: type: Plain text
en: Normally an error stops the program. You can prevent the program from stopping on errors by using the <code><a cbot|errmode>errmode</a>(0)</code> instruction. A value different from zero if an error occurred is then returned by <c/>pencolor();<n/>.
    <code>== 0 </code>The color was changed
    <code>!= 0 </code>The instruction did not work
pl: Z reguły po wywołaniu błędu program zatrzymuje się. Możesz temu zapobiec, wykorzystując instrukcję <code><a cbot|errmode>errmode</a>(0)</code>. Jeśli wystąpi błąd, funkcja <code>pencolor()</code> zwróci wartość różną od zera.
    <code>== 0 </code>Kolor został zmieniony
    <code>!= 0 </code>Nie udało się wykonać instrukcji

note: type: \b; header
en: Instruction <code>pendown</code>
pl: Instrukcja <code>pendown</code>

note: type: Source code
en: <c/>pendown ( color, width );<n/>
pl: <c/>pendown ( kolor, grubosc );<n/>

note: type: Plain text
en: The instruction <c/>pendown();<n/> instructs the bot to have the pen down, so it starts drawing.
pl: Instrukcja <c/>pendown();<n/> rozkazuje robotowi opuścić pisak, aby mógł rysować.

note: type: \t; header
en: width: <code><a cbot|float>float</a></code> (default value: <code>0.5</code>)
pl: grubosc: <code><a cbot|float>float</a></code> (domyślna wartość: <code>0.5</code>)

note: type: Plain text
en: Width of the pen. The width cannot be higher than <code>1.0</code> and cannot be lower than <code>0.0</code>. Passing a higher value will result in the width being the highest possible and passing a lower value will result in the width being the lowest possible.
pl: Grubość pisaka. Nie może być większa od <code>1.0</code> i mniejsza od <code>0.0</code>. Przekazanie większej wartości spowoduje, że pisak będzie najgrubszy, a mniejszej - że będzie najcieńszy.

note: type: Plain text
en: Normally an error stops the program. You can prevent the program from stopping on errors by using the <code><a cbot|errmode>errmode</a>(0)</code> instruction. A value different from zero if an error occurred is then returned by <c/>pendown();<n/>.
    <code>== 0 </code>The pen is now down
    <code>!= 0 </code>The instruction did not work
pl: Z reguły po wywołaniu błędu program zatrzymuje się. Możesz temu zapobiec, wykorzystując instrukcję <code><a cbot|errmode>errmode</a>(0)</code>. Jeśli wystąpi błąd, funkcja <code>pendown()</code> zwróci wartość różną od zera.
    <code>== 0 </code>Pisak został opuszczony
    <code>!= 0 </code>Nie udało się wykonać instrukcji

note: type: \b; header
en: Instruction <code>penup</code>
pl: instrukcja <code>penup</code>

note: type: Plain text
en: The instruction <c/>penup();<n/> instructs the bot to have the pen up, so it stops drawing. The pen is up by default, so it should be used only after using <code><a cbot|pendown>pendown</a></code>.
pl: Instrukcja <c/>penup();<n/> rozkazuje robotowi podniesienie pisaka, aby już nie rysował. Pisak jest domyślnie podniesiony, więc instrukcja ta powinna być używana tylko po wcześniejszym wywołaniu instrukcji <code><a cbot|pendown>pendown</a></code>.

note: type: Plain text
en: Normally an error stops the program. You can prevent the program from stopping on errors by using the <code><a cbot|errmode>errmode</a>(0)</code> instruction. A value different from zero if an error occurred is then returned by <c/>penup();<n/>.
    <code>== 0 </code>The pen is now up
    <code>!= 0 </code>The instruction did not work
pl: Z reguły po wywołaniu błędu program zatrzymuje się. Możesz temu zapobiec, wykorzystując instrukcję <code><a cbot|errmode>errmode</a>(0)</code>. Jeśli wystąpi błąd, funkcja <code>penup()</code> zwróci wartość różną od zera.
    <code>== 0 </code>Pisak jest podniesiony
    <code>!= 0 </code>Instrukcja nie została wykonana

note: type: \b; header
en: Instruction <code>penwidth</code>
pl: Instrukcja <code>penwidth</code>

note: type: Source code
en: <c/>penwidth ( color );<n/>
pl: <c/>penwidth ( kolor );<n/>

note: type: Plain text
en: The instruction <c/>penwidth();<n/> instructs the bot to change the width of the pencil.
pl: Instrukcja <c/>penwidth();<n/> rozkazuje robotowi zmianę grubości pisaka.

note: type: Plain text
en: Normally an error stops the program. You can prevent the program from stopping on errors by using the <code><a cbot|errmode>errmode</a>(0)</code> instruction. A value different from zero if an error occurred is then returned by <c/>penwidth();<n/>.
    <code>== 0 </code>The width was changed
    <code>!= 0 </code>The instruction did not work
pl: Z reguły po wywołaniu błędu program zatrzymuje się. Możesz temu zapobiec, wykorzystując instrukcję <code><a cbot|errmode>errmode</a>(0)</code>. Jeśli wystąpi błąd, funkcja <code>penwidth()</code> zwróci wartość różną od zera.
    <code>== 0 </code>Zmieniono grubość
    <code>!= 0 </code>Nie udało się wykonać instrukcji

note: type: \b; header
en: Instruction <code>pow</code>
pl: Instrukcja <code>pow</code>

note: type: Plain text
en: Base.
pl: Podstawa.

note: type: Plain text
en: Exponent.
pl: Wykładnik.

note: type: Plain text
en: x to the y (x raised to the yth power).
pl: x do y-tej (x podniesione do potęgi y)

note: type: Source code
en: <c/>radar ( cat, angle, focus, min, max, sens, filter );<n/>
pl: <c/>radar ( kategoria, kat, focus, min, max, sens, filtr );<n/>

note: type: Bullet: 'o'
en: <a cbot|array>Array</a> of categories of the objects that should be detected. For example, when you are looking only for grabbers:
pl: <a cbot|array>Tablica</a> kategorii obiektów, które mają być wykryte. Na przykład, jeśli szukasz tylko transporterów:

note: type: Bullet: 'o'
en: Keyword <format const>Any</format> if you are looking for any object (including even plants and so on). Filters may be useful to use with this keyword.
pl: Użyj słowa <format const>Any</format>, jeśli szukasz dowolnego obiektu (wliczając w to rośliny itp.). Może się to przydać przy tworzeniu filtrów.

note: type: \t; header
en: angle: <code><a cbot|float>float</a></code> (default value: <code>0</code>)
pl: kat: <code><a cbot|float>float</a></code> (domyślna wartość: <code>0</code>)

note: type: \t; header
en: focus: <code><a cbot|float>float</a></code> (default value: <code>360</code>)
pl: focus: <code><a cbot|float>float</a></code> (domyślna wartość: <code>360</code>)

note: type: \t; header
en: max: <code><a cbot|float>float</a></code> (default value: <code>1000</code>)
pl: max: <code><a cbot|float>float</a></code> (domyślna wartość: <code>1000</code>)

note: type: \t; header
en: sens: <code><a cbot|float>float</a></code> (default value: <code>1</code>)
pl: sens: <code><a cbot|float>float</a></code> (domyślna wartość: <code>1</code>)

note: type: \t; header
en: filter: <code><a cbot|int>int</a></code> (default value: <code><format const>FilterNone</format></code>)
pl: filtr: <code><a cbot|int>int</a></code> (domyślna wartość: <code><format const>FilterNone</format></code>)

note: type: Plain text
en: Determines which type of objects should be detected. Especially useful in use with an <a cbot|array>array</a> or <format const>Any</format>. The following filters are available:
pl: Określa, które typy obiektów powinny być wykrywalne. Szczególnie użyteczne przy używaniu razem z <a cbot|array>tablicami</a> lub słowem <format const>Any</format>. Dostępne są następujące filtry:

note: type: Plain text
en: <code><format const>FilterNone</format>        </code>Detects everything (default)
    <code><format const>FilterOnlyLanding</format> </code>Detects only objects being on the ground
    <code><format const>FilterOnlyFlying</format>  </code>Detects only objects not being on the ground
    <code><format const>FilterFriendly</format>    </code>Detects only allies (objects in the same team)
    <code><format const>FilterEnemy</format>       </code>Detects only enemies (objects in an other team except neutral)
    <code><format const>FilterNeutral</format>     </code>Detects only neutral objects (e.g. resources)
pl: <code><format const>FilterNone</format>        </code>Wykrywa wszystko (domyślna wartość)
    <code><format const>FilterOnlyLanding</format> </code>Wykrywa tylko obiekty znajdujące się na ziemi
    <code><format const>FilterOnlyFlying</format>  </code>Wykrywa tylko obiekty nieznajdujące się na ziemi
    <code><format const>FilterFriendly</format>    </code>Wykrywa tylko sojuszników (obiekty z tej samej drużyny)
    <code><format const>FilterEnemy</format>       </code>Wykrywa tylko przeciwników (obiekty z innej drużyny, bez obiektów neutralnych)
    <code><format const>FilterNeutral</format>     </code>Wykrywa tylko obiekty neutralne (np. surowce)

note: type: Plain text
en: The last three are mainly useful in <a battles>code battles</a>. You can also pass a team ID to search only for objects from a specific team. Attention: you should use <format const>FilterNeutral</format> instead of <code>0</code> or else it will not work.
pl: Ostatnie trzy są używane głównie w <a battles>programobitwach</a>. Możesz również przekazać numer ID drużyny by znaleźć tylko obiekty określonej drużyny. Uwaga: powinieneś użyć <format const>FilterNeutral</format> zamiast <code>0</code>, w przeciwnym razie to nie zadziała.

note: type: Plain text
en: Filters and IDs can be mixed using bitwise OR operator <code>|</code>, for example <c/>radar(Any, 0, 360, 0, 1000, 1, 2 | FilterOnlyLanding);<n/> will only detect an object from team <code>2</code> that is on the ground. Attention: you can specify only one team ID at once, but you can specify several filters at once.
pl: Filtry i numery ID mogą być używane jednocześnie używając operatora logicznego OR <code>|</code>, na przykład <c/>radar(Any, 0, 360, 0, 1000, 1, 2 | FilterOnlyLanding);<n/> wykryje wyłącznie obiekty z drużyny <code>2</code> znajdujące się na ziemi. Uwaga: możesz określić numer ID tylko jednej drużyny naraz, ale możesz używać wielu filtrów jednocześnie.

note: type: \b; header
en: Instruction <code>rand</code>
pl: Instrukcja <code>rand</code>

note: type: Plain text
en: Pseudorandom number between 0 and 1 (including 0, but excluding 1).
pl: Pseudolosowa liczba od 0 do 1 (włączając w to 0, ale bez 1).

note: type: \b; header
en: Instruction <code>research</code>
pl: Instrukcja <code>research</code>

note: type: \t; header
en: type: <code><a cbot|int>int</a></code>
pl: typ: <code><a cbot|int>int</a></code>

note: type: Plain text
en: Normally an error stops the program. You can prevent the program from stopping on errors by using the <code><a cbot|errmode>errmode</a>(0)</code> instruction. A value different from zero if an error occurred is then returned by <code>research()</code>.
    <code>== 0 </code>The research successfully started
    <code>!= 0 </code>The research could not be started (e.g. the research is disabled in the level, no power cell)
pl: Z reguły po wywołaniu błędu program zatrzymuje się. Możesz temu zapobiec, wykorzystując instrukcję <code><a cbot|errmode>errmode</a>(0)</code>. Jeśli wystąpi błąd, funkcja <code>research()</code> zwróci wartość różną od zera.
    <code>== 0 </code>Prace badawcze zostały pomyślnie rozpoczęte
    <code>!= 0 </code>Nie udało się rozpocząć prac badawczych (np. wybrana technologia jest zablokowana na tym poziomie, nie ma ogniwa elektrycznego)

note: type: \b; header
en: Instruction <code>researched</code>
pl: Instrukcja <code>researched</code>

note: type: \b; header
en: Value <code>Research names</code>
pl: Wartość <code>Nazwy badań</code>

note: type: Plain text
en: Research names represent the types of available researches in the CBOT language. You can use them to control <a object|research>ResearchCenter</a> by passing them to appropriate instructions (e.g. <a cbot|research>research</a>, <a cbot|canresearch>canresearch</a>, <a cbot|researched>researched</a>).
pl: Nazwy badań reprezentują typy badań dostępnych w języku CBOT. Możesz użyć ich do sterowania <a object|research>Centrum Badawczym</a> podając je jako parametr odpowiedniej instrukcji (np. <a cbot|research>research</a>, <a cbot|canresearch>canresearch</a>, <a cbot|researched>researched</a>).

note: type: Plain text
en: In a program, research names are always displayed on a <format const>red background</format>. If a research name is not highlighted in red, it is misspelled. Caps and lower cases should be kept as is.
pl: W programie, nazwy badań są zawsze pokazywane na <format const>czerwonym tle</format>. Jeśli program badawczy nie ma takiego tła, do jego nazwy wkradła się literówka. Nie należy zmieniać wielkości liter.

note: type: Plain text
en: Below are the different research names available.
pl: Poniżej podane są różne nazwy badań do przeprowadzenia:

note: type: \t; header
en: Done by <a object|research>ResearchCenter</a>:
pl: Badania przeprowadzane przez <a object|research>Centrum Badawcze</a>:

note: type: \t; header
en: Done by <a object|labo>AutoLab</a>:
pl: Badania przeprowadzane przez <a object|labo>Laboratorium</a>:

note: type: \t; header
en: Impossible to research:
pl: Badania niemożliwe do przeprowadzenia:

note: type: \b; header
en: Instruction <code>round</code>
pl: Instrukcja <code>round</code>

note: type: Plain text
en: Rounds a number.
pl: Zaokrągla liczbę.

note: type: Plain text
en: Rounded <code>value</code>. For example, <code>round(2.5)</code> is <code>3.0</code>, whereas <code>round(2.4)</code> is <code>2.0</code>.
pl: Zaokrąglona <code>wartość</code>. Na przykład, <code>round(2.5)</code> zwróci <code>3.0</code>, gdy <code>round(2.4)</code> zwróci <code>2.0</code>.

note: type: Plain text
en: <a cbot|trunc>trunc</a>, <a cbot|floor>floor</a>, <a cbot|ceil>ceil</a>, <a cbot>programming</a>, <a cbot|type>types</a> and <a cbot|expr>expressions</a>.
pl: <a cbot|trunc>trunc</a>, <a cbot|floor>floor</a>, <a cbot|ceil>ceil</a>, <a cbot>programowanie</a>, <a cbot|type>typy</a> i <a cbot|expr>wyrażenia</a>.

note: type: Plain text
en: Detects the object of the given category that is closest to the given position. Similar to <c/><a cbot|radar>radar();</a><n/>, but can search starting from the specific point instead of the actual bot's position.
pl: Wykrywa obiekt danej kategorii znajdujący się najbliżej określonej pozycji. Podobny do instrukcji <c/><a cbot|radar>radar();</a><n/>, ale może szukać od dowolnej pozycji zamiast obecnej pozycji robota.

note: type: Bullet: 'o'
en: <a cbot|category>Category</a> of the objects that should be detected. For example, when you are looking for an ant, write <code>search(AlienAnt)</code>.
pl: <a cbot|category>Kategoria</a> obiektu które powinny zostać wykryte. Na przykład, gdy szukasz mrówek, napisz <code>search(AlienAnt)</code>.

note: type: Bullet: 'o'
en: <a cbot|array>Array</a> of categories of the objects that should be detected. For example, when you are looking only for grabbers, starting from a certain point in the level:
pl: <a cbot|array>Tablica</a> kategorii obiektów które powinny być wykryte. Na przykład, gdy chcesz znaleźć tylko transportery, zaczynając od określonego punktu w danym poziomie:

note: type: \t; header
en: position: <code><a cbot|point>point</a></code> (default value: <code><a cbot|this>this</a>.<a cbot|object>position</a></code>)
pl: pozycja: <code><a cbot|point>point</a></code> (domyślna wartość: <code><a cbot|this>this</a>.<a cbot|object>position</a></code>)

note: type: \b; header
en: Instruction <code>sin</code>
pl: Instrukcja <code>sin</code>

note: type: Source code
en: <c/>sin ( angle );<n/>
pl: <c/>sin ( kąt );<n/>

note: type: Plain text
en: Sine of the angle.
pl: Sinus kąta.

note: type: \b; header
en: Instruction <code>sqrt</code>
pl: Instrukcja <code>sqrt</code>

note: type: Source code
en: <c/>sqrt ( value );<n/>
pl: <c/>sqrt ( wartość );<n/>

note: type: Plain text
en: Non-negative number.
pl: Nieujemna liczba.

note: type: Plain text
en: Square root of the value.
pl: Pierwiastek kwadratowy wartości.

note: type: \b; header
en: Instructions <code>switch</code>, <code>case</code> and <code>default</code>
pl: Instrukcje <code>switch</code>, <code>case</code> i <code>default</code>

note: type: Plain text
en: With the instruction <code>switch() {}</code> you can execute a proper set of instructions (a case) basing on some value.
pl: Za pomocą instrukcji <code>switch() {}</code> możesz wykonać określony zestaw instrukcji, zależny od podanej wartości.

note: type: Plain text
en: See the following <a cbot|function>function</a>: the bot will be <a cbot|wait>waiting</a> a proper amount of time for a certain task to be completed:
pl: Spójrz na poniższą <a cbot|function>funkcję</a>: bot będzie <a cbot|wait>czekać</a> odpowiednią ilość czasu na ukończenie zadania:

note: type: Source code
en: public void WaitForTaskCompleted(object building)
    {
    	int cat = building.category;
    	<a cbot|if>if</a> (cat == Converter) wait(15);
    	else if (cat == BotFactory) wait(15);
    	else if (cat == PowerPlant) wait(12);
    	else message("Undefined wait time", DisplayError);
    }
pl: public void CzekajNaUkonczenieZadania(object budynek)
    {
    	int cat = budynek.category;
    	<a cbot|if>if</a> (cat == Converter) wait(15);
    	else if (cat == BotFactory) wait(15);
    	else if (cat == PowerPlant) wait(12);
    	else message("Nie zdefiniowano czasu oczekiwania", DisplayError);
    }

note: type: Plain text
en: This function can be also written using the <code>switch() {}</code> instruction:
pl: Ta funkcja może być również napisana przy użyciu instrukcji <code>switch() {}</code>:

note: type: Source code
en: public void WaitForTaskCompleted(object building)
    {
    	switch (building.category)
    	{
    		case Converter: wait(15); break;
    		case BotFactory: wait(15); break;
    		case PowerPlant: wait(12); break;
    		default: message("Undefined wait time", DisplayError);
    	}
    }
pl: public void CzekajNaUkonczenieZadania(object budynek)
    {
    	switch (budynek.category)
    	{
    		case Converter: wait(15); break;
    		case BotFactory: wait(15); break;
    		case PowerPlant: wait(12); break;
    		default: message("Nie zdefiniowano czasu oczekiwania", DisplayError);
    	}
    }

note: type: Plain text
en: Which way to write this kind of choice structures, is a matter of taste.
pl: Sposób pisania tego typu struktur jest kwestią osobistego gustu.

note: type: Plain text
en: You can also make cases like this:
pl: Możesz również tworzyć warunki w następujący sposób:

note: type: Source code
en: switch (building.category)
    {
    	case Converter:
    	case BotFactory:
    		wait(15); break;
    	case PowerPlant: wait(12); break;
    	default: message("Undefined wait time", DisplayError);
    }
pl: switch (budynek.category)
    {
    	case Converter:
    	case BotFactory:
    		wait(15); break;
    	case PowerPlant: wait(12); break;
    	default: message("Nie zdefiniowano czasu oczekiwania", DisplayError);
    }

note: type: Plain text
en: <a object|convert>Converter</a> and <a object|factory>bot factory</a> have the same waiting time, so in order to not write the same instructions twice, we made multiple cases run the same code. In fact, all code after the highest case used will be executed if we do not <code><a cbot|break>break</a></code> it.
pl: <a object|convert>Huta</a> i <a object|factory>fabryka robotów</a> mają ten sam czas działania, więc by nie pisać dwa razy tego samego kodu sprawiliśmy, by różne wartości uruchamiały ten sam kod. Zauważ, że cały kod po pierwszej wartości zostanie wykonany jeśli nie umieścimy instrukcji <code><a cbot|break>break</a></code>.

note: type: Source code
en: <c/>switch ( value )
    {
    	case value1: instructions1
    	case value2: instructions2
    	...
    	case valueN: instructionsN
    	default: instructionsDefault
    }
pl: <c/>switch ( wartość )
    {
    	case wartość1: instrukcje1
    	case wartość2: instrukcje2
    	...
    	case wartośćN: instrukcjeN
    	default: instrukcjeDomyślne
    }

note: type: Plain text
en: With this conditional structure you can execute <code>instructions1</code> or <code>instructions2</code> ... or <code>instructionsN</code> or <code>instructionsDefault</code> depending on the <code>value</code>.
pl: Dzięki tej warunkowej strukturze możesz wykonywać <code>instrukcje1</code> lub <code>instrukcje2</code> ... lub <code>instrukcjeN</code> lub <code>instrukcjedomyslne</code>, w zależności od <code>wartości</code>.

note: type: Plain text
en: If the <code>value</code> is equal to <code>value1</code>, <code>instructions1</code> to <code>N</code> (including <code>instructionsDefault</code>) are executed.
    If the <code>value</code> is equal to <code>value2</code>, <code>instructions2</code> to <code>N</code> (including <code>instructionsDefault</code>) are executed.
    And so on.
    If the <code>value</code> is equal to <code>valueN</code>, <code>instructionsN</code> and <code>instructionsDefault</code> are executed.
    If the <code>value</code> is not equal to any value in the given cases, <code>instructionsDefault</code> are executed.
pl: Jeśli <code>wartość</code> jest równa <code>wartość1</code>, bloki od <code>instrukcje1</code> do <code>N</code> (włącznie z <code>instrukcjedomyślne</code>) zostają wykonane.
    Jeśli <code>wartość</code> jest równa <code>wartość2</code>, bloki od <code>instrukcje2</code> do <code>N</code> (włącznie z <code>instrukcjedomyślne</code>) zostają wykonane.
    I tak dalej.
    Jeśli <code>wartość</code> jest równa <code>wartośćN</code>, bloki <code>instrukcjeN</code> i <code>instrukcjedomyslne</code> zostają wykonane.
    Jeśli <code>wartość</code> nie jest równa żadnej z powyższych wartości, tylko blok <code>instrukcjedomyslne</code> zostanie wykonany.

note: type: Plain text
en: You can exit from the the <code>switch() {}</code> instruction using <code><a cbot|break>break</a></code>.
pl: Możesz zakończyć działanie instrukcji <code>switch() {}</code> używając <code><a cbot|break>break</a></code>.

note: type: Plain text
en: Do not put a <a cbot|term>semicolon</a> at the end of the <code>switch ( ) { }</code> instruction.
pl: Nie umieszczaj <a cbot|term>średnika</a> na końcu instrukcji <code>switch ( ) { }</code>

note: type: \b; header
en: Instruction <code>takeoff</code>
pl: Instrukcja <code>takeoff</code>

note: type: Plain text
en: Normally an error stops the program. You can prevent the program from stopping on errors by using the <code><a cbot|errmode>errmode</a>(0)</code> instruction. A value different from zero if an error occurred is then returned by <code>takeoff()</code>.
    <code>== 0 </code>Spaceship takes off
    <code>!= 0 </code>Spaceship could not take off (e.g. mission is not finished yet)
pl: Zwykle wystąpienie błędu powoduje zatrzymanie programu. Można wyłączyć zatrzymywanie się programu w przypadku wystąpienia błędu, używając instrukcji <code><a cbot|errmode>errmode</a>(0)</code>. Wtedy w przypadku wystąpienia błędu instrukcja <c/>takeoff();<n/> zwraca w wyniku wartość różną od zera.
    <code>== 0 </code>Statek kosmiczny wystartował
    <code>!= 0 </code>Statek kosmiczny nie wystartował (np. misja nie została jeszcze ukończona)

note: type: \b; header
en: Instruction <code>tan</code>
pl: Instrukcja <code>tan</code>

note: type: Source code
en: <c/>tan ( angle );<n/>
pl: <c/>tan ( kąt );<n/>

note: type: Plain text
en: Angle in degrees (except multiples of 90).
pl: Kąt w stopniach (oprócz wielokrotności 90).

note: type: Plain text
en: Tangent of the angle.
pl: Tangens kąta.

note: type: \b; header
en: Instruction <code>trunc</code>
pl: Instrukcja <code>trunc</code>

note: type: Source code
en: <c/>trunc ( value );<n/>
pl: <c/>trunc ( wartość );<n/>

note: type: Plain text
en: Truncation is a method of approximating a decimal number by dropping all decimal places past a certain point without rounding. For positive numbers, it works like the <c/><a cbot|floor>floor();</a><n/> function, and for negative numbers, it works like the <c/><a cbot|ceil>ceil();</a><n/> function. It can be said that it rounds towards zero.
pl: Obcinanie jest metodą określania liczby dziesiętnej przez usunięcie wszystkich cyfr od określonego miejsca bez zaokrąglania. Dla liczb dodatnich, działa to jak funkcja <c/><a cbot|floor>floor();</a><n/>, a dla liczb ujemnych działa jak funkcja <c/><a cbot|ceil>ceil();</a><n/>. Można powiedzieć że funkcja ta zaokrągla w stronę zera.

note: type: Plain text
en: Truncated <code>value</code>. For example, <code>trunc(-2.5)</code> is <code>-2.00</code>.
pl: Obcięta <code>wartość</code>. Na przykład, <code>trunc(-2.5)</code> zwróci <code>-2.00</code>.

note: type: Plain text
en: In a program, categories are always displayed like that: <format const>category</format>. If a category isn't highlighted, it is misspelled. Caps and lower cases should be kept as is.
pl: W edytorze kodu wszystkie kategorie są wyświetlane w następujący sposób: <format const>kategoria</format>. Jeśli kategoria nie jest podświetlona, oznacza to, że nie jest prawidłowo wpisana. Wielkie i małe litery mają znaczenie.

note: type: Plain text
en: In a program, the name of a type is always displayed like that: <format type>type</format>. If the name of a type is not highlighted, this means that the name is misspelled. Type names are always written with lower case characters. Here is a list of the different types:
pl: W edytorze kodu wszystkie typy są wyświetlane w następujący sposób: <format const>typ</format>. Jeśli nazwa typu nie jest podświetlona, oznacza to, że nie jest prawidłowo wpisana. Nazwy typów zawsze są pisane z małych liter. Poniżej znajduje się lista wszystkich dostępnych typów:

note: type: \b; header
en: Instruction <code>produce</code>
pl: Instrukcja <code>produce</code>

note: type: Source code
en: <c/>produce ( position, orientation, category, program, power );<n/>
pl: <c/>produce ( pozycja, kierunek, kategoria, program, moc );<n/>

note: type: Source code
en: <c/>produce ( category, power );<n/>
pl: <c/>produce ( kategoria, moc );<n/>

note: type: Plain text
en: Immediately creates an <a cbot|category>object</a>.
pl: Natychmiastowo tworzy <a cbot|category>obiekt</a>.

note: type: \t; header
en: orientation: <code><a cbot|float>float</a></code>
pl: kierunek: <code><a cbot|float>float</a></code>

note: type: Plain text
en: Orientation (angle) of the object.
pl: Kierunek (wyrażony kątem) ustawienia obiektu.

note: type: Plain text
en: <a cbot|category>Category</a> of the object.
pl: <a cbot|category>Kategoria</a> obiektu.

note: type: Plain text
en: Energy level.
pl: Poziom energii.

note: type: \t; header
en: Return: <code><a cbot|void>void</a></code>
pl: Zwraca: <code><a cbot|void>void</a></code>

note: type: Plain text
en: Nothing.
pl: Nic.

note: type: \b; header
en: Example usage
pl: Przykładowe użycie:

note: type: Plain text
en: It is used by <a object|mother>AlienQueen</a> to produce <a object|egg>AlienEggs</a>.
pl: Jest używane przez <a object|mother>królową</a> do produkowania <a object|egg>jaj obcych</a>.

note: type: Plain text
en: Where object will be created. The second syntax creates the object at the current bot's position.
pl: Gdzie obiekt ma zostać stworzony. Druga sposób zapisu tworzy go w miejscu robota.

note: type: Plain text
en: Program for the object. Will have effect only for programmable objects like robots or aliens.
pl: Program dla obiektu. Ma zastosowanie tylko przy obiektach, które można zaprogramować, tzn. robotach i obcych.

note: type: Plain text
en: Expressions are used for various calculations with many different variables, which return the desired result. What distinguishes them from standard instructions are operators, which are described below.
pl: Wyrażenia używane są do wykonywania różnych obliczeń z różnymi zmiennymi w celu otrzymania żądanego wyniku. Od standardowych instrukcji odróżniają je opisane poniżej operatory.

note: type: \b; header
en: Binary operations
pl: Operacje binarne

note: type: Plain text
en: Assuming that <code>a</code>, <code>b</code> can be values of declared and initialized variables of types <code>t1</code> and <code>t2</code>, the binary operations can be described as follows:
pl: Przyjmijmy, że <code>a</code>, <code>b</code> są wartościami zadeklarowanych i zainicjalizowanych zmiennych typów <code>t1</code> i <code>t2</code>, działania binarne można opisać w następujący sposób:

note: type: Plain text
en: Where <code>r</code> is the result of the operation and <code>op</code> is a binary operator which works with values of types <code>t1</code> and <code>t2</code>.
pl: Gdzie <code>r</code> jest wynikiem operacji, a <code>op</code> jest operatorem binarnym, który działa z wartościami typów <code>t1</code> i <code>t2</code>.

note: type: \t; header
en: Order of operations
pl: Kolejność działań

note: type: Plain text
en: Let <code>a op1 b op2 c</code> be a legal expression, then the following rules apply:
pl: Niech <code>a op1 b op2 c</code> będzie prawidłowym wyrażeniem, wtedy miejsce mają następujące reguły:

note: type: Bullet: 'o'
en: If <code>op1 == op2</code> or <code>op1</code> is as strong as <code>op2</code> or <code>op1</code> is stronger than <code>op2</code>, first calculate <code>a op1 b</code> and store its result in a temporary variable <code>r</code>, then calculate <code>r op2 c</code>, which is the final result of the expression.
pl: Jeśli <code>op1 == op2</code> lub <code>op1</code> ma ten sam priorytet co <code>op2</code>, lub <code>op1</code> ma wyższy priorytet <code>op2</code>, najpierw oblicz <code>a op1 b</code> i przechowaj wynik działania w tymczasowej zmiennej <code>r</code>, a następnie oblicz <code>r op2 c</code>, co jest finałowym wynikiem wyrażenia.

note: type: Bullet: 'o'
en: If <code>op1</code> is weaker than <code>op2</code>, first calculate <code>b op2 c</code> and store its result in a temporary variable <code>r</code>, then calculate <code>a op1 r</code>, which is the final result of the expression.
pl: Jeśli <code>op1</code> ma mniejszy priorytet niż <code>op2</code>, najpierw oblicz <code>b op2 c</code> i przechowaj wynik działania w tymczasowej zmiennej <code>r</code>, a następnie oblicz <code>a op1 r</code>, co jest finałowym wynikiem wyrażenia.

note: type: Plain text
en: Note: an operation can be made stronger by surrounding it in brackets, so for example assuming that <code>op1</code> is weaker than <code>op2</code>, in an expression <code>(a op1 b) op2 c</code> the <code>a op1 b</code> operation will be executed first.
pl: Uwaga: działaniu można przypisać większy priorytet, umieszczając je w nawiasach. Na przykład przyjmując, że <code>op1</code> jest mniej ważne niż <code>op2</code>, w wyrażeniu <code>(a op1 b) op2 c</code> operacja <code>a op1 b</code> będzie wykonana jako pierwsza.

note: type: Plain text
en: Tip: always use brackets if you are not sure about the order of operations, do not try to remember how strong are each of the operators. Generally it should be fairly obvious.
pl: Wskazówka: zawsze używaj nawiasów jeśli nie jesteś pewnym kolejności działań, nie próbuj zapamiętać kolejności działań. W zasadzie to powinno być dość oczywiste.

note: type: Plain text
en: Here is a complicated example, which uses arithemtic operations described below, showing how expressions are calculated:
    <c/>Assume a, b, c, d, x, y, z, e are all initialized variables of type float or int. Then the following expression should be calculated the following way:
      a * b + c - d / x % (y * z) - e =
    = r1 + c - d / x % (y * z) - e    = , r1 = a * b
    = r2 - d / x % (y * z) - e        = , r2 = r1 + c
    = r2 - r3 % (y * z) - e           = , r3 = d / x
    = r2 - r3 % r4 - e                = , r4 = y * z
    = r2 - r5 - e                     = , r5 = r3 % r4
    = r6 - e                          = , r6 = r2 - r5
    = r7                                , r7 = r6 - e
    r7 is the final result of this expression.
pl: Tu mamy do czynienia ze skomplikowanym przykładem używającym obliczeń arytmetycznych opisanych poniżej, co pokazuje nam, jak obliczane są wyrażenia:
    <c/>Przyjmijmy, że a, b, c, d, x, y, z, e są zainicjalizowanymi zmiennymi typu zmiennoprzecinkowego (float) lub całkowitego (int). W takim przypadku wyrażenia powinny zostać wykonane w następujący sposób:
      a * b + c - d / x % (y * z) - e =
    = r1 + c - d / x % (y * z) - e    = , r1 = a * b
    = r2 - d / x % (y * z) - e        = , r2 = r1 + c
    = r2 - r3 % (y * z) - e           = , r3 = d / x
    = r2 - r3 % r4 - e                = , r4 = y * z
    = r2 - r5 - e                     = , r5 = r3 % r4
    = r6 - e                          = , r6 = r2 - r5
    = r7                                , r7 = r6 - e
    r7 jest finałowym wynikiem wyrażenia.

note: type: \b; header
en: Assignment operator
pl: Operator przypisania

note: type: Plain text
en: <code>=</code> is the assignment operator. It is used to store the result of an expression in a variable.
pl: <code>=</code> jest operatorem przypisania. Używany jest do przechowywania wyniku wyrażenia w zmiennej.

note: type: Plain text
en: On the left side of this operator there must be so called l-value and on the right side - r-value. L-values are just <a cbot|var>variables</a><n/>, r-values are expressions or just usual values. This makes the assignment operator kind of special, because what is l-value is pretty restrictive (it cannot be an expression, constant and so on, only single variable). Also, the type of l-value must match the type of r-value (unless a conversion is possible, for example assigning a <code><a cbot|float>float</a></code> to <code><a cbot|int>int</a></code>).
pl: Po lewej stronie tego operatora musi znaleźć się tak zwana l-wartość a po prawej stronie - p-wartość. L-wartości to po prostu <a cbot|var>zmienne</a><n/>, natomiast r-wartości są wyrażeniami lub zwykłymi wartościami. To sprawia, że operator przypisania jest dość unikatowy, ponieważ nie wszystko może być l-wartością (nie może to być wyrażenie, stała i podobne, jedynie pojedyncza zmienna). Oprócz tego typ l-wartości musi mieć ten sam typ co r-wartość (chyba że możliwa jest konwersja, na przykład przypisanie <code><a cbot|float>float</a></code> do <code><a cbot|int>int</a></code>).

note: type: Plain text
en: This example is actually really confusing, but this property is actually useful, because it lets doing something like this:
pl: Ten przykład jest dość mylący, ale ta właściwość jest całkiem użyteczna, gdyż pozwala na przeprowadzanie tego typu działań:

note: type: \b; header
en: Basic arithmetic operations
pl: Podstawowe operacje arytmetyczne

note: type: Plain text
en: Binary operators below are working with fundamental number types (<code><a cbot|int>int</a></code>, <code><a cbot|float>float</a></code>).
pl: Operatory binarne poniżej działają z podstawowymi typami liczb (<code><a cbot|int>int</a></code>, <code><a cbot|float>float</a></code>).

note: type: \t; header
en: List
pl: Lista

note: type: Plain text
en: <code>+</code>  addition
    <code>-</code>  subtraction
    <code>*</code>  multiplication
    <code>/</code>  division
    <code>%</code>  remainder of the division (only for the type <code><a cbot|int>int</a></code>)
pl: <code>+</code>  dodawanie
    <code>-</code>  odejmowanie
    <code>*</code>  mnożenie
    <code>/</code>  dzielenie
    <code>%</code>  reszta z dzielenia (tylko dla <code><a cbot|int>int</a></code>)

note: type: \t; header
en: Notes
pl: Uwagi

note: type: Bullet: 'o'
en: The <code>*</code>, <code>/</code>, <code>%</code> are all stronger than <code>+</code> and <code>-</code>.
pl: Operatory <code>*</code>, <code>/</code>, <code>%</code> mają pierwszeństwo nad <code>+</code> i <code>-</code>

note: type: Bullet: 'o'
en: The result <a cbot|type>type</a> is always <code><a cbot|float>float</a></code>. If <code>a</code> or <code>b</code> are of type <code><a cbot|int>int</a></code>, they are automatically converted to <code><a cbot|float>float</a></code>. Note: this means that results of intermediate calculations tends to be as precise as possible, the precision is lost only during converting the final (<code><a cbot|float>float</a></code>) result to <code><a cbot|int>int</a></code>, for example by the assignment <code>=</code> operator.
pl: Wynikowym <a cbot|type>typem</a> zawsze jest <code><a cbot|float>float</a></code>. Jeśli <code>a</code> lub <code>b</code> są typu <code><a cbot|int>int</a></code>, zostaną automatycznie przekonwertowane do <code><a cbot|float>float</a></code>. Uwaga: to oznacza, że wyniki obliczeń pośrednich będą tak dokładne jak to możliwe, precyzja jest tracona tylko podczas konwersji finałowego (<code><a cbot|float>float</a></code>) wyniku do <code><a cbot|int>int</a></code>, na przykład przez operator <code>=</code>.

note: type: \t; header
en: Real life examples
pl: Przykłady z życia wzięte

note: type: \t; header
en: Compound assignment operators
pl: Złożone operatory przypisania

note: type: Plain text
en: Besides the <code>=</code> operator for variable assignment there are several compound-assignment operators.
pl: Oprócz operatora <code>=</code> do przypisywania zmiennych istnieją także różne złożone operatory przypisania.

note: type: Plain text
en: The compound-assignment operators combine the <code>=</code> assignment operator with another binary operator such as <code>+</code> or <code>-</code>. Compound-assignment operators perform the operation specified by the additional operator and then assign the result to the left operand. For example, a compound-assignment expression such as
pl: Złożone operatory przypisania łączą operator przypisania <code>=</code> z innym operatorem binarnym, na przykład <code>+</code> lub <code>-</code>. Złożone operatory przypisania wykonują działanie określone przez dodatkowy operator, a następnie przypisują wynik do lewego operandu. Na przykład, taki złożony operator przypisania

note: type: Source code
en: <code>lvalue += expression</code>
pl: <code>l-wartość += wyrażenie</code>

note: type: Source code
en: <code>lvalue = lvalue + expression</code>
pl: <code>l-wartość = l-wartość + wyrażenie</code>

note: type: \b; header
en: String concatenation
pl: Łączenie łańcuchów znaków

note: type: Plain text
en: If at least one of the values used with the <code>+</code> operator is a <a cbot|string>string</a>, then the operation of concatenation is performed. The result of the operator is then a string, which is created by joining end-to-end the string and the other value. If the other value is not a string, then it is converted to string beforehand.
pl: Jeśli przynajmniej jedna z wartości używanych z operatorem <code>+</code> jest <a cbot|string>łańcuchem znaków</a>, wtedy wykonywana jest operacja łączenia. Wynik operatora w takim razie jest łańcuchem znaków tworzonym przez dołączenie do łańcucha znaków innej wartości. Jeśli inna wartość nie jest łańcuchem zostaje najpierw przekonwertowana.

note: type: Source code
en: 	string s = "a" + "bc";  // returns "abc"
    	string s = 1 + "bc";    // returns "1bc"
    	string s = 2.5 + "bc";  // returns "2.5bc"
    	string s = "a" + true;  // returns "atrue"
pl: 	string s = "a" + "bc";  // zwraca "abc"
    	string s = 1 + "bc";    // zwraca "1bc"
    	string s = 2.5 + "bc";  // zwraca "2.5bc"
    	string s = "a" + true;  // zwraca "atrue"

note: type: Plain text
en: Tip: the properties of the concatenation <code>+</code> operator is useful with the <a cbot|message>message();</a> function, because it does not work with other types than string. An empty string can be used together with a value in order to create a string, which actually can be passed to the <a cbot|message>message();</a> function:
pl: Porada: właściwości operatora łączenia <code>+</code> są użyteczne podczas korzystania z funkcji <a cbot|message>message();</a>, ponieważ nie działa to ze zmiennymi innego typu niż string. Pusty łańcuch może być użyty razem z wartością, by stworzyć łańcuch, który może zostać przekazany do funkcji <a cbot|message>message();</a>:

note: type: \b; header
en: Prefix and postfix increment- and decrement operators
pl: Operatory zwiększania i zmniejszania przedrostka i przyrostka

note: type: Plain text
en: For example to increment the variable <code>a</code> you can write
pl: Na przykład: do zwiększenia wartości zmiennej <code>a</code> możesz napisać

note: type: Plain text
en: instead of
pl: zamiast

note: type: Plain text
en: The result of the operation <code>a++</code> is the value of the variable <code>a</code> *before* the increment. If you use the prefix operator <code>++a</code> the result of the operation is the value of the variable <code>a</code> *after* the increment. The same holds for the <code>--</code> decrement operator.
pl: Wynik operacji <code>a++</code> jest równy wartości zmiennej <code>a</code> *przed* jej zwiększeniem. Jeśli użyjesz operatora przedrostkowego <code>++a</code> wynik operacji będzie wartością zmiennej <code>a</code> *po* jej zwiększeniu. To samo dotyczy się operatora zmniejszania <code>--</code>.

note: type: Plain text
en: Specifically speaking, an expression is an ordered series of operations which yield a result. Operations consist of operators, which are special <a cbot|function>functions</a> <code>T f(t1 x1, t2 x2, ..., tn xn)</code>, where <code>xi</code> is a value of type <code>ti</code>, and <code>T</code> is the result type. For example, <code>float +(float a, float b)</code> returns a sum of values <code>a</code> and <code>b</code>. Note: Operators are a part of the CBOT language and they cannot be defined in program. Also, the operators cannot be used as usual <a cbot|function>functions</a>, they need to be written using a special notation depending on the operator, for example <code>a+b</code>.
pl: Dokładniej rzecz ujmując, wyrażenie jest uporządkowaną serią działań przynoszącą pewien wynik. Działania składają się z operatorów, które są specjalnymi <a cbot|function>funkcjami</a> <code>T f(t1 x1, t2 x2, ..., tn xn)</code>, gdzie <code>xi</code> jest wartością typu <code>ti</code>, a <code>T</code> jest typem wyniku. Na przykład, <code>float +(float a, float b)</code> zwraca sumę wartości <code>a</code> i <code>b</code>. Uwaga: Operatory są częścią języka CBOT i nie mogą być zdefiniowane w programie. Oprócz tego, operatory nie mogą być używane jak zwykłe <a cbot|function>funkcje</a>, muszą być zapisane, używając specjalnej notacji zależnej od operatora, na przykład <code>a+b</code>.

note: type: Plain text
en: In nearly all operations, <a cbot>constants</a>, <a cbot|var>variables</a>, <a cbot|function>functions</a> returning non-<a cbot|void>void</a> type and also other operations can be used as values.
pl: W niemal każdym działaniu <a cbot>stałe</a>, <a cbot|var>zmienne</a>, <a cbot|function>funkcje</a> zwracające wartości typu nie<a cbot|void>pustego</a> i inne działania mogą być użyte jako wartości.

note: type: Plain text
en: Note: it may be not obvious at first, but notice that <code>=</code> is an *operator* not an instruction. This mean that it can be used in the middle of an other expression! The result of <code>=</code> is the value which was assigned to the l-value - the result of the expression on the right. Example:
pl: Uwaga: to może nie być oczywiste na początku, ale zauważ, że <code>=</code> jest *operatorem*, nie instrukcją. To oznacza, że może zostać użyty przy tworzeniu innego wyrażenia! Wynik operatora <code>=</code> jest wartością, która została przypisana do l-wartości - inaczej mówiąc, operator ten zwraca wynik działania po jego prawej stronie. Przykład:

note: type: Source code
en:  int    i = 12 + 3;      // i == 15
     int    i = 2 - 5;       // i == -3
     
     float  f = 3.01 * 10;   // f == 30.1
     
     int    i = 5 / 3;       // i == 1 (automatic conversion to int)
     float  f = 5 / 3;       // f == 1.67
     float  f = 5 / 0;       // returns an error (division by zero)
     
     int    i = 13 % 5;      // i == 3
     int    i = -8 % 3;      // i == -2
     
     float  f = sin(90) * i; // f == -2.0
pl:  int    i = 12 + 3;      // i == 15
     int    i = 2 - 5;       // i == -3
     
     float  f = 3.01 * 10;   // f == 30.1
     
     int    i = 5 / 3;       // i == 1 (automatyczna konwersja do int)
     float  f = 5 / 3;       // f == 1.67
     float  f = 5 / 0;       // zwraca błąd (dzielenie przez zero)
     
     int    i = 13 % 5;      // i == 3
     int    i = -8 % 3;      // i == -2
     
     float  f = sin(90) * i; // f == -2.0

note: type: Source code
en:  float pi = 3.14;
     // message(pi); // does not work
     message(""+pi);
pl:  float pi = 3.14;
     // message(pi); // nie zadziała
     message(""+pi);

note: type: Source code
en:  a = 2;
     b = a++;
     // now b contains 2 and a contains 3
pl:  a = 2;
     b = a++;
     // teraz b jest równe 2, natomiast a jest równe 3

note: type: Source code
en:  a = 2;
     b = ++a;
     // now b contains 3 and a contains 3
pl:  a = 2;
     b = ++a;
     // teraz b jest równe 3, natomiast a również jest równe 3

note: type: \b; header
en: Logical operators
pl: Operatory logiczne

note: type: Plain text
en: Logical operators work with values of type <a cbot|bool>bool</a> and they always return a <a cbot|bool>bool</a>. They are mainly used in <a cbot|cond>conditions</a>.
pl: Operatory logiczne działają z wartościami typu <a cbot|bool>bool</a> i zawsze zwracają <a cbot|bool>bool</a>. Głównie używa się ich w <a cbot|cond>warunkach</a>.

note: type: \b; header
en: Ternary operator
pl: Operatory trójskładnikowe

note: type: Plain text
en: The ternary operator is nothing more than a syntax sugar. It is also known as "inline if". It might be confusing at first, because its syntax is a little more complicated than other operators. It can be described as follows:
    <code>(condition) ? (result when true) : (result when false)</code>
    Brackets are not needed.
pl: Operator trójskładnikowy to nic więcej niż skrót składniowy. Jest również znany jako "skrócony if". To może być na początku niejasne, ponieważ jego składnia jest trochę bardziej skomplikowana w porównaniu z innymi operatorami. Można to opisać w następujący sposób:
    <code>(warunek) ? (wynik jeśli prawda) : (wynik jeśli fałsz)</code>
    Nawiasy nie są wymagane.

note: type: Plain text
en: Firstly, the condition is valued and then the first result is returned if the condition is true, otherwise the second result is returned.
pl: Najpierw obliczany jest warunek i jeśli jest on prawdziwy, zwracany jest pierwszy wynik, w przeciwnym razie zwracany jest drugi wynik.

note: type: \t; header
en: Example
pl: Przykład

note: type: Plain text
en: A condition is a special <a cbot|expr>expression</a> that returns a <a cbot|bool>boolean</a> value, that can only be either <code><a cbot|true>true</a></code> or <code><a cbot|false>false</a></code>. With a condition, you can choose f. ex. if the instructions in a <code><a cbot|while>while</a></code> loop must be repeated again, or if the instruction in a <code><a cbot|if>if</a></code> bloc must be executed.
pl: Warunek jest specjalnym <a cbot|expr>wyrażeniem</a>, które zwraca wartość typu <a cbot|bool>bool</a>, która może być albo <code><a cbot|true>prawdą</a></code> lub <code><a cbot|false>fałszem</a></code>. Dzięki warunkowi możesz wybrać np. czy instrukcja w pętli <code><a cbot|while>while</a></code> musi być wykonana ponownie, lub czy instrukcja w bloku <code><a cbot|if>if</a></code> ma zostać wykonana.

note: type: \b; header
en: Comparison operators
pl: Operatory porównania

note: type: Plain text
en: Comparison operators work with values of type <a cbot|bool>float</a> and they always return a <a cbot|bool>bool</a>. They are mainly used in <a cbot|cond>conditions</a>.
pl: Operatory porównania działają z wartościami typu <a cbot|float>float</a> i zawsze zwracają <a cbot|bool>bool</a>. Używane są głównie w <a cbot|cond>warunkach</a>.

note: type: Plain text
en: <code>!a      </code>not <code>a</code>
    <code>a && b  </code><code>a</code> and <code>b</code>
    <code>a || b  </code><code>a</code> or <code>b</code>
pl: <code>!a      </code>nie <code>a</code>
    <code>a && b  </code><code>a</code> i <code>b</code>
    <code>a || b  </code><code>a</code> lub <code>b</code>

note: type: Plain text
en: <code>!false        </code>returns true
    <code>true && false </code>returns false 
    <code>true || false </code>returns true
pl: <code>!false        </code>zwraca true
    <code>true && false </code>zwraca false 
    <code>true || false </code>zwraca true

note: type: \b; header
en: Bitwise operators
pl: Operatory bitowe

note: type: Plain text
en: Bitwise operators are similar to the logical operator, because they are operating on bits (which can be only 0 or 1, conditions can have a value only of false or true). So in theory, they should be working with basically any type of variable, because each value in the computer must be stored as a sequence of bits.
pl: Operatory bitowe są podobne do operatorów logicznych, gdyż działają na bitach (które mogą być tylko zerami lub jedynkami, warunki mogą mieć tylko wartości false lub true). Więc w teorii powinny działać z praktycznie każdym typem zmiennej, ponieważ każda wartość w komputerze musi być przechowywana w postaci sekwencji bitów.

note: type: Plain text
en: <code>a & b  </code><code>a</code> AND <code>b</code>
    <code>a | b  </code><code>a</code> OR <code>b</code>
    <code>a ^ b  </code><code>a</code> XOR <code>b</code>
    <code>a >> b  </code>shift bits of <code>a</code> to the right <code>b</code> times
    <code>a << b  </code>shift bits of <code>a</code> to the left <code>b</code> times
pl: <code>a & b  </code><code>a</code> AND <code>b</code>
    <code>a | b  </code><code>a</code> OR <code>b</code>
    <code>a ^ b  </code><code>a</code> XOR <code>b</code>
    <code>a >> b  </code>przesuń bity z <code>a</code> w prawą stronę <code>b</code> razy
    <code>a << b  </code>przesuń bity z <code>a</code> w lewą stronę <code>b</code> razy

note: type: Plain text
en: <code>2 & 1         </code>returns 0
    <code>2 | 1         </code>returns 3
    <code>2 ^ 2         </code>returns 0
    <code>2 >> 1        </code>returns 1
    <code>2 << 1        </code>returns 4
pl: <code>2 & 1         </code>zwraca 0
    <code>2 | 1         </code>zwraca 3
    <code>2 ^ 2         </code>zwraca 0
    <code>2 >> 1        </code>zwraca 1
    <code>2 << 1        </code>zwraca 4

note: type: Source code
en: int    [ ] a;   // an array of int
    int    a [12];  // an array of int limited to 12 elements
    string s[3];    // an array of 3 strings
    float  xy[][];  // a 2 dimensionnal array of floats
pl: int    [ ] a;   // tablica typu całkowitego
    int    a [12];  // tablica typu całkowitego ograniczona do 12 elementów
    string s[3];    // tablica 3 łańcuchów znaków
    float  xy[][];  // 2-wymiarowa tablica liczb zmiennoprzecinkowych

note: type: \b; header
en: Initialization syntax
pl: Składnia inicjalizacji

note: type: Plain text
en: You can initialize a new array using the following syntax:
pl: Możesz zainicjować nową tablicę, używając poniższej składni:

note: type: Source code
en: type arrayName[] = { value0, value1, value2, ..., valueN };
pl: typ nazwaTablicy[] = { wartość0, wartość1, wartość2, ..., wartośćN };

note: type: Source code
en: int numbers[] = { 10, 20, 30 };
    MyClass objects[] = { new MyClass(1), new MyClass(2) };
pl: int numery[] = { 10, 20, 30 };
    MojaKlasa obiekty[] = { new MojaKlasa1(1), new MojaKlasa2(2) };

note: type: Plain text
en: With the instruction <c/>radar();<n/>, you can look for objects like <a object|mother>enemies</a>, bots, buildings or raw materials.
pl: Używając funkcji <c/>radar();<n/> możesz znajdować obiekty, takie jak <a object|mother>przeciwnicy</a>, roboty, budynki czy zasoby naturalne.

note: type: Plain text
en: <c/><a cbot|radarall>radarall</a>();<n/>, <a cbot>programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <c/><a cbot|radarall>radarall</a>();<n/>, <a cbot>programowanie</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: \b; header
en: Instruction <code>radarall</code>
pl: Instrukcja <code>radarall</code>

note: type: Plain text
en: <c/>radarall();<n/> is an enhancement of the <c/><a cbot|radar>radar</a>();<n/> function -- it detects all objects matching the given criteria.
pl: <c/>radarall();<n/> jest rozszerzoną wersją funkcji <c/><a cbot|radar>radar</a>();<n/> -- wykrywa wszystkie obiekty pasujące do podanych kryteriów.

note: type: \b; header
en: Example<c/>
pl: Przykład<c/>

note: type: Source code
en: <c/>radarall ( cat, angle, focus, min, max, sens, filter );<n/>
pl: <c/>radarall ( kategoria, kąt, zakres, minimum, maksimum, sens, filtr );<n/>

note: type: Plain text
en: The function works generally the same as the <c/><a cbot|radar>radar</a>();<n/> function with the only difference being that it returns an <a cbot|array>array</a> of <a cbot|object>objects</a> instead of one object. If no object is found, <code><a cbot|null>null</a></code> is returned.
pl: Ta funkcja w gruncie rzeczy działa tak samo jak funkcja <c/><a cbot|radar>radar</a>();<n/>. Różnica polega na tym, że zwraca ona <a cbot|array>tablicę</a> <a cbot|object>obiektów</a> zamiast jednego obiektu. Jeśli żaden obiekt nie został znaleziony, zwracana jest wartość <code><a cbot|null>null</a></code>.

note: type: Plain text
en: The order of objects in the returned array is sorted by distance and depends on the <code>sens</code> parameter. The first object in the array is the object which would be returned by the <c/>radar();<n/> function called with the exactly same parameters.
pl: Kolejność obiektów w zwróconej tablicy jest określona przez dystans i zależy od parametru <code>sens</code>. Pierwszy obiekt w tablicy jest tym obiektem, który byłby zwrócony przez funkcję <c/>radar();<n/> wywołaną z tymi samymi parametrami.

note: type: Plain text
en: <c/><a cbot|radar>radar</a>();<n/>, <a cbot>programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <c/><a cbot|radar>radar</a>();<n/>, <a cbot>programowanie</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: Plain text
en: This set of instructions is executed before the first loop instance.
pl: Ten zestaw instrukcji zostanie wykonany przed pierwszym przebiegiem pętli.

note: type: Plain text
en: This set of instructions is executed at the end of every instance of the loop.
pl: Ten zestaw instrukcji zostanie wykonany po każdym przebiegu pętli.

note: type: \t; header
en: Executing more instructions
pl: Wykonywanie wielu instrukcji

note: type: Plain text
en: In the <code>before</code> and <code>end</code> part of a <code>for</code> loop you can specify more than one instruction by using comma. Example:
pl: W sekcjach <code>początek</code> i <code>koniec</code> pętli <code>for</code> możesz umieścić więcej niż jedną instrukcję używając przecinka. Przykład:

note: type: Plain text
en: The output of the above code is <code>1 2 2 1</code>.
pl: Wynik powyższego kodu to <code>1 2 2 1</code>.

note: type: Source code
en: object[] items = radarall(PowerCell);
    for (int i = 0; i < sizeof(items); ++i)
    {
        message(items[i].id);
    }
pl: object[] przedmioty = radarall(PowerCell);
    for (int i = 0; i < sizeof(przedmioty); ++i)
    {
        message(przedmioty[i].id);
    }

note: type: Plain text
en:        <code><a object|flag>BlueFlag</a>          </code>Blue Flag
           <code><a object|flag>RedFlag</a>           </code>Red Flag
           <code><a object|flag>GreenFlag</a>         </code>Green Flag
           <code><a object|flag>YellowFlag</a>        </code>Yellow Flag
           <code><a object|flag>VioletFlag</a>        </code>Violet Flag
           <code><a object|waypoint>WayPoint</a>          </code>Checkpoint
           <code><a object|target2>Target2</a>           </code>Flying checkpoint
           <code><a object|enerspot>PowerSpot</a>        </code>Underground Energy Deposit
           <code><a object|stonspot>TitaniumSpot</a>      </code>Underground Titanium Deposit
           <code><a object|uranspot>UraniumSpot</a>       </code>Underground Uranium Deposit
pl:        <code><a object|flag>BlueFlag</a>          </code>Niebieska flaga
           <code><a object|flag>RedFlag</a>           </code>Czerwona flaga
           <code><a object|flag>GreenFlag</a>         </code>Zielona flaga
           <code><a object|flag>YellowFlag</a>        </code>Zółta flaga
           <code><a object|flag>VioletFlag</a>        </code>Fioletowa flaga
           <code><a object|waypoint>WayPoint</a>          </code>Punkt kontrolny
           <code><a object|target2>Target2</a>           </code>Latający punkt kontrolny
           <code><a object|enerspot>PowerSpot</a>        </code>Podziemne źródło energii
           <code><a object|stonspot>TitaniumSpot</a>      </code>Podziemne złoże rudy tytanu
           <code><a object|uranspot>UraniumSpot</a>       </code>Podziemne złoże rudy uranu

note: type: Plain text
en: <button 176/>   <code><a object|huston>Houston</a>          </code>Mission Control
    <button 171/>   <code><a object|base>SpaceShip</a>        </code>Spaceship
    <button 160/>   <code><a object|factory>BotFactory</a>       </code>Robot Factory
    <button 163/>   <code><a object|research>ResearchCenter</a>   </code>Research Center
    <button 168/>   <code><a object|radar>RadarStation</a>     </code>Radar
    <button 172/>   <code><a object|exchange>ExchangePost</a>     </code>Information Exchange Post
    <button 169/>   <code><a object|repair>RepairCenter</a>     </code>Repair Center
    <button 165/>   <code><a object|tower>DefenseTower</a>     </code>Defense Tower
    <button 166/>   <code><a object|labo>AutoLab</a>          </code>Organic Matter Analyzer 
    <button 164/>   <code><a object|station>PowerStation</a>     </code>Power Station
    <button 167/>   <code><a object|energy>PowerPlant</a>       </code>Power Cell Factory
    <button 170/>   <code><a object|nuclear>NuclearPlant</a>     </code>Nuclear Plant
    <button 162/>   <code><a object|convert>Converter</a>        </code>Titanium Converter
    <button 161/>   <code><a object|derrick>Derrick</a>          </code>Derrick
    <button 174/>   <code><a object|captor>PowerCaptor</a>      </code>Parabolic Lightning Conductor
    <button 175/>   <code><a object|safe>Vault</a>            </code>Vault
           <code><a object|start>StartArea</a>        </code>Starting Pad
           <code><a object|goal>GoalArea</a>         </code>Finishing Pad
           <code><a object|target1>Target1</a>          </code>Flying target
           <code><a object|nest>AlienNest</a>        </code>Alien Nest
pl: <button 176/>   <code><a object|huston>Houston</a>          </code>Centrum Kontroli Misji
    <button 171/>   <code><a object|base>SpaceShip</a>        </code>Statek kosmiczny
    <button 160/>   <code><a object|factory>BotFactory</a>       </code>Fabryka robotów
    <button 163/>   <code><a object|research>ResearchCenter</a>   </code>Centrum badawcze
    <button 168/>   <code><a object|radar>RadarStation</a>     </code>Radar
    <button 172/>   <code><a object|exchange>ExchangePost</a>     </code>Stacja przekaźnikowa informacji
    <button 169/>   <code><a object|repair>RepairCenter</a>     </code>Warsztat
    <button 165/>   <code><a object|tower>DefenseTower</a>     </code>Wieża obronna
    <button 166/>   <code><a object|labo>AutoLab</a>          </code>Laboratorium 
    <button 164/>   <code><a object|station>PowerStation</a>     </code>Stacja energetyczna
    <button 167/>   <code><a object|energy>PowerPlant</a>       </code>Elektrownia
    <button 170/>   <code><a object|nuclear>NuclearPlant</a>     </code>Elektrownia atomowa
    <button 162/>   <code><a object|convert>Converter</a>        </code>Huta
    <button 161/>   <code><a object|derrick>Derrick</a>          </code>Kopalnia
    <button 174/>   <code><a object|captor>PowerCaptor</a>      </code>Stacja odgromnikowa
    <button 175/>   <code><a object|safe>Vault</a>            </code>Skrytka
          <code><a object|start>StartArea</a>        </code>Platforma startowa
          <code><a object|goal>GoalArea</a>         </code>Platforma końcowa
          <code><a object|target1>Target1</a>          </code>Latający cel
          <code><a object|nest>AlienNest</a>        </code>Gniazdo obcych

note: type: Plain text
en: Classes can be only <a cbot|public>public</a>. This means that they can be used by all bots in a mission.
pl: Klasy mogą być wyłącznie <a cbot|public>publiczne</a>. To oznacza, że mogą być wykonane przez wszystkie roboty obecne w bieżącej misji.

note: type: \b; header
en: Class Members
pl: Elementy klasy

note: type: Plain text
en: Class members are fields (<a cbot|var>variables</a>) and methods (<a cbot|function>functions</a>).
pl: Elementy klasy to pola (<a cbot|var>zmienne</a>) i metody (<a cbot|function>funkcje</a>).

note: type: Plain text
en: For example, the following class dubbed <code>MyClass</code> contains 4 fields (<code>a</code>, <code>b</code>, <code>x</code> and <code>s</code>) and one method (<code>MyFunction</code>).
pl: Na przykład, poniższa klasa nazwana <code>MojaKlasa</code> zawiera 4 pola (<code>a</code>, <code>b</code>, <code>x</code> i <code>s</code>) i jedną metodę (<code>MojaFunkcja</code>).

note: type: Source code
en: public class MyClass
    {
    	int     a, b;
    	float   x = 3.33;
    	string  s = "hello";
    	float   MyFunction(float value)
    	{
    		return (value * x) - 1;
    	}
    }
pl: public class MojaKlasa
    {
    	int     a, b;
    	float   x = 3.33;
    	string  s = "Witaj";
    	float   MojaFunkcja(float wartość)
    	{
    		return (wartość * x) - 1;
    	}
    }

note: type: \t; header
en: Member Initialization
pl: Inicjalizowanie elementów

note: type: Plain text
en: Example:<c/>
pl: Przykład:<c/>

note: type: Source code
en: public class MyClass
    {
    	int  a, b;
    	void MyClass()
    	{
    		a = 2;  b = 3;
    	}
    	void MyClass(int a, int b)
    	{
    		this.a = a;  this.b = b;
    	}
    }
pl: public class MojaKlasa
    {
    	int  a, b;
    	void MojaKlasa()
    	{
    		a = 2;  b = 3;
    	}
    	void MojaKlasa(int a, int b)
    	{
    		this.a = a;  this.b = b;
    	}
    }

note: type: Plain text
en: As the names of the parameters of the second constructor are the same as the names of the two members <code>a</code> and <code>b</code>, we must use the <code><a cbot|this>this</a></code> <a cbot|pointer>reference</a> to avoid confusion with the parameters' names.
pl: Ponieważ nazwy parametrów drugiego konstruktora są takie same jak nazwy elementów <code>a</code> and <code>b</code>, musimy użyć <a cbot|pointer>referencji</a> <code><a cbot|this>this</a></code>, by uniknąć pomyłki z nazwami parametrów.

note: type: \b; header
en: Object Creation
pl: Tworzenie obiektu

note: type: Plain text
en: You can create objects of type <code>YourClass</code> using the <code><a cbot|new>new</a></code> keyword. Example:
pl: Możesz tworzyć obiekty typu <code>TwojaKlasa</code>, używając słowa kluczowego <code><a cbot|new>new</a></code>. Przykład:

note: type: \b; header
en: Object Destruction
pl: Niszczenie obiektu

note: type: \b; header
en: Passing Objects to Functions
pl: Przekazywanie obiektów do funkcji

note: type: Plain text
en: Objects in CBOT are passed by <a cbot|pointer>reference</a>. This means that when an object is passed to a <a cbot|function>function</a>, the function receives a copy of a pointer to the instance, not a copy of the object, so any modifications on the object will be visible outside of the function.
pl: Obiekty w języku CBOT są przekazywane przez <a cbot|pointer>referencję</a>. Oznacza to, że gdy obiekt jest przekazywany do <a cbot|function>funkcji</a>, funkcja otrzymuje kopię wskaźnika do instancji, nie kopię obiektu, więc wszelkie modyfikacje obiektu są widoczne poza funkcją.

note: type: \b; header
en: Inheritance
pl: Dziedziczenie

note: type: Plain text
en: A class can inherit public and protected members of another class by using the <code><a cbot|extends>extends</a></code> keyword.
pl: Klasa może dziedziczyć publiczne i chronione elementy innej klasy przez użycie słowa kluczowego <code><a cbot|extends>extends</a></code>.

note: type: Plain text
en: This keyword allows you to create a class definition by using the following syntax:
pl: To słowo kluczowe pozwala ci tworzyć definicje klasy, używając następującej składni:

note: type: \t; header
en: All Classes Are Public
pl: Wszystkie klasy są publiczne

note: type: \t; header
en: Class Members Modifiers
pl: Modyfikatory elementów klas

note: type: \t; header
en: Using <code><a cbot|this>this</a></code>
pl: Używanie <code><a cbot|this>this</a></code>

note: type: Source code
en: extern void object::Test()
    {
    	MyClass object1();       // Call default constructor (without parameters)
    	MyClass object2(4, 5);   // Call constructor with two int parameters
    	MyClass object3;         // No constructor called, object3 == null
    	object3 = new MyClass(); // We call constructor now, object3 != null
    }
pl: extern void object::Test()
    {
    \MojaKlasa obiekt1();       // Wywołanie domyślnego konstruktora (bez parametrów)
    \MojaKlasa obiekt2(4, 5);   // Wywołanie konstruktora z dwoma parametrami typu całkowitego
    \MojaKlasa obiekt3;         // Brak wywołania konstruktora, object3 == null
    	obiekt3 = new MojaKlasa(); // Teraz wywołujemy konstruktor, obiekt3 != null
    }

note: type: Plain text
en: You can also define a destructor. This must be a <code><a cbot|void>void</a></code> fonction without parameters, which has the same name as the class but prefixed with the <code>~</code> character. The destructor is called automatically as soon as the class instance is no more referenced by anyone. Example:
pl: Możesz również zdefiniować destruktor. Musi to być funkcja zwracająca <code><a cbot|void>void</a></code> nieprzyjmująca parametrów, mająca taką samą nazwę jak klasa, ale z przedrostkiem <code>~</code>. Destruktor jest wzywany automatycznie gdy klasa przestanie być odwoływana przez cokolwiek. Przykład:

note: type: Source code
en: public class MyClass
    {
    	static private int counter = 0; // instance counter
    	void  MyClass( )
    	{
    		counter++;  // one instance more
    	}
    	void ~MyClass( )
    	{
    		counter--;  // one instance less
    	}
    }
    extern void object::Test()
    {
    	                   // counter == 0
    	MyClass item1( );  // counter == 1
    	MyClass item2( );  // counter == 2
    	item1 = null;      // counter == 1
    }
    // counter == 0
pl: public class MojaKlasa
    {
    	static private int licznik = 0; // licznik instancji
    	void  MojaKlasa( )
    	{
    		licznik++;  // jedna instancja więcej
    	}
    	void ~MojaKlasa( )
    	{
    		licznik--;  // jedna instancja mniej
    	}
    }
    extern void object::Test()
    {
    	                   // licznik == 0
    	MojaKlasa przedmiot1( );  // licznik == 1
    	MojaKlasa przedmiot2( );  // licznik == 2
    	iprzedmiot = null;      // licznik == 1
    }
    // licznik == 0

note: type: \b; header
en: Accessing Class Members
pl: Dostęp do elementów klasy

note: type: Plain text
en: Class members can be accessed outside of the class definition by using the <code>.</code> operator. Example:
pl: Do elementów klasy można uzyskać dostęp spoza definicji klasy używając operatora <code>.</code> (kropka). Przykład:

note: type: Plain text
en: Class members are <a cbot|public>public</a> by default, which means that they are accessible outside of the class definition. They can also be declared as <code><a cbot|private>private</a></code> or <code><a cbot|protected>protected</a></code>. Such members can only be accessed inside of the class definition.
pl: Elementy klasy są domyślnie zadeklarowane jako <a cbot|public>public</a>, co oznacza, że są dostępne spoza definicji klasy. Mogą być również zadeklarowane jako <code><a cbot|private>private</a></code> lub <code><a cbot|protected>protected</a></code>. Takie elementy mogą być dostępne jedynie z wewnątrz definicji klasy.

note: type: Plain text
en: Fields and methods can also be declared as <code><a cbot|static>static</a></code>. Methods can be additionaly declared as <code><a cbot|synchro>synchronized</a></code>.
pl: Pola i metody mogą być również zadeklarowane jako <code><a cbot|static>static</a></code>. Metody mogą być również deklarowane jako <code><a cbot|synchro>synchronized</a></code>.

note: type: Plain text
en: Another way of initiliazing fields is by defining a constructor which is a special method having the same name as the class. This method will be called automatically at <a cbot|new>creation</a> time of a class instance. Constructors can be <a cbot|function>overloaded</a>.
pl: Innym sposobem inicjalizacji pól jest zdefiniowanie konstruktora. Jest to specjalna metoda o tej samej nazwie co klasa. Jest on wywoływany automatycznie podczas <a cbot|new>tworzenia</a> instancji klasy. Konstruktory mogą być <a cbot|function>przeciążane</a>.

note: type: Source code
en: public class MyClass
    {
    	int myField = 0;
    	int MyFunction()
    	{
    		return myField * 2;
    	}
    }
    
    extern void object::Test()
    {
    	MyClass myObject();
    	myObject.myField = 10;
    	message(myObject.MyFunction()); // 20
    	MyClass mySecondObject();
    	mySecondObject.myField = myObject.myField - 2;
    	message(mySecondObject.MyFunction()); // 16
    }
pl: public class MojaKlasa
    {
    	int mojePole = 0;
    	int MojaFunkcja()
    	{
    		return mojePole * 2;
    	}
    }
    
    extern void object::Test()
    {
    	MojaKlasa mojObiekt();
    	mojObiekt.mojePole = 10;
    	message(mojObiekt.MojaFunkcja()); // 20
    	MojaKlasa mojDrugiObiekt();
    	mojDrugiObiekt.mojePole = mojObiekt.mojePole - 2;
    	message(mojDrugiObiekt.MojaFunkcja()); // 16
    }

note: type: Plain text
en: <code><a cbot|public>public</a></code>, <code><a cbot|private>private</a></code>, <code><a cbot|protected>protected</a></code>, <code><a cbot|static>static</a></code>, <code><a cbot|synchro>synchronized</a></code>, <code><a cbot|new>new</a></code>, <code><a cbot|pointer>reference</a></code>, <code><a cbot|this>this</a></code>, <code><a cbot|super>super</a></code>, <code><a cbot|extends>extends</a></code>
    <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <code><a cbot|public>public</a></code>, <code><a cbot|private>private</a></code>, <code><a cbot|protected>protected</a></code>, <code><a cbot|static>static</a></code>, <code><a cbot|synchro>synchronized</a></code>, <code><a cbot|new>new</a></code>, <code><a cbot|pointer>reference</a></code>, <code><a cbot|this>this</a></code>, <code><a cbot|super>super</a></code>, <code><a cbot|extends>extends</a></code>
    <a cbot>Programowanie</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: \b; header
en: Keyword <code>protected</code>
pl: Słowo kluczowe <code>protected</code>

note: type: Plain text
en: This is an access modifier for <a cbot|class>class</a> members. Protected class members can be accessed in a child class, but they can't be accessed outside of classes definitions being part of the same inheritance tree (see the <code><a cbot|extends>extends</a></code> keyword).
pl: Jest to modyfikator dostępu do elementów <a cbot|class>klasy</a>. Dostęp do chronionych elementów klasy jest możliwy w klasie podrzędnej, ale nie jest możliwy spoza definicji klas będących częścią tego samego drzewa dziedziczenia (zobacz słowo kluczowe <code><a cbot|extends>extends</a></code>).

note: type: Source code
en: public class Parent
    {
    	protected int field = 0;
    }
    
    public class Child extends Parent
    {
    	void Print()
    	{
    		message(field);
    	}
    }
    
    extern void object::Test()
    {
    	Child child();
    	child.Print(); // 0
    	//child.field = 1; // Error!
    }
pl: public class Rodzic
    {
    	protected int pole = 0;
    }
    
    public class Dziecko extends Rodzic
    {
    	void Drukuj()
    	{
    		message(pole);
    	}
    }
    
    extern void object::Test()
    {
    	Dziecko dziecko();
    	Dzieck.Drukuj(); // 0
    	//dziecko.pole = 1; // Błąd!
    }

note: type: Plain text
en: This is an access modifier for <a cbot|class>class</a> members. Private members are not accessible outside of the class definition.
pl: Jest to modyfikator dostępu dla elementów <a cbot|class>klasy</a>. Prywatne elementy nie są dostępne poza definicją klasy.

note: type: Plain text
en: <code><a cbot|class>class</a></code>, <code><a cbot|public>public</a></code>, <code><a cbot|protected>protected</a></code>
    <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <code><a cbot|class>class</a></code>, <code><a cbot|public>public</a></code>, <code><a cbot|protected>protected</a></code>
    <a cbot>Programowanie</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: Plain text
en: <code>public</code> is also an access modifier for <a cbot|class>class</a> members, which is the default one. Public members can be accessed from outside of the class definition.
pl: <code>public</code> jest domyślnym modyfikatorem dostępu dla elementów <a cbot|class>klasy</a>. Publiczne elementy są dostępne spoza definicji klasy.

note: type: Plain text
en: <code><a cbot|class>class</a></code>, <code><a cbot|private>private</a></code>, <code><a cbot|protected>protected</a></code>, <code><a cbot|function>functions</a></code>
    <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <code><a cbot|class>class</a></code>, <code><a cbot|private>private</a></code>, <code><a cbot|protected>protected</a></code>, <code><a cbot|function>functions</a></code>
    <a cbot>Programowanie</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: Plain text
en: <code><a cbot|class>class</a></code>, <code><a cbot|public>public</a></code>, <code><a cbot|private>private</a></code>, <code><a cbot|extends>extends</a></code>
    <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <code><a cbot|class>class</a></code>, <code><a cbot|public>public</a></code>, <code><a cbot|private>private</a></code>, <code><a cbot|extends>extends</a></code>
    <a cbot>Programowanie</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: \b; header
en: Keyword <code>super</code>
pl: Słowo kluczowe <code>super</code>

note: type: Plain text
en: <code><a cbot|class>class</a></code>, <code><a cbot|this>this</a></code>
    <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <code><a cbot|class>class</a></code>, <code><a cbot|this>this</a></code>
    <a cbot>Programowanie</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: Plain text
en: <code><a cbot|class>class</a></code>, <code><a cbot|super>super</a></code>
    <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <code><a cbot|class>class</a></code>, <code><a cbot|super>super</a></code>
    <a cbot>Programowanie</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: \b; header
en: Keyword <code>extends</code>
pl: Słowo kluczowe <code>extends</code>

note: type: \b; header
en: Inherited Members
pl: Dziedziczone elementy

note: type: Plain text
en: Only <code><a cbot|public>public</a></code> and <code><a cbot|protected>protected</a></code> members are inherited. <code><a cbot|private>private</a></code> members are directly inaccessible even for a child, although they can be accessed indirectly through inherited methods.
pl: Tylko <code><a cbot|public>publiczne</a></code> i <code><a cbot|protected>chronione</a></code> elementy są dziedziczone. <code><a cbot|private>Prywatne</a></code> elementy są niedostępne nawet dla klas podrzędnych, mimo że mogą być dostępne niebezpośrednio poprzez metody dziedziczone.

note: type: Plain text
en: Constructors and destructors are not inherited, however, they can be overriden.
pl: Konstruktory i destruktory nie są dziedziczone, jednakże mogą być nadpisane.

note: type: \b; header
en: Method Overriding
pl: Nadpisywanie metod

note: type: Plain text
en: Inherited methods can be overriden (redefined) in the child class definition. Example:
pl: Dziedziczone metody mogą być nadpisane (ponownie zdefiniowane) w definicji klasy podrzędnej. Przykład:

note: type: Source code
en: public class Parent
    {
    	void foo()
    	{
    		message("foo");
    	}
    }
    
    public class Child extends Parent
    {
    	void foo()
    	{
    		message("bar");
    	}
    }
    
    extern void object::Test()
    {
    	Child child();
    	child.foo(); // Will show "bar"
    }
pl: public class Rodzic
    {
    	void foo()
    	{
    		message("foo");
    	}
    }
    
    public class Dziecko extends Rodzic
    {
    	void foo()
    	{
    		message("bar");
    	}
    }
    
    extern void object::Test()
    {
    	Dziecko dziecko();
    	dziecko.foo(); // Wyświetli "bar"
    }

note: type: \b; header
en: Polymorphism
pl: Polimorfizm

note: type: Plain text
en: <code><a cbot|pointer>Reference</a></code> of type Parent can point to an object of type Child. However, such a pointer can't be used to access a child member. In order to access a child member, it must be assured that the Parent reference really points to a Child object. If that's the case, it can be safely copied to a pointer of type Child, which has access to the child members.
pl: <code><a cbot|pointer>Odniesienie</a></code> typu klasy nadrzędnej może wskazywać na obiekt klasy podrzędnej. Jednak taki wskaźnik nie może zostać użyty do uzyskania dostępu do elementów klasy podrzędnej. Żeby uzyskać dostęp do elementów klasy podrzędnej, należy upewnić się, że odniesienie do klasy nadrzędnej rzeczywiście wskazuje na obiekt klasy podrzędnej. W takim przypadku może on zostać bezpiecznie skopiowany do wskaźnika typu klasy podrzędnej który ma dostęp do elementów klasy podrzędnej.

note: type: Source code
en: public class Parent
    {
    	void foo()
    	{
    		message("foo");
    	}
    }
    
    public class Child extends Parent
    {
    	void foo()
    	{
    		message("bar");
    	}
    	void bar()
    	{
    		message("foo bar");
    	}
    }
    
    extern void object::Test()
    {
    	Parent people[2];
    	people[0] = new Parent();
    	people[1] = new Child();
    	for (int i = 0; i < 2; ++i)
    	{
    		people[i].foo();
    	}
    	//people[1].bar(); // Error
    	Child child = people[1];
    	child.bar(); // OK
    }
pl: public class Rodzic
    {
    	void foo()
    	{
    		message("foo");
    	}
    }
    
    public class Dziecko extends Rodzic
    {
    	void foo()
    	{
    		message("bar");
    	}
    	void bar()
    	{
    		message("foo bar");
    	}
    }
    
    extern void object::Test()
    {
    	Rodzic ludzie[2];
    	ludzie[0] = new Rodzic();
    	ludzie[1] = new Dziecko();
    	for (int i = 0; i < 2; ++i)
    	{
    		ludzie[i].foo();
    	}
    	//ludzie[1].bar(); // Błąd
    	Dziecko dziecko = ludzie[1];
    	dziecko.bar(); // OK
    }

note: type: \b; header
en: Multiple Inheritance
pl: Wielokrotne dziedziczenie

note: type: Plain text
en: A child cannot have multiple parents, however, a parent can have many children.
pl: Klasa nie może mieć wielu klas nadrzędnych, jednakże klasa nadrzędna może mieć wiele klas podrzędnych.

note: type: Plain text
en: <code><a cbot|class>class</a></code>, <code><a cbot|public>public</a></code>, <code><a cbot|private>private</a></code>, <code><a cbot|protected>protected</a></code>, <code><a cbot|new>new</a></code>, <code><a cbot|pointer>reference</a></code>, <code><a cbot|this>this</a></code>, <code><a cbot|super>super</a></code>
    <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <code><a cbot|class>class</a></code>, <code><a cbot|public>public</a></code>, <code><a cbot|private>private</a></code>, <code><a cbot|protected>protected</a></code>, <code><a cbot|new>new</a></code>, <code><a cbot|pointer>reference</a></code>, <code><a cbot|this>this</a></code>, <code><a cbot|super>super</a></code>
    <a cbot>Programowanie</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: Plain text
en: This keyword is similar to <code><a cbot|this>this</a></code>, however, it grants access to methods from the parent class (see the <code><a cbot|extends>extends</a></code> keyword), which is especially useful for method overriding.
pl: To słowo kluczowe jest podobne do <code><a cbot|this>this</a></code>, jednakże daje dostęp do metod klasy nadrzędnej (zobacz słowo kluczowe <code><a cbot|extends>extends</a></code>), co jest przydatne zwłaszcza w przypadku nadpisywania metod.

note: type: Source code
en: public class Parent
    {
    	protected int field;
    	
    	void Parent()
    	{
    		field = 0;
    	}
    	
    	void Print()
    	{
    		message("Parent's field: " + field);
    	}
    }
    
    public class Child extends Parent
    {
    	private int childsField;
    	
    	void Child()
    	{
    		super.Parent();
    		childsField = field + 1;
    	}
    	
    	void Print()
    	{
    		super.Print();
    		message("Child's field: " + childsField);
    	}
    }
    
    extern void object::Test()
    {
    	Child child();
    	child.Print(); // Will show both 0 and 1
    }
pl: public class Rodzic
    {
    	protected int pole;
    	
    	void Rodzic()
    	{
    		pole = 0;
    	}
    	
    	void Drukuj()
    	{
    		message("Pole rodzica: " + pole);
    	}
    }
    
    public class Dziecko extends Rodzic
    {
    	private int poleDziecka;
    	
    	void Dziecko()
    	{
    		super.Rodzic();
    		poleDziecka = pole + 1;
    	}
    	
    	void Drukuj()
    	{
    		super.Drukuj();
    		message("Pole dziecka: " + poledziecka);
    	}
    }
    
    extern void object::Test()
    {
    	Dziecko dziecko();
    	dziecko.Drukuj(); // Pokaże zarówno 0 jak i 1
    }

note: type: Plain text
en: This keyword is used in a <code><a cbot|class>class</a></code> definition when we want the class to inherit members from another class. The class which is extended we usually call a parent or base, the extending class we call a child.
pl: To słowo kluczowe używane jest przy definicji <code><a cbot|class>klasy</a></code> gdy chcemy odziedziczyć elementy innej klasy. Rozszerzająca klasa jest zwykle nazywana rodzicem lub bazą, rozszerzana klasa nazywana jest dzieckiem.

note: type: Source code
en: public class Parent
    {
    	void foo()
    	{
    		message("foo");
    	}
    }
    
    public class Child extends Parent
    {
    	void bar()
    	{
    		message("bar");
    	}
    }
    
    extern void object::Test()
    {
    	Child child();
    	child.foo(); // Will show "foo"
    	child.bar(); // Will show "bar"
    }
pl: public class Rodzic
    {
    	void foo()
    	{
    		message("foo");
    	}
    }
    
    public class Dziecko extends Rodzic
    {
    	void bar()
    	{
    		message("bar");
    	}
    }
    
    extern void object::Test()
    {
    	Dziecko dziecko();
    	dziecko.foo(); // Will show "foo"
    	dziecko.bar(); // Will show "bar"
    }

note: type: Plain text
en: A parent's method can be called inside an overriden method by using the <code><a cbot|super>super</a></code> keyword.
pl: Metody rodzica mogą być wywoływane wewnątrz nadpisywanej metody używając słowa kluczowego <code><a cbot|super>super</a></code>.

note: type: Plain text
en: As shown in the previous example, the class members can be initialized in the class definition (<c/>int x = 3.33;<n/>).
pl: Jak pokazano w poprzednim przykładzie, elementy klasy mogą być inicjalizowane w definicji klasy (<c/>int x = 3.33;<n/>).

note: type: Plain text
en: <code>"r"</code> mode: open for reading.
    <code>"w"</code> mode: open for writing.
    <code>"a"</code> mode: open for appending.
pl: <code>"r"</code> tryb: otwarty do odczytu.
    <code>"w"</code> tryb: otwarty do zapisu.
    <code>"a"</code> tryb: otwarty do dopisywania.

note: type: Plain text
en: <c/>openfile();<n/> opens an text file in the files/ folder. This is not a method of the <code><a cbot|file>file</a></code> class but openfile returns a <a cbot|pointer>reference</a> to a new instance of the file class. You must supply two parameters, the filename and the opening mode.
pl: <c/>openfile();<n/> otwiera plik tekstowy w folderze files/. Nie jest to metoda klasy <code><a cbot|file>file</a></code>, jednak openfile zwraca <a cbot|pointer>referencję</a> do nowej instancji klasy file.

note: type: Plain text
en: <code>"r"</code> mode: open for reading.
    <code>"w"</code> mode: open for writing.
    <code>"w"</code> mode: open for appending.
pl: <code>"r"</code> tryb: otwarty do odczytu.
    <code>"w"</code> tryb: otwarty do zapisu.
    <code>"a"</code> tryb: otwarty do dopisywania.

note: type: Plain text
en: Nothing but a name can be changed in the main function. The keyword <code><a cbot|extern>extern</a></code> distinguishes the main function from others.
pl: Nic oprócz nazwy nie może być zmieniane w funkcji głównej. Słowo kluczowe <code><a cbot|extern>extern</a></code> wyróżnia funkcję główną spośród pozostałych.

note: type: \b; header
en: Public Functions
pl: Funkcje publiczne

note: type: \b; header
en: Default Parameters
pl: Parametry domyślne

note: type: Plain text
en: Last function parameters can have default values that can be omitted when calling.
pl: Ostatnie parametry funkcji mogą mieć wartości domyślne, które można pominąć podczas jej wywoływania.

note: type: Source code
en: float Add(float a = 0.0, float b = 0.0)
    {
    	return a + b;
    }
    
    // Somewhere in the main program...
    Add(); // Will return 0.0
    Add(2.0); // Will return 2.0
    Add(2.0, 3.0); // Will return 5.0
    // ...
pl: float Dodaj(float a = 0.0, float b = 0.0)
    {
    	return a + b;
    }
    
    // Gdzieś w głównym programie...
    Dodaj(); // Zwróci 0.0
    Dodaj(2.0); // Zwróci 2.0
    Dodaj(2.0, 3.0); // Zwróci 5.0
    // ...

note: type: \t; header
en: Default Parameters and Overloading
pl: Domyślne parametry i przeciążanie

note: type: Plain text
en: Functions with default parameters still can be overloaded, one must only ensure that function calls are not ambiguous. For example, consider the following code:
pl: Funkcje z parametrami domyślnymi również mogą być przeciążone, pod warunkiem, że wywołanie jest jasne. Na przykład, spójrz na poniższy kod:

note: type: Source code
en: float Add(float a = 0.0, float b = 0.0)
    {
    	return a + b;
    }
    
    string Add(string a = "", string b = "")
    {
    	return a + b;
    }
    
    // Somewhere in the main program...
    Add(); // Compilation error: ambiguous call
    Add(""); // Ok
    Add(0.0); // Ok
    // ...
pl: float Dodaj(float a = 0.0, float b = 0.0)
    {
    	return a + b;
    }
    
    string Dodaj(string a = "", string b = "")
    {
    	return a + b;
    }
    
    // Gdzieś w głównym programie...
    Dodaj(); // Błąd kompilacji: niejasne wywołanie
    Dodaj(""); // Ok
    Dodaj(0.0); // Ok
    // ...

note: type: Plain text
en: Note that in the above example overloading causes the first default parameter to be useless as caller needs to pass it anyway in order to distinguish the two functions.
pl: Zwróć uwagę, że w przykładzie powyżej przeciążanie powoduje, że pierwszy parametr jest bezużyteczny, gdyż podczas wywołania funkcji trzeba go podać tak czy inaczej, by rozróżnić obie funkcje.

note: type: Plain text
en: <button 192/>   <code><a object|botbr>WheeledBuilder</a>         </code>Wheeled Builder
    <button 193/>   <code><a object|botbc>TrackedBuilder</a>         </code>Tracked Builder
    <button 194/>   <code><a object|botbj>WingedBuilder</a>          </code>Winged Builder
    <button 195/>   <code><a object|botbs>LeggedBuilder</a>          </code>Legged Builder
pl: <button 192/>   <code><a object|botbr>WheeledBuilder</a>         </code>Budowniczy na kołach
    <button 193/>   <code><a object|botbc>TrackedBuilder</a>         </code>Budowniczy na gąsienicach
    <button 194/>   <code><a object|botbj>WingedBuilder</a>          </code>Budowniczy latający
    <button 195/>   <code><a object|botbs>LeggedBuilder</a>          </code>Budowniczy na nogach

note: type: Plain text
en: The instruction <c/>build();<n/> instructs the bot to build a building of a given <a cbot|category>category</a>.
pl: Instrukcja <c/>build();<n/> nakazuje botowi rozpoczęcie budowy danego <a cbot|category>budynku</a>.

note: type: Plain text
en: Here is a program that looks for the nearest <a object|titan>titanium cube</a>, approaches it, and builds a <a object|factory>bot factory</a>.
pl: Ten program szuka najbliższej <a object|titan>kostki tytanu</a>, zbliża się do niej i buduje <a object|factory>fabrykę robotów</a>.

note: type: Plain text
en: <code><a cbot|canbuild>canbuild</a></code>, <code><a cbot|buildingenabled>buildingenabled</a></code>.
    <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <code><a cbot|canbuild>canbuild</a></code>, <code><a cbot|buildingenabled>buildingenabled</a></code>.
    <a cbot>Programowanie</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: Plain text
en: The instruction <c/>buildingenabled();<n/> lets you know if a building of a given <a cbot|category>category</a> can be built during current mission.
pl: Instrukcja <c/>buildingenabled();<n/> informuje cię czy budowanie danego <a cbot|category</a>budynku</a> jest możliwe podczas obecnej misji.

note: type: Plain text
en: <code><a cbot|build>build</a></code>, <code><a cbot|canbuild>canbuild</a></code>.
    <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <code><a cbot|build>build</a></code>, <code><a cbot|canbuild>canbuild</a></code>.
    <a cbot>Programowanie</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: Plain text
en: The instruction <c/>canbuild();<n/> lets you know if <a object|botbr>Builders</a>, <a object|human>Me</a> or <a object|human>Tech</a> can build a building of a given <a cbot|category>category</a>.
pl: Instrukcja <c/>canbuild();<n/> informuje cię czy <a object|botbr>budowniczy</a>, <a object|human>Astronauta</a> lub <a object|human>Tech</a> może zbudować dany <a cbot|category>budynek</a>.

note: type: Plain text
en: <code><a cbot|build>build</a></code>, <code><a cbot|buildingenabled>buildingenabled</a></code>.
    <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <code><a cbot|build>build</a></code>, <code><a cbot|buildingenabled>buildingenabled</a></code>.
    <a cbot>Programowanie</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: Plain text
en: Checks if a <a cbot|researches>research</a> can be done during current mission.
pl: Sprawdza czy <a cbot|researches>program badawczy</a> może być przeprowadzony w obecnej misji.

note: type: Plain text
en: <a cbot|researches>Research names</a>, <code><a cbot|research>research</a></code>, <code><a cbot|researched>researched</a></code>.
    <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <a cbot|researches>Research names</a>, <code><a cbot|research>research</a></code>, <code><a cbot|researched>researched</a></code>.
    <a cbot>Programowanie</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: Source code
en: <c/>factory ( cat, program, object );<n/>
pl: <c/>factory ( kategoria, program, obiekt );<n/>

note: type: Plain text
en: Starts a construction of a bot of a given <a cbot|category>category</a> and runs a specified program on it after the construction is finished.
pl: Zaczyna budowę robota pasującego do podanej <a cbot|category>kategorii</a> i uruchamia na nim podany program po zakończeniu budowy.

note: type: Plain text
en: Program that will be run on the bot after factory finishes the construction. This can be either a <a cbot|public>public</a> <a cbot|function>function</a>, a <a cbot|file>filename</a> or raw code.
pl: Program ten zostanie uruchomiony po zakończeniu pracy przez fabrykę. To może być zarówno <a cbot|public>publiczna</a> <a cbot|function>funkcja</a>, <a cbot|file>nazwa pliku</a> lub czysty kod.

note: type: Plain text
en: <a object|factory>BotFactory</a>, nearest by default.
pl: <a object|factory>Fabryka robotów</a>, domyślnie najbliższa.

note: type: Plain text
en: <code><a cbot|researched>researched</a></code>, <code><a cbot|wait>wait</a></code>.
    <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <code><a cbot|researched>researched</a></code>, <code><a cbot|wait>wait</a></code>.
    <a cbot>Programowanie</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: \b; header
en: Instruction <code>isbusy</code>
pl: Instrukcja <code>isbusy</code>

note: type: Source code
en: <c/>isbusy ( object );<n/>
pl: <c/>isbusy ( obiekt );<n/>

note: type: Plain text
en: Checks if a given object is busy.
pl: Sprawdza czy dany obiekt wykonuje jakieś zadanie.

note: type: Source code
en: <c/>research ( type, object );<n/>
pl: <c/>research ( typ, obiekt );<n/>

note: type: Plain text
en: Starts a <a cbot|researches>research</a> of a given type.
pl: Rozpoczyna <a cbot|researches>program badawczy</a> danego typu.

note: type: Plain text
en: <a object|research>ResearchCenter</a> or <a object|labo>AutoLab</a>. Nearest research center by default.
pl: <a object|research>Centrum badawcze</a> lub <a object|labo>laboratorium</a>. Domyślnie najbliższe centrum badawcze.

note: type: Plain text
en: <a cbot|researches>Research names</a>, <code><a cbot|canresearch>canresearch</a></code>, <code><a cbot|researched>researched</a></code>.
    <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <a cbot|researches>Research names</a>, <code><a cbot|canresearch>canresearch</a></code>, <code><a cbot|researched>researched</a></code>.
    <a cbot>Programowanie</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: Plain text
en: Checks if a <a cbot|researches>research</a> is done.
pl: Sprawdza czy <a cbot|researches>badanie</a> było przeprowadzone.

note: type: Plain text
en: <format const>true</format> if the research is done
    <format const>false</format> if the research is not done
pl: <format const>Prawda</format> jeśli przeprowadzono badania
    <format const>Fałsz</format> jeśli nie przeprowadzono badania

note: type: Plain text
en: <a cbot|researches>Research names</a>, <code><a cbot|research>research</a></code>, <code><a cbot|canresearch>canresearch</a></code>, <code><a cbot|canbuild>canbuild</a></code>.
    <a cbot>Programming</a>, <a cbot|type>types</a> and <a cbot|category>categories</a>.
pl: <a cbot|researches>Research names</a>, <code><a cbot|research>research</a></code>, <code><a cbot|canresearch>canresearch</a></code>, <code><a cbot|canbuild>canbuild</a></code>.
    <a cbot>Programowanie</a>, <a cbot|type>typy</a> i <a cbot|category>kategorie</a>.

note: type: Plain text
en: <code><format const>ResearchTracked</format>       </code>Tracked bots (e.g. <a object|botgc>tracked grabber</a>)
    <code><format const>ResearchWinged</format>        </code>Winged bots (e.g. <a object|botgj>winged grabber</a>)
    <code><format const>ResearchShooter</format>       </code><a object|botfr>Fireball cannon</a>
    <code><format const>ResearchDefenseTower</format>  </code><a object|tower>Defense tower</a>
    <code><format const>ResearchNuclearPlant</format>  </code><a object|nuclear>Nuclear plant</a>
    <code><format const>ResearchThumper</format>       </code><a object|bottump>Thumper</a>
    <code><format const>ResearchShielder</format>      </code><a object|botshld>Shielder</a>
    <code><format const>ResearchPhazerShooter</format> </code><a object|botphaz>Phazer cannon</a>
    <code><format const>ResearchBuilder</format>       </code><a object|botbr>Neutron gun</a>
pl: <code><format const>ResearchTracked</format>       </code>Roboty na gąsienicach (np. <a object|botgc>Transporter na gąsienicach</a>)
    <code><format const>ResearchWinged</format>        </code>Roboty latające (np. <a object|botgj>Transporter latający</a>)
    <code><format const>ResearchShooter</format>       </code><a object|botfr>Działo</a>
    <code><format const>ResearchDefenseTower</format>  </code><a object|tower>Wieża obronna</a>
    <code><format const>ResearchNuclearPlant</format>  </code><a object|nuclear>Elektrownia atomowa</a>
    <code><format const>ResearchThumper</format>       </code><a object|bottump>Uderzacz</a>
    <code><format const>ResearchShielder</format>      </code><a object|botshld>Osłaniacz</a>
    <code><format const>ResearchPhazerShooter</format> </code><a object|botphaz>Działo fazowe</a>
    <code><format const>ResearchBuilder</format>       </code><a object|botbr>Działo neutronowe</a>

note: type: Plain text
en: <code><format const>ResearchTarget</format>        </code><a object|bottarg>Target bot</a>
    <code><format const>ResearchLegged</format>        </code>Legged bots (e.g. <a object|botgs>legged grabber</a>)
    <code><format const>ResearchOrgaShooter</format>   </code><a object|botor>Orgaball cannon</a>
pl: <code><format const>ResearchTarget</format>        </code><a object|bottarg>Robot-cel</a>
    <code><format const>ResearchLegged</format>        </code>Roboty na nogach (np. <a object|botgs>Transporter na nogach</a>)
    <code><format const>ResearchOrgaShooter</format>   </code><a object|botor>Działo organiczne</a>

note: type: Plain text
en: <code><format const>ResearchSniffer</format>       </code><a object|botsr>Sniffer</a>
    <code><format const>ResearchSubber</format>        </code><a object|botsub>Subber</a>
    <code><format const>ResearchRecycler</format>      </code><a object|botrecy>Recycler</a>
pl: <code><format const>ResearchSniffer</format>       </code><a object|botsr>Szperacz</a>
    <code><format const>ResearchSubber</format>        </code><a object|botsub>Nurek</a>
    <code><format const>ResearchRecycler</format>      </code><a object|botrecy>Recykler</a>

note: type: Plain text
en: <a cbot>CBOT Language</a>, <a cbot|type>Variables</a> and <a cbot|category>Categories</a>.
pl: <a cbot>Język CBOT</a>, <a cbot|type>Zmienne</a> i <a cbot|category>Kategorie</a>.

note: type: Source code
en: <c/>takeoff ( object );<n/>
pl: <c/>takeoff ( obiekt );<n/>

note: type: Plain text
en: Launch a spaceship.
pl: Uruchamia statek kosmiczny.

note: type: Plain text
en: <a object|base>SpaceShip</a>, nearest by default.
pl: <a object|base>Statek kosmiczny</a>, domyślnie najbliższy.

note: type: Plain text
en: Note: the <a cbot|isbusy>isbusy</a> instruction might be much better to use in this scenario.
pl: Uwaga: W danym przypadku lepszą opcją będzie wykorzystanie instrukcji <a cbot|isbusy>isbusy</a>.

note: type: Plain text
en: Constructs a building using a titanium cube in front of the <a object|botbr>builder</a>.
pl: Tworzy budynek wykorzystując kostkę tytanu znajdującą się przed <a object|botbr>budowniczym</a>.

note: type: Plain text
en: <button 136/>   <code><a object|human>Me</a>              </code>You!
           <code><a object|mine>Mine</a>            </code>Mine
           <code><a object|barrier>Barrier</a>         </code>Barrier
           <code><a object|wreck>Wreck</a>           </code>Derelict bot
           <code><a object|ruin>Ruin</a>            </code>Derelict building
           <code><a object|bush>Bush</a>            </code>Greenery
           <code><a object|gravi>GraviPlant</a>      </code>Gravi-plant
           <code><a object|crystal>Crystal</a>         </code>Crystal
           <code><a object|bromush>BrownMushroom</a>   </code>Brown mushroom
           <code><a object|gremush>GreenMushroom</a>   </code>Poisonous green mushroom
pl: <button 136/>   <code><a object|human>Me</a>              </code>Ty!
           <code><a object|mine>Mine</a>            </code>Mina
           <code><a object|barrier>Barrier</a>         </code>Bariera
           <code><a object|wreck>Wreck</a>           </code>Wrak
           <code><a object|ruin>Ruin</a>            </code>Ruina
           <code><a object|bush>Bush</a>            </code>Roślinność
           <code><a object|gravi>GraviPlant</a>      </code>Roślina grawitacyjna
           <code><a object|crystal>Crystal</a>         </code>Kryształ
           <code><a object|bromush>BrownMushroom</a>   </code>Brązowe grzyby
           <code><a object|gremush>GreenMushroom</a>   </code>Trujące zielone grzyby

note: type: \b; header
en: Instruction <code>deflag</code>
pl: Instrukcja <code>deflag</code>

note: type: Plain text
en: Removes a <a object|flag>colored flag</a> in front of the <a object|botsr>sniffer</a>.
pl: Usuwa <a object|flag>flagę</a> znajdującą się przed <a object|botsr>szperaczem</a>.

note: type: Plain text
en: Normally an error stops the program. You can prevent the program from stopping on errors by using the <code><a cbot|errmode>errmode</a>(0)</code> instruction. A value different from zero if an error occurred is then returned by <c/>deflag();<n/>.
    <code>== 0 </code>removed a flag
    <code>!= 0 </code>could not remove a flag
pl: Zwykle wystąpienie błędu powoduje zatrzymanie programu. Można wyłączyć zatrzymywanie się programu w przypadku wystąpienia błędu, używając instrukcji <code><a cbot|errmode>errmode</a>(0)</code>. Wtedy w przypadku wystąpienia błędu instrukcja <c/>deflag();<n/> zwraca w wyniku wartość różną od zera.
    <code>== 0 </code>usunięto flagę
    <code>!= 0 </code>nie można usunąć flagi

note: type: \b; header
en: Instruction <code>flag</code>
pl: Instrukcja <code>flag</code>

note: type: Source code
en: <c/>flag ( color );<n/>
pl: <c/>flag ( kolor );<n/>

note: type: Plain text
en: Plants a <a object|flag>colored flag</a> in front of the <a object|botsr>sniffer</a>.
pl: Umieszcza <a object|flag>flagę</a> przed <a object|botsr>szperaczem</a>.

note: type: \t; header
en: color: <code><a cbot|int>int</a></code> (default value: <code>Blue</code>)
pl: kolor: <code><a cbot|int>int</a></code> (domyślna wartość: <code>Blue</code> (niebieski) )

note: type: Plain text
en: <code>Blue</code>
    <code>Red</code>
    <code>Green</code>
    <code>Yellow</code>
    <code>Violet</code>
pl: <code>Blue</code> (niebieski)
    <code>Red</code> (czerwony)
    <code>Green</code> (zielony)
    <code>Yellow</code> (żółty)
    <code>Violet</code> (fioletowy)

note: type: Plain text
en: Normally an error stops the program. You can prevent the program from stopping on errors by using the <code><a cbot|errmode>errmode</a>(0)</code> instruction. A value different from zero if an error occurred is then returned by <c/>flag();<n/>.
    <code>== 0 </code>planted a flag
    <code>!= 0 </code>could not plant a flag
pl: Zwykle wystąpienie błędu powoduje zatrzymanie programu. Można wyłączyć zatrzymywanie się programu w przypadku wystąpienia błędu, używając instrukcji <code><a cbot|errmode>errmode</a>(0)</code>. Wtedy w przypadku wystąpienia błędu instrukcja <c/>flag();<n/> zwraca w wyniku wartość różną od zera.
    <code>== 0 </code>umieszczono flagę
    <code>!= 0 </code>nie można umieścić flagi
