\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;.

\l;o\u cheats;  \c;\token;Instructions\norm;\n;
In the program editor, an instruction in the CBOT language is always displayed like that: \token;instruction\norm;. If an instruction is not highlighted, this means that it has been misspelled. Instruction names are always written in lower case. 

o  \c;\type;Typ\norm;\n;
The \l;type\u cbot\type; of a variable appears like that: \type;type\norm;. 

o  \c;\const;Konstanten\norm;\n;
Constants like \l;categories\u cbot\category; are displayed like that: \const;constant\norm;. 

\t;Befehle der CBOT-Sprache:
\c;\l;extern\u cbot\extern;     \n;Indicate the main function
\c;\l;if\u cbot\if;         \n;Choice structure
\c;\l;else\u cbot\if;       \n;Alternative choice structure
\c;\l;switch\u cbot\switch;     \n;Multiple choice structure
\c;\l;case\u cbot\switch;       \n;One choice
\c;\l;default\u cbot\switch;    \n;Default choice
\c;\l;for\u cbot\for;        \n;Loop structure
\c;\l;while\u cbot\while;      \n;Control structure
\c;\l;do\u cbot\do;         \n;Control structure
\c;\l;break\u cbot\break;      \n;Exit from a loop
\c;\l;continue\u cbot\continue;   \n;Continues the loop
\c;\l;return\u cbot\return;     \n;Exit from a function
\c;\l;sizeof\u cbot\sizeof;     \n;Size of an array

\t;Befehle für die Steuerung der Roboter:
\c;\l;detect\u cbot\detect;     \n;Simple object detection
\c;\l;radar\u cbot\radar;      \n;Advanced object detection
\c;\l;radarall\u cbot\radarall;   \n;Advanced multiple objects detection
\c;\l;search\u cbot\search;     \n;Object detection from a specific point
\c;\l;direction\u cbot\direct;  \n;Calculates a rotation angle
\c;\l;distance\u cbot\dist;   \n;Calculates a distance
\c;\l;distance2d\u cbot\dist2d; \n;Calculates a distance
\c;\l;wait\u cbot\wait;       \n;Waits
\c;\l;move\u cbot\move;       \n;Moves forward or backward
\c;\l;turn\u cbot\turn;       \n;Turns
\c;\l;goto\u cbot\goto;       \n;Goes to a given position
\c;\l;motor\u cbot\motor;      \n;Direct motor control
\c;\l;jet\u cbot\jet;        \n;Direct jet engine control
\c;\l;message\u cbot\message;    \n;Displays a message
\c;\l;retobject\u cbot\retobj;  \n;Returns an object from a function
\c;\l;errmode\u cbot\errmode;    \n;Error treatement control
\c;\l;abstime\u cbot\abstime;    \n;Returns the absolute time
\c;\l;pendown\u cbot\pendown;    \n;Starts drawing
\c;\l;penup\u cbot\penup;      \n;Stops drawing
\c;\l;pencolor\u cbot\pencolor;   \n;Changes the pen color
\c;\l;penwidth\u cbot\penwidth;   \n;Changes the pen width
\c;\l;canresearch\u cbot\canresearch; \n;Checks if a technology can be researched
\c;\l;researched\u cbot\researched; \n;Checks if a technology is researched

\t;Befehle für die Erforschung des Geländes:
\c;\l;space\u cbot\space;      \n;Calculates a free space
\c;\l;flatspace\u cbot\flatspace;  \n;Calculates a free, flat space
\c;\l;topo\u cbot\topo;       \n;Returns the altitude of a point
\c;\l;flatground\u cbot\flatgrnd; \n;Returns radius of a flat area

\t;Befehle für bestimmte Roboter:
\c;\l;grab\u cbot\grab;       \n;Picks up an object
\c;\l;drop\u cbot\drop;       \n;Puts down an object
\c;\l;sniff\u cbot\sniff;      \n;Sounds the subsoil
\c;\l;thump\u cbot\thump;      \n;Overturns alien insects
\c;\l;recycle\u cbot\recycle;    \n;Recycles a derelict bot
\c;\l;shield\u cbot\shield;     \n;Extends or withdraws the shield
\c;\l;fire\u cbot\fire;       \n;Fires the cannon
\c;\l;aim\u cbot\aim;        \n;Rotates the cannon
\c;\l;build\u cbot\build;      \n;Builds a building
\c;\l;canbuild\u cbot\canbuild;   \n;Checks if a building can be built
\c;\l;buildingenabled\u cbot\buildingenabled; \n;Checks if a building can be built in the level

\t;Instructions specific for some \l;objects\u cbot\object;:
\c;\l;factory\u cbot\factory;    \n;Starts construction of a bot
\c;\l;research\u cbot\research;   \n;Starts a research
\c;\l;takeoff\u cbot\takeoff;    \n;Takes off a spaceship
\c;\l;busy\u cbot\busy;       \n;Checks if object is busy

\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;Class declararion
\c;\l;public\u cbot\public;     \n;Declares a public class member
\c;\l;private\u cbot\private;    \n;Declares a private class member
\c;\l;protected\u cbot\protected;  \n;Declares a protected class member
\c;\l;static\u cbot\static;     \n;Declares a static class member
\c;\l;synchronized\u cbot\synchro; \n;Prevents simultaneous execution
\c;\l;new\u cbot\new;        \n;Creates a new instance
\c;\l;this\u cbot\this;       \n;Reference to the current instance
\c;\l;extends\u cbot\extends;    \n;Extends a class
\c;\l;super\u cbot\super;      \n;Grants access to the parent class

\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;Mathematical functions:
\c;\l;rand\u cbot\rand;       \n;Returns a random value
\c;\l;pow\u cbot\pow;        \n;Returns a power
\c;\l;sqrt\u cbot\sqrt;       \n;Returns a square root
\c;\l;floor\u cbot\floor;      \n;Returns the largest previous integer
\c;\l;ceil\u cbot\ceil;       \n;Returns the smallest following integer
\c;\l;round\u cbot\round;      \n;Returns a rounded number
\c;\l;trunc\u cbot\trunc;      \n;Returns a truncated number
\c;\l;sin\u cbot\sin;        \n;Returns a sine
\c;\l;cos\u cbot\cos;        \n;Returns a cosine
\c;\l;tan\u cbot\tan;        \n;Returns a tangent
\c;\l;asin\u cbot\asin;       \n;Returns an arcus sine
\c;\l;acos\u cbot\acos;       \n;Returns an arcus cosine
\c;\l;atan\u cbot\atan;       \n;Returns an arcus tangent
\c;\l;atan2\u cbot\atan2;      \n;Returns an arcus tangent, has two arguments

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