Skip to main content

Lição 3: Usando blocos [If then]

No Desafio do Labirinto de Disco, o Robô de RV está verificando a condição do Sensor do Olho Frontal para ver qual cor está sendo relatada. Cada uma das cores corresponde a um comportamento diferente que o Robô VR deve executar.

O VEXcode VR If Then C bloqueia com um parâmetro booleano de 'Front Eye detecta vermelho?'.
  • Inicie um novo projeto e nomeie-o Unit7Lesson3.

    Barra de ferramentas VEXcode VR com o botão "Nome do projeto" destacado numa caixa vermelha, à esquerda do botão Select Playground. O nome do projeto está definido como Unidade 7 Lição 3.
  • Arraste um bloco [If then] para o espaço de trabalho e anexe-o ao bloco [When started].

    O VEXcode VR bloqueia o programa com um bloco When Started e um bloco If Then C vazio.

    Para sua informação

    O bloco [If then] é um bloco C que aceita blocos reportadores booleanos como entrada. Usando os padrões observados ao resolver o Labirinto de Discos na Lição 2, um projeto pode ser criado onde o Robô de RV toma uma decisão se a condição relata como VERDADEIRA ou FALSA.

    O VEXcode VR If Then C bloqueia com uma caixa vermelha destacando o espaço do parâmetro booleano.

    O bloco [If then] será executado uma vez num projeto. Neste exemplo, o Sensor do Olho Frontal informará VERDADEIRO se um objeto verde for detectado e executará o comando dentro do bloco C - vire à direita por 90 graus. Se um objeto verde não for detectado, o projeto passará para o próximo comando na pilha.

    O VEXcode VR bloqueia o projeto que gira para a direita se o Olho Frontal estiver detectando a cor verde. O projeto diz: Quando iniciado, se o olho frontal detectar verde, vire à direita por 90 graus. Fora da instrução if está um bloco de acionamento de parada.

    Usando Blocos de Interruptor 


    A imagem abaixo mostra a instrução de bloco Switch [If then] para o projeto de exemplo desta lição. 

    O mesmo projeto de blocos VEXcode VR, mas com blocos de interruptores incluídos, que vira para a direita se o Olho Frontal estiver detectando a cor verde. O projeto começa com um bloco When started e é seguido por uma versão do bloco switch C de um bloco If Then. O código Python diz 'if front_eye.detect(GREEN): drivetrain.turn_for(RIGHT, 90, DEGREES)'. Fora da instrução if está um bloco de acionamento de parada.

    O projeto abaixo inclui os mesmos comandos convertidos em um bloco Switch.  

    A primeira linha de código, if front_eye.detect(GREEN): é o loop condicional que verifica se o Sensor de Olho Frontal detecta a cor verde. Observe que deve haver dois pontos (:) no final desta linha. 

    A segunda linha de código, drivetrain.turn_for(DIREITA, 90, GRAUS) diz ao robô para virar à direita por 90 graus quando o Sensor de Olho Frontal detecta a cor verde. Esta linha é recuada em um padrão de 4 espaços porque este é o comportamento específico que será realizado se o Sensor de Olho Frontal detectar verde. 

    O mesmo projeto de blocos VEXcode VR, mas com blocos de interruptores incluídos, que vira para a direita se o Olho Frontal estiver detectando a cor verde. O projeto começa com um bloco When started e é seguido por uma versão do bloco switch C de um bloco If Then. O código Python diz 'if front_eye.detect(GREEN): drivetrain.turn_for(RIGHT, 90, DEGREES)'. Fora da instrução if está um bloco de acionamento de parada.

  • Arraste um <Color sensing> bloco para o espaço de trabalho na entrada hexagonal do bloco [If then].

    O VEXcode VR bloqueia o projeto que usa uma instrução if para detectar a cor de um disco. Começa com um bloco Quando Iniciado e, em seguida, um bloco de comentários que diz "se o Olho Frontal detectar verde, vire à direita". Por fim, há um bloco If Then vazio com um parâmetro booleano de um bloco de detecção de cores que diz 'Olho Frontal detecta vermelho?'.
  • Altere o parâmetro do <Color sensing> bloco para ‘verde’.

    O VEXcode VR bloqueia o projeto que usa uma instrução if para detectar um disco verde. Começa com um bloco Quando Iniciado e, em seguida, um bloco de comentários que diz "se o Olho Frontal detectar verde, vire à direita". Por fim, há um bloco If Then vazio com um parâmetro booleano de um bloco de detecção de cores que diz 'Olho Frontal detecta verde?'. O menu suspenso de cores está aberto para alterar a cor de vermelho para verde.
  • Quando o Sensor de Olho Frontal detecta um disco verde, o Robô VR precisará virar à direita 90 graus para começar a resolver o Labirinto de Disco. Arraste um bloco [Turn for] para o bloco [If then].

    O VEXcode VR bloqueia o projeto que usa uma instrução if para detectar um disco verde e, em seguida, vire à direita. Começa com um bloco Quando Iniciado e, em seguida, um bloco de comentários que diz "se o Olho Frontal detectar verde, vire à direita". Por fim, há um bloco Se então com um parâmetro booleano de um bloco de detecção de cor que diz 'Olho frontal detecta verde?' e um bloco Vire à direita para 90 graus dentro do contêiner Se que será acionado se o booleano for verdadeiro.
  • Siga estas mesmas etapas para adicionar outro bloco [If then] para todas as três cores no Labirinto de Discos (verde, azul e vermelho). Cada cor está associada a um comportamento diferente. Os blocos dentro do bloco [If then] precisarão corresponder a esse comportamento pretendido. Adicione os seguintes blocos ao projeto. Quando o Robô VR detecta a cor "azul", o Robô VR vira à esquerda 90 graus.

    O mesmo VEXcode VR bloqueia o projeto de antes, mas com uma instrução if adicionada para virar à esquerda se houver um disco azul. Começa com um bloco Quando iniciado e, em seguida, há um bloco Se então com um parâmetro booleano de um bloco de detecção de cor que diz 'Olho frontal detecta verde?' e um bloco Vire à direita para 90 graus dentro do contêiner Se. Por fim, há o mesmo bloco if e bloco turn, mas alterado para virar à esquerda por 90 graus se a cor azul for detectada.
  • Quando o robô VR chegar ao final do labirinto, o robô VR detectará a cor ‘vermelho’.

    Robô VR no playground do VR Disk Maze, o robô é parado e olha para um disco vermelho.
  • Para parar o Robô VR, outro bloco [If then] precisa ser adicionado com instruções sobre o que fazer quando o Robô VR detectar ‘vermelho’. Adicione os seguintes blocos ao projeto.

    O mesmo VEXcode VR bloqueia o projeto de antes, mas com uma instrução if adicionada para parar de dirigir se houver um disco vermelho. Começa com um bloco Quando iniciado e, em seguida, há um bloco Se então com um parâmetro booleano de um bloco de detecção de cor que diz 'Olho frontal detecta verde?' e um bloco Vire à direita para 90 graus dentro do contêiner Se. Em seguida, há o mesmo bloco if e bloco turn, mas alterado para virar à esquerda por 90 graus se a cor azul for detectada. Por fim, o mesmo se bloco e bloco de giro forem usados, mas alterados para Parar de Dirigir se a cor vermelha for detectada.
  • O Robô VR também pode tomar uma decisão se não vir uma cor usando o valor "nenhum". No ponto de partida do Labirinto de Discos, o Robô VR não detecta nenhuma cor.

    A visualização do playground de RV com o painel aberto e uma caixa vermelha destacando os valores de detecção do Olho Frontal do robô. O valor 'Object' atual é false e o valor 'Color' atual é none.
  • Como o Sensor de Olho Frontal não detecta uma cor no início do Labirinto de Discos, o Robô VR precisará avançar até detectar o disco verde. Outro bloco [Se então] pode ser adicionado para instruir o Robô VR sobre o que fazer quando nenhuma cor for detectada.

    Bloco de detecção de cores VEXcode VR, que diz 'O olho frontal não detecta nenhum?'. Existe um menu suspenso aberto para mostrar como o utilizador pode alterar a cor de destino para nenhuma.
  • Adicione os seguintes blocos ao projeto. Quando o Robô VR não detecta nenhuma cor, o Robô VR avançará.

    O mesmo VEXcode VR bloqueia o projeto de antes, mas com uma instrução if adicionada para avançar se não houver disco detectado. Começa com um bloco Quando iniciado e, em seguida, há um bloco Se então com um parâmetro booleano de um bloco de detecção de cor que diz 'Olho frontal detecta verde?' e um bloco Vire à direita para 90 graus dentro do contêiner Se. Em seguida, há o mesmo bloco if e bloco turn, mas alterado para virar à esquerda por 90 graus se a cor azul for detectada. Em seguida, o mesmo se bloco e bloco de giro for usado, mas alterado para Parar de Dirigir se a cor vermelha for detectada. Por fim, o mesmo se o bloco e o bloco de giro forem usados, mas alterados para Drive Forward se nenhuma cor for detectada.
  • O robô VR agora tem instruções para cada cor detectada pelo sensor ocular.
    • Sensor de Olho Frontal detecta ‘verde?’
      • Vire à direita 90 graus
    • Sensor de Olho Frontal detecta ‘azul?’
      • Vire à esquerda 90 graus
    • Sensor de Olho Frontal detecta ‘vermelho?’
      • Parar de conduzir
    • O Sensor de Olhos Frontal detecta ‘nenhum?’
      • Conduzir para a frente
  • Abra o Disk Maze Playground e execute o projeto.

Selecione o botão Seguinte para continuar com o resto desta lição.