\b;Programování - jazyk CBOT
Jazyk CBOT se strukturou a syntaxí velmi podobá C++ a Javě. Byl vytvořen speciálně pro potřeby COLOBOTu a snadnou výuku programování. Tento jazyk se skládá z příkazů (viz níže), \l;bloků\u cbot\bloc;, \l;funkcí\u cbot\function;, \l;tříd\u cbot\class;, \l;proměnných\u cbot\var;, \l;polí\u cbot\array;, \l;výrazů\u cbot\expr; a \l;podmínek\u cbot\cond;.

\l;o\u cheats;  \c;\token;Příkazy\norm;\n;
V editoru programu jsou příkazy jazyka CBOT vždy zvýrazněny takto: \token;příkaz\norm;. Pokud některý příkaz zvýrazěný není, znamená to, že je v něm překlep. Názvy příkazů se vždy píší malými písmeny. 

o  \c;\type;Datové typy\norm;\n;
\l;Datový typ\u cbot\type; proměnné je vždy zvýrazněn takto: \type;typ\norm;. 

o  \c;\const;Konstanty\norm;\n;
Konstanty, například \l;kategorie\u cbot\category;, jsou vždy zvýrazněny takto: \const;konstanta\norm;. 

\t;Příkazy v jazyce CBOT:
\c;\l;extern\u cbot\extern;     \n;Označení hlavní funkce programu
\c;\l;if\u cbot\if;         \n;Podmíněné zpracování
\c;\l;else\u cbot\if;       \n;Druhá varianta podmíněného zpracování
\c;\l;switch\u cbot\switch;     \n;Podmíněné zpracování s více možnostmi
\c;\l;case\u cbot\switch;       \n;Jedna z předepsaných možností
\c;\l;default\u cbot\switch;    \n;Souhrnná možnost pro ostatní hodnoty
\c;\l;for\u cbot\for;        \n;Druh cyklu
\c;\l;while\u cbot\while;      \n;Druh cyklu
\c;\l;do\u cbot\do;         \n;Druh cyklu
\c;\l;break\u cbot\break;      \n;Ukončení cyklu
\c;\l;continue\u cbot\continue;   \n;Skok na další kolo cyklu
\c;\l;return\u cbot\return;     \n;Návrat z funkce
\c;\l;sizeof\u cbot\sizeof;     \n;Počet prvků v poli

\t;Příkazy pro ovládání robotů:
\c;\l;detect\u cbot\detect;     \n;Zjednodušené hledání objektů
\c;\l;radar\u cbot\radar;      \n;Pokročilé hledání objektů
\c;\l;radarall\u cbot\radarall;   \n;Pokročilé hledání více objektů
\c;\l;search\u cbot\search;     \n;Hledání objektů poblíž jiného bodu
\c;\l;direction\u cbot\direct;  \n;Spočítá úhel pro otočení
\c;\l;distance\u cbot\dist;   \n;Spočítá vzdálenost
\c;\l;distance2d\u cbot\dist2d; \n;Spočítá vzdálenost
\c;\l;wait\u cbot\wait;       \n;Čekání
\c;\l;move\u cbot\move;       \n;Pohyb vpřed nebo vzad
\c;\l;turn\u cbot\turn;       \n;Otočení
\c;\l;goto\u cbot\goto;       \n;Přesun na zadanou pozici
\c;\l;motor\u cbot\motor;      \n;Přímé ovládání motoru
\c;\l;jet\u cbot\jet;        \n;Přímé ovládání tryskového motoru
\c;\l;message\u cbot\message;    \n;Zobrazí zprávu
\c;\l;retobject\u cbot\retobj;  \n;Hledání objektu podle ID
\c;\l;errmode\u cbot\errmode;    \n;Nastavení oznamování chyb
\c;\l;abstime\u cbot\abstime;    \n;Vrací absolutní čas
\c;\l;pendown\u cbot\pendown;    \n;Zahájí kreslení
\c;\l;penup\u cbot\penup;      \n;Ukončí kreslení
\c;\l;pencolor\u cbot\pencolor;   \n;Změní barvu tužky
\c;\l;penwidth\u cbot\penwidth;   \n;Změní tloušťku čáry
\c;\l;factory\u cbot\factory;    \n;Zahájí výrobu robota
\c;\l;research\u cbot\research;   \n;Zahájí výzkum
\c;\l;takeoff\u cbot\takeoff;    \n;Přikáže raketě odletět
\c;\l;isbusy\u cbot\isbusy;     \n;Zjistí, jestli objekt právě provádí nějakou akci
\c;\l;canresearch\u cbot\canresearch;\n;Zjistí, jestli se daná technologie dá zkoumat
\c;\l;researched\u cbot\researched; \n;Zjistí, jestli už je daná technologie vyzkoumaná
\c;\l;canbuild\u cbot\canbuild;   \n;Zjistí, jestli lze stavět budovu
\c;\l;buildingenabled\u cbot\buildingenabled; \n;Zjistí, jestli je daný typ budovy v aktuální misi dostupný

\t;Příkazy týkající se terénu:
\c;\l;space\u cbot\space;      \n;Hledá volné místo požadované velikosti
\c;\l;flatspace\u cbot\flatspace;  \n;Hledá volný rovný terén požadované velikosti
\c;\l;topo\u cbot\topo;       \n;Vrací nadmořskou výšku terénu
\c;\l;flatground\u cbot\flatgrnd; \n;Vrací poloměr rovného terénu

\t;Příkazy vyhrazené jen pro některé roboty:
\c;\l;grab\u cbot\grab;       \n;Zvedne předmět
\c;\l;drop\u cbot\drop;       \n;Položí předmět
\c;\l;sniff\u cbot\sniff;      \n;Detekce podzemních zdrojů
\c;\l;thump\u cbot\thump;      \n;Převalí mimozemské brouky na záda
\c;\l;recycle\u cbot\recycle;    \n;Zrecykluje vrak robota
\c;\l;shield\u cbot\shield;     \n;Zapne nebo vypne mobilní štít
\c;\l;fire\u cbot\fire;       \n;Vystřelí z kanónu
\c;\l;aim\u cbot\aim;        \n;Zamíří kanón
\c;\l;build\u cbot\build;      \n;Postaví budovu
\c;\l;flag\u cbot\flag;       \n;Umístí vlajku
\c;\l;deflag\u cbot\deflag;     \n;Odstraní vlajku

\t;Příkazy pro komunikační stanice:
\c;\l;receive\u cbot\receive;    \n;Načte informaci
\c;\l;send\u cbot\send;       \n;Uloží informaci
\c;\l;testinfo\u cbot\testinfo;   \n;Zjistí, jestli informace existuje
\c;\l;deleteinfo\u cbot\delinfo; \n;Smaže existující informaci

\t;Příkazy pro práci s třídami:
\c;\l;class\u cbot\class;      \n;Deklarace třídy
\c;\l;public\u cbot\public;     \n;Deklaruje veřejný prvek třídy
\c;\l;private\u cbot\private;    \n;Deklaruje soukromý prvek třídy
\c;\l;protected\u cbot\protected;  \n;Deklaruje chráněný prvek třídy
\c;\l;static\u cbot\static;     \n;Deklaruje statický prvek třídy
\c;\l;synchronized\u cbot\synchro; \n;Blokuje paralelní spouštění funkce
\c;\l;new\u cbot\new;        \n;Vytvoří novou instanci třídy
\c;\l;this\u cbot\this;       \n;Ukazatel na aktuální instanci třídy
\c;\l;extends\u cbot\extends;    \n;Vytvoří odvozenou třídu
\c;\l;super\u cbot\super;      \n;Ukazatel na rodičovskou třídu

\t;Příkazy pro práci s textovými řetězci:
\c;\l;strlen\u cbot\strlen;     \n;Zjistí délku řetězce
\c;\l;strleft\u cbot\strleft;    \n;Vrátí podřetězec na začátku
\c;\l;strright\u cbot\strright;   \n;Vrátí podřetězec na konci
\c;\l;strmid\u cbot\strmid;     \n;Vrátí podřetězec uprostřed
\c;\l;strfind\u cbot\strfind;    \n;Hledá podřetězec
\c;\l;strval\u cbot\strval;     \n;Převede řetězec na číslo
\c;\l;strupper\u cbot\strupper;   \n;Změní řetězec na velká písmena
\c;\l;strlower\u cbot\strlower;   \n;Změní řetězec na malá písmena

\t;Příkazy pro práci se soubory:
\c;\l;open\u cbot\open;       \n;Otevře soubor
\c;\l;close\u cbot\close;      \n;Uzavře otevřený soubor
\c;\l;writeln\u cbot\writeln;    \n;Zapíše řádek do souboru
\c;\l;readln\u cbot\readln;     \n;Načte řádek ze souboru
\c;\l;eof\u cbot\eof;        \n;Zjistí, jestli je kurzor na konci souboru
\c;\l;deletefile\u cbot\deletef; \n;Smaže soubor

\t;Matematické funkce:
\c;\l;rand\u cbot\rand;       \n;Vrátí náhodné číslo
\c;\l;pow\u cbot\pow;        \n;Spočítá mocninu
\c;\l;sqrt\u cbot\sqrt;       \n;Spočítá druhou odmocninu
\c;\l;floor\u cbot\floor;      \n;Zaokrouhlí číslo dolů
\c;\l;ceil\u cbot\ceil;       \n;Zaokrouhlí číslo nahoru
\c;\l;round\u cbot\round;      \n;Zaokrouhlí číslo
\c;\l;trunc\u cbot\trunc;      \n;Usekne desetinnou část čísla
\c;\l;sin\u cbot\sin;        \n;Spočítá sinus úhlu
\c;\l;cos\u cbot\cos;        \n;Spočítá kosinus úhlu
\c;\l;tan\u cbot\tan;        \n;Spočítá tangens úhlu
\c;\l;asin\u cbot\asin;       \n;Spočítá arkus sinus
\c;\l;acos\u cbot\acos;       \n;Spočítá arkus kosinus
\c;\l;atan\u cbot\atan;       \n;Spočítá arkus tangens
\c;\l;atan2\u cbot\atan2;      \n;Spočítá arkus tangens, vyžaduje dva argumenty

\t;Užitečné odkazy
\l;Datové typy\u cbot\type; a \l;kategorie\u cbot\category;.
