Lição 2: Declarações Condicionais If/Else
Nesta lição, você criará um projeto em que o robô VR derruba pelo menos dois edifícios no Dynamic Castle Crasher Playground. Um algoritmo será necessário para resolver o desafio usando loops e feedback do sensor porque o layout do Playground muda a cada reinicialização.
Exemplos de layouts dinâmicos do Castle Crasher Playground:

Resultados de Aprendizagem
- Identifique que um bloco [If then else] é um bloco C que executa os blocos dentro da ramificação If ou Else com base no valor booleano relatado.
- Identifique que um bloco [If then else] é normalmente usado com um bloco [Repeat] ou [Forever] para verificar a condição mais de uma vez.
- Identifique e descreva por que um bloco [If then else] é usado com loops.
- Descreva o que faria com que uma ramificação [If then else] fosse executada em um projeto.
Como usar um bloco [If then else]
Este desafio é diferente do desafio Castle Crasher na Unidade 2. O desafio da Unidade 2 usou sequenciamento simples e comandos Drivetrain para derrubar os edifícios em um playground estático.

Os comandos do Trem de Força por si só não serão suficientes para que o Robô de RV derrube dois ou mais edifícios devido às mudanças nos layouts do Parque Infantil Dynamic Castle Crasher. Um conjunto de comandos Drivetrain pode funcionar em um Playground, mas não em outro. Será necessário um algoritmo que use sensores e seleção. O bloco [If then else] será usado para criar um algoritmo adicionando seleção com instruções condicionais a este projeto.

Existem duas etapas principais para o robô VR derrubar edifícios no Dynamic Castle Crasher Playground.
- Se o Robô de RV detectar um edifício de castelo, avance em direção a ele para derrubá-lo.
-
Ao contrário de todos os outros Playgrounds, o Dynamic Castle Crasher Playground não tem paredes. Como os edifícios são os únicos objetos no Parque Infantil Dynamic Castle Crasher, o Sensor de Distância pode ser usado para detectar edifícios.

-
- Se o Robô de RV não detectar uma construção de castelo, vire e verifique se há uma construção de castelo novamente.
-
Como os edifícios são os únicos objetos no Parque Infantil Dynamic Castle Crasher, o Sensor de Distância pode ser usado para detectar edifícios do castelo.

-
Assim que as etapas 1 e 2 forem concluídas, o Robô VR pode voltar para a etapa 1 e usar o Sensor de Distância para encontrar o próximo prédio a ser derrubado.
-
Inicie um novo projeto no VEXcode VR e nomeie o projeto Unit9Lesson2.

-
Adicione dois blocos [Comment] ao espaço de trabalho e preencha as etapas descritas acima.

-
Um bloco [If then else] pode ser usado para acionar cada uma das ações descritas acima. Cada ação depende se a condição booleana no bloco [If then else] relata VERDADEIRO ou FALSO. Adicione um bloco [If then else] abaixo dos blocos [Comment].

Para sua informação
O bloco [If then else] é um bloco C que aceita blocos de repórter booleano como entrada. O bloco [If then else] é uma declaração condicional que controla o fluxo de um projeto. O bloco [If then else] executará uma sequência particular de instruções se a condição for atendida e outro conjunto de instruções se a condição NÃO for atendida, "ramificando" assim o fluxo de projeto. Apenas uma ramificação no [If then else] será executada.

- Se a condição for relatada como VERDADEIRA, os blocos dentro da ramificação If Then serão executados.
- Se a condição for relatada como FALSA, os blocos dentro da ramificação Else serão executados.

Assim que todos os blocos dentro de uma das ramificações forem executados, o projeto passará para o próximo bloco fora do bloco [If then else].
-
Neste projeto, o Sensor de Distância pode ser usado para detectar edifícios no Playground. Adicione um <Distance found object> bloco ao bloco [If then else].

Para sua informação
O <Distance found object> bloco é um bloco repórter booleano que informa se o sensor de distância encontrou um objeto na frente do robô VR. Este bloco relata VERDADEIRO quando há um objeto ou superfície dentro de 3000 milímetros (mm) do Robô VR.

-
Agora, cada ramificação do bloco [If then else] precisa ser definida usando os comentários criados no início do projeto. Quando o <Distance found object> bloco relata VERDADEIRO, o robô VR deve dirigir em direção a esse edifício para derrubá-lo. Mova esse bloco [Comment] para a ramificação ‘If Then’ do projeto.

-
Mova o outro bloco [Comment] para a ramificação ‘Else’ do projeto para o que deve acontecer se o Robô VR NÃO detectar um edifício.

-
Adicione um bloco [Drive] na ramificação ‘If Then’ do bloco [If then else].

-
Quando o <Distance found object> bloco relatar FALSO, o Robô VR precisará se virar e encontrar um prédio no Playground. Adicione um bloco [Turn] abaixo do bloco [Comment] na ramificação ‘Else’ do bloco [If then else].

-
Antes do projeto ser testado, mais um bloco precisa ser adicionado. Os blocos [If then else] só verificarão a condição uma vez antes de passar para o próximo bloco na pilha. Na Unidade 7, um bloco [Forever] foi adicionado ao projeto para instruir o Robô VR a verificar repetidamente a condição do Sensor de Down Eye. Para garantir que a condição do Sensor de Distância esteja sendo verificada repetidamente, arraste um bloco [Forever] para o espaço de trabalho ao redor do bloco [If then else].

-
Abra o Dynamic Castle Crasher Playground e execute o projeto.

-
Depois que o Robô de RV derrubar pelo menos dois edifícios, recarregue o Playground e execute o projeto em outro layout do Dynamic Castle Crasher Playground.

-
Em cada execução do projeto, o Robô VR girará até que um edifício seja detectado pelo Sensor de Distância e, em seguida, dirigirá em direção a esse edifício para derrubá-lo.

- Durante a execução do projeto, o Robô VR pode empurrar uma peça de construção até a borda e cair do Playground. Isso ocorre porque o <Distance found object> bloco ainda está relatando que há um objeto na frente do Robô VR. Quando este bloco relata VERDADEIRO, o robô VR avança. Levando o Robô VR a cair da mesa.
Selecione o botão Seguinte para continuar com o resto desta lição.