\b;Programação - a linguagem CBOT
A linguagem CBOT é muito perto em estrutura a sintaxe de C++ e Java. Ela foi adaptada para os propósitos específicos de COLOBOT, e para uma abordagem pedagógica eficiente.
A linguagem é formada por várias instruções (veja abaixo), \l;blocos\u cbot\bloc;, \l;funções\u cbot\function;, \l;classes\u cbot\class;, \l;variáveis\u cbot\var;, \l;matrizes\u cbot\array;, \l;expressões\u cbot\expr; e \l;condições\u cbot\cond;.

\l;o\u cheats;  \c;\token;Instruções\norm;\n;
No editor do programa, uma instrução da linguagem CBOT sempre é exibida assim: \token;instrução\norm;. Se uma instrução não está destacada, isto significa que ela foi escrita incorretamente. Nomes de instruções sempre são escritos em letras minúsculas.

o  \c;\type;Tipo\norm;\n;
O \l;tipo\u cbot\type; de uma variável aparece assim: \type;tipo\norm;. 

o  \c;\const;Constantes\norm;\n;
Constantes como \l;categorias\u cbot\category; são exibidas assim: \const;constante\norm;. 

\t;Instruções na linguagem CBOT:
\c;\l;extern\u cbot\extern;     \n;Indique a função principal
\c;\l;if\u cbot\if;         \n;Estrutura de decisão
\c;\l;else\u cbot\if;       \n;Estrutura de decisão alternativa
\c;\l;switch\u cbot\switch;     \n;Estrutura de decisão múltipla
\c;\l;case\u cbot\switch;       \n;Uma escolha
\c;\l;default\u cbot\switch;    \n;Escolha padrão
\c;\l;for\u cbot\for;        \n;Estrutura de repetição
\c;\l;while\u cbot\while;      \n;Estrutura de repetição
\c;\l;do\u cbot\do;         \n;Estrutura de controle
\c;\l;break\u cbot\break;      \n;Sair de um laço
\c;\l;continue\u cbot\continue;   \n;Continuar o laço
\c;\l;return\u cbot\return;     \n;Sair de uma função
\c;\l;sizeof\u cbot\sizeof;     \n;Tamanho de uma matriz

\t;Instruções específicas para robôs:
\c;\l;detect\u cbot\detect;     \n;Detecção simples de objetos
\c;\l;radar\u cbot\radar;      \n;Detecção avançada de objetos
\c;\l;radarall\u cbot\radarall;   \n;Detecção avançada múltipla de objetos
\c;\l;search\u cbot\search;     \n;Detecção de objetos a partir de um ponto
\c;\l;direction\u cbot\direct;  \n;Calcula um ângulo de rotação
\c;\l;distance\u cbot\dist;   \n;Calcula uma distância
\c;\l;distance2d\u cbot\dist2d; \n;Calcula uma distância
\c;\l;wait\u cbot\wait;       \n;Espera
\c;\l;move\u cbot\move;       \n;Move para frente ou para trás
\c;\l;turn\u cbot\turn;       \n;Gira
\c;\l;goto\u cbot\goto;       \n;Vai para uma posição dada
\c;\l;motor\u cbot\motor;      \n;Controle direto do motor
\c;\l;jet\u cbot\jet;        \n;Controle direto do motor a jato
\c;\l;message\u cbot\message;    \n;Exibe uma mensagem
\c;\l;retobject\u cbot\retobj;  \n;Retorna um objeto de uma função
\c;\l;errmode\u cbot\errmode;    \n;Controle de tratamento de erros
\c;\l;abstime\u cbot\abstime;    \n;Retorna o tempo absoluto
\c;\l;pendown\u cbot\pendown;    \n;Começa a desenhar
\c;\l;penup\u cbot\penup;      \n;Para de desenhar
\c;\l;pencolor\u cbot\pencolor;   \n;Muda a cor da caneta
\c;\l;penwidth\u cbot\penwidth;   \n;Muda a largura da caneta
\c;\l;canresearch\u cbot\canresearch; \n;Checa se uma tecnologia pode ser pesquisada
\c;\l;researched\u cbot\researched; \n;Verifica se uma tecnologia foi pesquisada

\t;Instruções sobre topologia:
\c;\l;space\u cbot\space;      \n;Calcula um espaço livre
\c;\l;flatspace\u cbot\flatspace;  \n;Calcula um espaço livre e plano
\c;\l;topo\u cbot\topo;       \n;Retorna a altitude de um ponto
\c;\l;flatground\u cbot\flatgrnd; \n;Retorna o raio de uma área plana

\t;Instruções específicas para alguns robôs:
\c;\l;grab\u cbot\grab;       \n;Pega um objeto
\c;\l;drop\u cbot\drop;       \n;Solta um objeto
\c;\l;sniff\u cbot\sniff;      \n;Sonda o subsolo
\c;\l;thump\u cbot\thump;      \n;Derruba insetos alienígenass
\c;\l;recycle\u cbot\recycle;    \n;Recicla um robô abandonado
\c;\l;shield\u cbot\shield;     \n;Extende ou retira o escudo
\c;\l;fire\u cbot\fire;       \n;Atira o canhão
\c;\l;aim\u cbot\aim;        \n;Rotaciona o canhão
\c;\l;build\u cbot\build;      \n;Constrói um edifício
\c;\l;canbuild\u cbot\canbuild;   \n;Checa se um edifício pode ser construído
\c;\l;buildingenabled\u cbot\buildingenabled; \n;Checa se um edifício pode ser construído na missão

\t;Instruções específicas para alguns \l;objetos\u cbot\object;:
\c;\l;factory\u cbot\factory;    \n;Inicia a construção de um robô
\c;\l;research\u cbot\research;   \n;Inicia uma pesquisa
\c;\l;takeoff\u cbot\takeoff;    \n;Decola a espaçonave
\c;\l;busy\u cbot\busy;       \n;Checa se um objeto está ocupado

\t;Instruções específicas para postos de troca:
\c;\l;receive\u cbot\receive;    \n;Recebe uma informação
\c;\l;send\u cbot\send;       \n;Envia uma nova informação
\c;\l;testinfo\u cbot\testinfo;   \n;Testa se uma informação existe
\c;\l;deleteinfo\u cbot\delinfo; \n;Deleta uma informação existente

\t;Instruções específicas para classes:
\c;\l;class\u cbot\class;      \n;Declaração de classes
\c;\l;public\u cbot\public;     \n;Declara um membro de classe público
\c;\l;private\u cbot\private;    \n;Declara um membro de classe privado
\c;\l;protected\u cbot\protected;  \n;Declara um membro de classe protegido
\c;\l;static\u cbot\static;     \n;Declara um membro de classe estático
\c;\l;synchronized\u cbot\synchro; \n;Previne execução simultânea
\c;\l;new\u cbot\new;        \n;Cria uma nova instância
\c;\l;this\u cbot\this;       \n;Referência para a instância atual
\c;\l;extends\u cbot\extends;    \n;Extende uma classe
\c;\l;super\u cbot\super;      \n;Garante acesso a classe pai

\t;Instruções específicas para cadeias de carácteres (string):
\c;\l;strlen\u cbot\strlen;     \n;Pega o tamanho da string
\c;\l;strleft\u cbot\strleft;    \n;Extrai a parte esquerda
\c;\l;strright\u cbot\strright;   \n;Extrai a parte direita
\c;\l;strmid\u cbot\strmid;     \n;Extrai a parte central
\c;\l;strfind\u cbot\strfind;    \n;Encontra um subtexto.
\c;\l;strval\u cbot\strval;     \n;Converte string para número
\c;\l;strupper\u cbot\strupper;   \n;Converte para maiúsculas
\c;\l;strlower\u cbot\strlower;   \n;Converte para minúsculas

\t;Instruções específicas para arquivos:
\c;\l;open\u cbot\open;       \n;Abre um arquivo
\c;\l;close\u cbot\close;      \n;Fecha um arquivo
\c;\l;writeln\u cbot\writeln;    \n;Escreve linha em um arquivo
\c;\l;readln\u cbot\readln;     \n;Lê linhas de um arquivo
\c;\l;eof\u cbot\eof;        \n;Testa se é o fim do arquivo
\c;\l;deletefile\u cbot\deletef; \n;Exclui um arquivo

\t;Funções matemáticas:
\c;\l;rand\u cbot\rand;       \n;Retorna um valor aleatório
\c;\l;pow\u cbot\pow;        \n;Retorna uma potência
\c;\l;sqrt\u cbot\sqrt;       \n;Retorna uma raiz quadrada
\c;\l;floor\u cbot\floor;      \n;Retorna o maior inteiro anterior
\c;\l;ceil\u cbot\ceil;       \n;Retorna o menor inteiro seguinte
\c;\l;round\u cbot\round;      \n;Retorna um número arredondado
\c;\l;trunc\u cbot\trunc;      \n;Retorna um número truncado
\c;\l;sin\u cbot\sin;        \n;Retorna um seno
\c;\l;cos\u cbot\cos;        \n;Retorna um cosseno
\c;\l;tan\u cbot\tan;        \n;Retorna uma tangente
\c;\l;asin\u cbot\asin;       \n;Retorna uma cossecante
\c;\l;acos\u cbot\acos;       \n;Retorna uma secante
\c;\l;atan\u cbot\atan;       \n;Retorna uma cotangente
\c;\l;atan2\u cbot\atan2;      \n;Retorna uma cotangente, tem 2 argumentos

\t;Veja também
\l;Tipos\u cbot\type; e \l;categorias\u cbot\category;.
