Editor
O editor é a área em que podes escrever, com blocos ou com código de script, o código para controlar o robô.
A seguir são apresentadas as formas de programar nos ambientes de programação com blocos / programação com scripts (Python) e os pontos a que tens de dar atenção.
Editor de programação com blocos
Categorias de blocos

É a área em que os blocos oferecidos pelo RobomationLAB estão organizados por categorias.
Se clicares numa categoria, podes ver a paleta de blocos dessa categoria.
Estes são os tipos de categorias de blocos oferecidos por predefinição.
- Lógica
- Ciclos
- Matemática
- Texto
- Lista
- Cor
- Áudio
- Controlo
- Variáveis
- Funções
- Outros
Além destas, se acrescentares ao programa um robô ou um módulo de extensão, passas a ter no programa a paleta de blocos própria desse robô ou módulo.
⚙️ Nota

As categorias de blocos que acrescentaste ao programa e já não usas podem ser retiradas das categorias de blocos com clique com o botão direito do rato → Remover.
Paleta de blocos

É a área que reúne todos os blocos de cada categoria.
Os blocos que estão na paleta de blocos podem ser levados para a área de programação por Drag&Drop.

⚙️ Nota
Se quiseres ver como se usa um bloco, com clique com o botão direito do rato → Ajuda podes abrir, para cada bloco, a ajuda que descreve a forma de o usar.
Área de programação

É a área em que podes montar os blocos que trouxeste da paleta de blocos.
Os blocos montados são convertidos em tempo real em código Python e, quando executas o código, esse código é interpretado e move e controla o robô.
Estrutura básica dos blocos
Ao programar no editor de programação com blocos tens de respeitar a estrutura básica seguinte.

O editor de programação com blocos interpreta e executa o código que está dentro dos blocos de função função de configuração e função de repetição.
Por isso, tens de escrever o código pondo blocos dentro dos blocos de função função de configuração e função de repetição.
função de configuração
Dentro do bloco de função função de configuração definem-se as ações a executar no início, quando o código é executado.
Com o bloco Aguardar podes fazer com que as ações sejam executadas ordenadas no tempo.
função de repetição
Dentro do bloco de função função de repetição definem-se as ações a executar repetidamente enquanto o código está a correr.
As ações definidas são executadas de novo a cada 10 ms.
⚙️ Nota
(Com exceção das funções personalizadas criadas através da categoria Funções)
Os blocos que estão fora dos blocos de função função de configuração ou função de repetição não têm nenhum efeito quando o código é executado.
Como usar os blocos
Acrescentar um bloco



O bloco que queres acrescentar arrasta-se da paleta de blocos e larga-se no editor: assim é acrescentado.
Copiar / colar blocos
Há duas formas de copiar e colar blocos no editor.
Escolhe um bloco e pressiona Ctrl+C: o bloco escolhido é copiado.
Se pressionares Ctrl+V, o último bloco copiado é colado no editor.Escolhe um bloco e clica no menu Editar no botão «Copiar Ctrl+C»: o bloco escolhido é copiado.
Se clicares no menu Editar no botão «Colar Ctrl+V», o último bloco copiado é colado no editor.
Eliminar blocos
Há três formas de eliminar blocos no editor.
Escolhe um bloco e pressiona Backspace: o bloco escolhido é eliminado.
O bloco que queres eliminar arrasta-se no editor e larga-se nas categorias de blocos: assim é eliminado.



- O bloco que queres eliminar arrasta-se no editor e larga-se na papeleira: assim é eliminado.
Os blocos eliminados podem ser vistos outra vez na papeleira.

Selecionar vários blocos ao mesmo tempo
Há duas formas de selecionar vários blocos ao mesmo tempo no editor.
Se mantiveres a tecla Shift pressionada e arrastares pela área de trabalho ou clicares nos blocos um a um,
podes selecionar vários blocos ao mesmo tempo.Com o botão de visto em baixo à direita da área de trabalho ativas ou desativas o modo «selecionar vários blocos».
Se o botão estiver preenchido com cor, o modo está ativado.
Se o botão não estiver preenchido com cor, o modo está desativado.


Enquanto o modo «selecionar vários blocos» está ativado, só podes selecionar blocos.
Se quiseres mover ou editar em conjunto os vários blocos escolhidos, tens de terminar a seleção e desativar o modo.
Opções adicionais
Além disso, se clicares num bloco com o botão direito do rato,
encontras várias opções adicionais, como reduzir/expandir o bloco, ativá-lo/desativá-lo e Ajuda.
Editor de Python
Paleta de código

É a área em que as funções básicas de que precisas para programar robôs e os códigos Python próprios dos robôs e dos módulos de extensão estão organizados por categorias.
Estes são os tipos de categorias de código oferecidos nas funções básicas (Códigos).
- Lógica (logic)
- Ciclos (loops)
- Matemática (math)
- Texto (text)
- Lista (lists)
- Cor (color)
- Áudio (audio)
- Controlo (control)
Os códigos oferecidos nas funções básicas têm todos o mesmo papel que os blocos básicos do editor de programação com blocos.
⚙️ Nota
A forma de programar no editor de Python usando a paleta de código encontras em Como usar a paleta de código.
Editor de código

É a área em que podes escrever o código para controlar o robô.
Se em Definições do editor escolheres o editor Python, podes escrever código Python.
Estrutura básica do código
Ao programar no editor de código tens de respeitar a estrutura básica seguinte.
from robomation import *
# (se vais usar um robô, declará-lo como instância, exemplo)
hamster_s = HamsterS(0)
# coloque aqui o código de configuração, para executar uma vez:
def setup():
pass
# coloque aqui o código de controlo, para executar repetidamente:
def loop():
passO editor de código interpreta e executa o código que está dentro da função setup e da função loop.
Por isso, tens de escrever o código dentro da função setup e da função loop.
Além disso, para controlar o robô, from robomation import * fica no início do código e o robô que vais usar tem de ser declarado como instância.
setup
Dentro da função setup definem-se as ações a executar no início, quando o código é executado.
Com a função Utils.wait podes fazer com que as ações sejam executadas ordenadas no tempo.
loop
Dentro da função loop definem-se as ações a executar repetidamente enquanto o código está a correr.
As ações definidas são executadas de novo a cada 10 ms.
Como usar a paleta de código
A seguir descreve-se, com exemplos simples, como usar a paleta de código na programação.
Encontrar o código que queres
A paleta de código oferece várias funções e códigos de que precisas para programar robôs.

Se olhares para os menus dentro da categoria Códigos, vês que alguns têm o ícone .
Se clicares uma vez no menu Lógica, o ícone passa a e os submenus que estão dentro dele são expandidos e ficam visíveis.
A um menu que tem submenus deste modo chama-se «categoria».
Se um menu não tiver o ícone , como ternário dentro da categoria Lógica, isso significa que esse menu já não tem submenus.
A um menu que não tem submenus deste modo chama-se «código».

Se clicares outra vez numa categoria com os submenus expandidos, o ícone volta a e os submenus são escondidos.
Percorrendo as categorias desta forma, encontras na paleta de código o código que queres.
Inserir código no editor
A forma de inserir código no editor é a seguinte.

Um menu com o ícone à esquerda do nome é um menu que não tem opções de código para escolher.
É o caso da maioria dos menus de categoria, que têm submenus.
Um menu com o ícone à esquerda do nome é um menu em que podes escolher opções de código.
É o caso da maioria dos menus de código, que não têm submenus.
Se clicares com o botão direito do rato no código que queres inserir no editor, vês as opções que podes escolher.

Se clicares com o botão direito num menu de código, vês sempre as mesmas opções, sem diferença entre as funções básicas e os códigos próprios dos robôs e dos módulos de extensão.
- Inserir código: insere o código escolhido na posição do cursor no editor.
- Ajuda: abre a ajuda que descreve a forma de usar esse código.
- Cancelar: fecha o menu de opções.
Nos códigos próprios dos robôs e dos módulos de extensão, se escolheres Inserir código, o código é inserido na forma de uma chamada a um método dessa instância de robô.
( p. ex. o set_wheel_speed do HamsterS → hamster_s.set_wheel_speed('both', 50) )
⚙️ Nota

As categorias de código próprias dos robôs / módulos de extensão que acrescentaste ao programa e já não usas
podem ser retiradas da paleta de código com clique com o botão direito do rato → Remover.
