\b;Die Programmiersprache CBOT
CBOT ist den Standardprogrammiersprachen C++ und Java in Syntax und Struktur sehr ähnlich. Für den Zweck der Anwendung in Colobot und aus pädagogischen Gründen wurden einige Anpassungen vorgenommen.
CBOT besteht wie jede objektorientierte Sprache aus Befehlen (siehe unten), \l;Blöcken\u cbot\bloc;, \l;Funktionen\u cbot\function;, \l;Klassen\u cbot\class;, \l;Variablen\u cbot\var;, \l;Arrays\u cbot\array;, \l;Ausdrücken\u cbot\expr; und \l;Bedingungen\u cbot\cond;.

o  \c;\token;Befehle\norm;\n;
Im Programmeditor werden Befehle in der CBOT-Sprache immer mit orangefarbenem Hintergrund angezeigt. Wenn ein Befehl keinen farbigen Hintergrund hat, wurde er nicht richtig geschrieben. Befehle werden immer in Kleinbuchstaben geschrieben. 

o  \c;\type;Typ\norm;\n;
Der \l;Typ\u cbot\type; einer Variable erscheint immer mit grünem Hintergrund.

o  \c;\const;Konstanten\norm;\n;
Konstanten werden wie \l;Kategorien\u cbot\category; immer mit rotem Hintergrund angezeigt.. 

\t;Befehle der CBOT-Sprache:
\c;\l;extern\u cbot\extern;     \n;Bezeichnet die Hauptfunktion
\c;\l;if\u cbot\if;         \n;Bedingte Struktur
\c;\l;else\u cbot\if;       \n;Alternative bedingte Struktur
\c;\l;for\u cbot\for;        \n;Schleifenstruktur
\c;\l;while\u cbot\while;      \n;Bedingte Schleifenstruktur
\c;\l;do\u cbot\do;         \n;Bedingte Schleifenstruktur
\c;\l;break\u cbot\break;      \n;Abbruch einer Schleife
\c;\l;continue\u cbot\continue;   \n;Neuanfang einer Schleife
\c;\l;return\u cbot\return;     \n;Rückkehr von einer Funktion
\c;\l;sizeof\u cbot\sizeof;     \n;Grösse eines Arrays

\t;Befehle für die Steuerung der Roboter:
\c;\l;radar\u cbot\radar;      \n;Sucht ein Objekt einer bestimmten Kategorie
\c;\l;direction\u cbot\direct;  \n;Berechnet einen Rotationswinkel
\c;\l;distance\u cbot\dist;   \n;Berechnet die Distanz zwischen zwei Objekten
\c;\l;distance2d\u cbot\dist2d; \n;Berechnet eine Distanz ohne Höhenunterschied
\c;\l;wait\u cbot\wait;       \n;Wartet
\c;\l;move\u cbot\move;       \n;Geradlinige Bewegung vorwärts/rückwärts
\c;\l;turn\u cbot\turn;       \n;Drehung auf der Stelle
\c;\l;goto\u cbot\goto;       \n;Geht zu einer angegebenen Position
\c;\l;motor\u cbot\motor;      \n;Direkte Kontrolle der Motoren
\c;\l;jet\u cbot\jet;        \n;Direkte Kontrolle des Jets
\c;\l;message\u cbot\message;    \n;Zeigt eine Meldung an
\c;\l;retobject\u cbot\retobj;  \n;Bescheibung eines Objekts
\c;\l;errmode\u cbot\errmode;    \n;Einstellen der Verarbeitung von Fehlermeldungen
\c;\l;abstime\u cbot\abstime;    \n;Verflossene Zeit

\t;Befehle für die Erforschung des Geländes:
\c;\l;space\u cbot\space;      \n;Findet eine leere Fläche
\c;\l;topo\u cbot\topo;       \n;Höhe einer Position
\c;\l;flatground\u cbot\flatgrnd; \n;Radius eine flachen Fläche

\t;Befehle für bestimmte Roboter:
\c;\l;grab\u cbot\grab;       \n;Ergreift einen Gegenstand
\c;\l;drop\u cbot\drop;       \n;Legt einen Gegenstand nieder
\c;\l;fire\u cbot\fire;       \n;Feuert die Kanone ab
\c;\l;aim\u cbot\aim;        \n;Senkrechte Aussrichtung der Kanone
\c;\l;sniff\u cbot\sniff;      \n;Sondiert den Untergrund
\c;\l;thump\u cbot\thump;      \n;Stampfen
\c;\l;recycle\u cbot\recycle;    \n;Wiederverwertung eines Wracks
\c;\l;shield\u cbot\shield;     \n;Steuerung des Schutzschildes

\t;Befehle für den Austausch mit Infoservern:
\c;\l;receive\u cbot\receive;    \n;Abruf einer Information
\c;\l;send\u cbot\send;       \n;Speichert eine Information im Server
\c;\l;testinfo\u cbot\testinfo;   \n;Test ob eine Information existiert
\c;\l;deleteinfo\u cbot\delinfo; \n;Löscht eine Information

\t;Befehle für die Verwaltung von Klassen:
\c;\l;class\u cbot\class;      \n;Deklaration einer Klasse
\c;\l;public\u cbot\public;     \n;Deklaration einer öffentliche Funktion
\c;\l;private\u cbot\private;    \n;Deklaration eines privaten Gliedes
\c;\l;static\u cbot\static;     \n;Deklaration eines statischen Gliedes
\c;\l;synchronized\u cbot\synchro; \n;Verhindert gleichzeitige Ausführung
\c;\l;new\u cbot\new;        \n;Erstellt eine neue Instanz
\c;\l;this\u cbot\this;       \n;Bezieht sich auf die laufende Instanz

\t;Befehle für die Verarbeitung von Strings (Zeichenketten):
\c;\l;strlen\u cbot\strlen;     \n;Länge des Strings
\c;\l;strleft\u cbot\strleft;    \n;Ergibt den linken Teil
\c;\l;strright\u cbot\strright;   \n;Ergibt den rechten Teil
\c;\l;strmid\u cbot\strmid;     \n;Auszug aus der Mitte
\c;\l;strfind\u cbot\strfind;    \n;Sucht einen eingebetteten String
\c;\l;strval\u cbot\strval;     \n;Umwandlung String zu Zahl
\c;\l;strupper\u cbot\strupper;   \n;Umwandlung in Grossbuchstaben
\c;\l;strlower\u cbot\strlower;   \n;Umwandlung in Kleinbuchstaben

\t;Befehle für die Dateiverwaltung:
\c;\l;open\u cbot\open;       \n;Datei öffnen
\c;\l;close\u cbot\close;      \n;Datei schliessen
\c;\l;writeln\u cbot\writeln;    \n;Schreibt eine Zeile in die Datei
\c;\l;readln\u cbot\readln;     \n;Liest eine Zeile aus der Datei
\c;\l;eof\u cbot\eof;        \n;Test ob Dateiende erreicht
\c;\l;deletefile\u cbot\deletef; \n;Löscht eine Datei

\t;Siehe auch
\l;Variablentypen\u cbot\type; und \l;Kategorien\u cbot\category;.
