Skip to main content

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:

Tre viste dall'alto verso il basso di layout di esempio del parco giochi dinamico Castle Crasher con il robot nella stessa posizione di partenza e castelli in posizioni diverse. I layout sono affiancati, per sottolineare come i castelli cambino posizione ogni volta che il Playground viene resettato.

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.

Un esempio di progetto VEXcode VR dall'Unità 2. Il progetto inizia con un blocco Quando avviato e ha 6 blocchi collegati. I blocchi leggono, in ordine, Impostare la velocità di azionamento al 100%; Impostare la velocità di rotazione al 100%; guidare in avanti per 1550 mm; girare a destra per 180 gradi; guidare in avanti per 700 mm; quindi girare a destra per 90 gradi.

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.

Una vista dall'alto verso il basso del Dynamic Castle Crasher Playground con solo alcuni castelli rovesciati e altri intatti, per illustrare come i comandi della trasmissione da soli siano insufficienti quando la posizione dei castelli cambia in modo casuale.

Ci sono due passaggi principali per il robot VR per abbattere gli edifici nel Dynamic Castle Crasher Playground.

  1. Se il robot VR rileva un edificio del castello, avanza verso di esso per rovesciarlo.
    1. 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.

      Una vista dall'alto verso il basso del Dynamic Castle Crasher Playground con il robot nella posizione di partenza, in basso al centro del layout, con una freccia tratteggiata che punta a un castello dritto di fronte al robot che viene evidenziato in una casella rossa. La freccia indica che il sensore può rilevare il castello come un oggetto di fronte ad esso.
  2. Se il robot VR non rileva un edificio del castello, voltati e controlla di nuovo la presenza di un edificio del castello.
    1. 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 vista dall'alto verso il basso del Dynamic Castle Crasher Playground, con il robot nella posizione di partenza e frecce curve su entrambi i lati, che indicano la necessità di girare fino a quando non viene rilevato un oggetto 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.

    Casella del nome del progetto al centro della barra degli strumenti VEXcode VR evidenziata con una casella rossa, a sinistra del pulsante Seleziona parco giochi. Il nome del progetto recita Unità 9 Lezione 2.
  • Aggiungi due blocchi [Comment] nell'area di lavoro e completa i passaggi descritti sopra.

    Un nuovo progetto VEXcode VR con due blocchi Comment collegati al blocco When started. I commenti erano in ordine: rovesciare l'edificio trovato usando il sensore di distanza; e girare per trovare un edificio usando il sensore di distanza.
  • 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].

    Lo stesso progetto VEXcode VR con un blocco If then else allegato sotto il secondo commento. Il parametro del ramo If viene lasciato aperto.

    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].

    Un blocco If then else dalla VEXcode VR Toolbox.
    • 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.
    Un progetto VEXcode VR viene utilizzato per illustrare la funzione di ciascun ramo del blocco If then else. In questo progetto il blocco If then else è collegato a un Quando viene avviato e legge Se la distanza anteriore ha trovato un oggetto, quindi Commenta - Butta giù l'edificio trovato usando il sensore di distanza e vai avanti; Altrimenti, Gira per trovare un edificio usando il sensore di distanza e Gira a destra. Il ramo "If then" è etichettato Drive forward se il sensore di distanza rileva un oggetto. Il ramo "Altrimenti" è etichettato come Girare a destra se il sensore di distanza non rileva un oggetto.

    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].

    Lo stesso progetto VEXcode VR di prima, con un blocco di oggetti Distance Found aggiunto come parametro del ramo If then. Il blocco If then ora legge If Front Distance found an object then.

    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.

    Distanza dell'oggetto trovato Blocco VEXcode VR dalla cassetta degli attrezzi che legge Distanza frontale ha trovato un oggetto?
  • 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.

    Lo stesso progetto VEXcode VR con il primo Commento spostato all'interno della C del ramo If then. Il progetto ora legge All'avvio, se la distanza anteriore ha trovato un oggetto, quindi rovescia l'edificio trovato utilizzando il sensore di distanza.
  • Spostare l'altro blocco [Comment] sul ramo "Else" del progetto per sapere cosa dovrebbe accadere se il robot VR NON rileva un edificio.

    Lo stesso progetto VEXcode VR con il secondo commento all'interno della C della filiale else. Il progetto ora legge All'avvio, se la distanza anteriore ha trovato un oggetto, quindi rovesciare l'edificio trovato utilizzando il sensore di distanza; altrimenti, girare per trovare un edificio utilizzando il sensore di distanza.
  • Aggiungere un blocco [Drive] nel ramo "If Then" del blocco [If then else].

    Lo stesso progetto VEXcode VR con un blocco Drive impostato per l'inoltro sotto il primo commento nel ramo If then. Il ramo If then ora legge: If Front Distance found an object, then Comment Knock over the building found using the Distance sensor; Drive forward.
  • 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].

    Lo stesso progetto VEXcode VR con un blocco Turn impostato a destra sotto il secondo commento nel ramo Else. Il ramo Else ora legge, Else, Comment of turn per trovare un edificio utilizzando il sensore di distanza; quindi gira a destra.
  • 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].

    Una panoramica su come aggiungere un blocco Forever al progetto in modo che l'intero blocco If then else si trovi all'interno della C del blocco Forever. Il progetto ora dice All'inizio, per sempre, Se la distanza frontale ha trovato un oggetto, vai avanti; altrimenti gira a destra.
  • Apri il parco giochi Dynamic Castle Crasher e gestisci il progetto.

    Una vista dall'alto verso il basso del Castle Crasher Playground con tre castelli intatti e due edifici del castello rovesciati. Il robot è nell'angolo in alto a destra accanto a un castello rovesciato.
  • 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.

    Una vista dall'alto verso il basso del Castle Crasher Playground con tre castelli intatti e due edifici del castello rovesciati. Il robot è nell'angolo in alto a destra accanto a un castello rovesciato.
  • 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.

    Una vista laterale del robot VR che spinge un pezzo del castello fuori dal lato del parco giochi, ma il robot sta iniziando a guidare sul bordo del parco giochi come se anch' esso cadesse dal bordo.
  • 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.