Lezione 2: If/Else Conditional Statements
In questa lezione, creerai un progetto in cui il robot VR abbatte almeno due edifici nel parco giochi Dynamic Castle Crasher. Sarà necessario un algoritmo per risolvere la sfida utilizzando loop e feedback del sensore perché il layout del parco giochi cambia ad ogni ripristino.
Esempi di layout dinamici del parco giochi Castle Crasher:

Risultati di apprendimento
- Identificare che un blocco [If then else] è un blocco C che esegue i blocchi all'interno del ramo If o Else in base al valore booleano riportato.
- Identificare che un blocco [If then else] viene normalmente utilizzato con un blocco [Repeat] o [Forever] per verificare la condizione più di una volta.
- Identificare e descrivere il motivo per cui un blocco [If then else] viene utilizzato con i loop.
- Descrivere cosa causerebbe l'esecuzione di un ramo [If then else] in un progetto.
Come utilizzare un blocco [If else else]
Questa sfida è diversa dalla sfida Castle Crasher nell'Unità 2. La sfida dell'Unità 2 ha utilizzato semplici comandi di sequenziamento e Drivetrain per far crollare gli edifici su un parco giochi statico.

I comandi di guida da soli non saranno sufficienti per far sì che il robot VR abbatta due o più edifici a causa dei cambiamenti di layout del parco giochi Dynamic Castle Crasher. Una serie di comandi Drivetrain può funzionare in un parco giochi, ma non in un altro. Sarà necessario un algoritmo che utilizzi sensori e selezione. Il blocco [If then else] verrà utilizzato per creare un algoritmo aggiungendo la selezione con istruzioni condizionali a questo progetto.

Ci sono due passaggi principali per il robot VR per abbattere gli edifici nel Dynamic Castle Crasher Playground.
- Se il robot VR rileva un edificio del castello, avanza verso di esso per rovesciarlo.
-
A differenza di ogni altro parco giochi, il parco giochi Dynamic Castle Crasher non ha pareti. Poiché gli edifici sono gli unici oggetti nel parco giochi Dynamic Castle Crasher, il sensore di distanza può essere utilizzato per rilevare gli edifici.

-
- Se il robot VR non rileva un edificio del castello, voltati e controlla di nuovo la presenza di un edificio del castello.
-
Poiché gli edifici sono gli unici oggetti nel parco giochi Dynamic Castle Crasher, il sensore di distanza può essere utilizzato per rilevare gli edifici del castello.

-
Una volta completati i passaggi 1 e 2, il robot VR può tornare al passaggio 1 e utilizzare il sensore di distanza per trovare l'edificio successivo da rovesciare.
-
Avviare un nuovo progetto in VEXcode VR e denominare il progetto Unit9Lesson2.

-
Aggiungi due blocchi [Comment] nell'area di lavoro e completa i passaggi descritti sopra.

-
Un blocco [If then else] può essere utilizzato per attivare ciascuna delle azioni sopra descritte. Ogni azione dipende dal fatto che la condizione booleana nel blocco [If then else] riporti TRUE o FALSE. Aggiungi un blocco [If then else] sotto i blocchi [Comment].

Per tua informazione
Il blocco [If then else] è un blocco C che accetta blocchi reporter booleani come input. Il blocco [If then else] è un'istruzione condizionale che controlla il flusso di un progetto. Il blocco [If then else] eseguirà una particolare sequenza di istruzioni se la condizione è soddisfatta e un'altra serie di istruzioni se la condizione NON è soddisfatta, "ramificando" così il flusso del progetto. Verrà eseguita solo una filiale in [If then else].

- Se la condizione viene segnalata come VERA, vengono eseguiti i blocchi all'interno del ramo If Then.
- Se la condizione viene segnalata come FALSA, vengono eseguiti i blocchi all'interno del ramo Else.

Una volta eseguiti tutti i blocchi all'interno di una delle diramazioni, il progetto passerà al blocco successivo al di fuori del blocco [If then else].
-
In questo progetto, il sensore di distanza può essere utilizzato per rilevare gli edifici nel parco giochi. Aggiungere un <Distance found object> blocco al blocco [If then else].

Per tua informazione
Il <Distance found object> blocco è un blocco reporter booleano che segnala se il sensore di distanza ha trovato un oggetto davanti al robot VR. Questo blocco riporta TRUE quando c'è un oggetto o una superficie entro 3000 millimetri (mm) dal Robot VR.

-
Ora ogni ramo del blocco [If then else] deve essere definito utilizzando i commenti creati all'inizio del progetto. Quando il <Distance found object> blocco risulta VERO, il robot VR dovrebbe guidare verso quell' edificio per rovesciarlo. Sposta quel blocco [Comment] nel ramo "If Then" del progetto.

-
Spostare l'altro blocco [Comment] sul ramo "Else" del progetto per sapere cosa dovrebbe accadere se il robot VR NON rileva un edificio.

-
Aggiungere un blocco [Drive] nel ramo "If Then" del blocco [If then else].

-
Quando il <Distance found object> blocco segnala il FALSO, il robot VR dovrà girarsi e trovare un edificio nel parco giochi. Aggiungere un blocco [Turn] sotto il blocco [Comment] nel ramo "Else" del blocco [If then else].

-
Prima che il progetto venga testato, è necessario aggiungere un altro blocco. [If then else] controllerà la condizione solo una volta prima di passare al blocco successivo nella pila. Nell'unità 7, è stato aggiunto un blocco [Forever] al progetto per istruire il robot VR a controllare ripetutamente le condizioni del sensore Down Eye. Per assicurarsi che la condizione del sensore di distanza venga controllata ripetutamente, trascinare un blocco [Forever] nell'area di lavoro attorno al blocco [If then else].

-
Apri il parco giochi Dynamic Castle Crasher e gestisci il progetto.

-
Una volta che il robot VR ha fatto cadere almeno due edifici, ricarica il parco giochi ed esegui il progetto su un altro layout del parco giochi Dynamic Castle Crasher.

-
Ad ogni esecuzione del progetto, il robot VR ruoterà fino a quando un edificio non viene rilevato dal sensore di distanza, quindi si dirigerà verso quell' edificio per rovesciarlo.

- Durante l'esecuzione del progetto, il robot VR può spingere un pezzo di costruzione fino al bordo e cadere dal parco giochi. Questo perché il <Distance found object> blocco sta ancora segnalando che c'è un oggetto di fronte al robot VR. Quando questo blocco riporta TRUE, il robot VR avanza. Portare il robot VR a cadere dal tavolo.
Selezionare il pulsante Avanti per continuare con il resto della lezione.