Lezione 4: Flusso del progetto con cicli nidificati
Raccogli i due dischi successivi
-
Ora che il robot VR è rivolto verso i dischi rossi, il robot VR dovrà ripetere gli stessi comportamenti utilizzati per raccogliere il disco blu, al fine di raccogliere e spostare il disco rosso. I comportamenti di guida in avanti per prendere il disco, girarsi e tornare allo stesso obiettivo colorato per lasciare il disco.
-
Una volta spostato il primo disco rosso, il robot VR dovrà quindi guidare verso l'obiettivo verde ed eseguire le stesse azioni utilizzate per spostare il disco blu e rosso, per spostare il primo disco verde.
- Per ripetere i comportamenti più volte, è possibile utilizzare un ciclo per.
-
Aggiungere un ciclo per all'inizio del progetto, sopra il primo commento, e impostare il parametro funzione range su '3'. Assicurarsi che il ciclo per sia rientrato nella definizione principale.
def main(): per repeat_count nell'intervallo(3): wait(5, MSEC)
-
Per copiare il codice nel ciclo per , sarà necessario prestare particolare attenzione all'indentazione. Per prima cosa, aggiungi uno spazio prima del comando wait , in modo che il ciclo appaia così:
def main(): per repeat_count nell'intervallo(3): wait(5, MSEC)
- Successivamente, seleziona i comandi da inserire nel ciclo per , quindi copiali e incollali sopra il comando wait . Si noti che l'indentazione non sarà corretta dopo aver semplicemente copiato e incollato. La linea indicatrice grigia del ciclo per è interrotta e scollegata dal comando wait . Questo è un segnale visivo che il tuo progetto non eseguirà come previsto.
-
Selezionare i comandi all'interno del ciclo per e utilizzare 'Tab' per rientrare correttamente i comandi all'interno del ciclo. Se correttamente rientrata, la linea indicatrice grigia dovrebbe collegare il ciclo per con il comando wait per mostrare i limiti del ciclo esterno. Una volta completato, il tuo progetto dovrebbe assomigliare a questo:
def main(): per repeat_count nell'intervallo(3): # 1. Drive to disk using Down Eye Sensor while not down_eye.near_object(): drivetrain.drive(FORWARD) wait(5, MSEC) drivetrain.stop() # 2. Prendi il magnete del disco. Energizza (BOOST) # 3. Guidare verso l'obiettivo utilizzando il sensore di distanza drivetrain.turn_to_heading (180, GRADI) mentre front_distance.get_distance (MM) > 200 :drivetrain.drive (FORWARD) wait(5, MSEC) drivetrain. stop() # 4. Drop disk in goal magnet.energize(DROP) drivetrain.drive_for(REVERSE, 100, MM) # 5. Girare e guidare verso il prossimo obiettivodrivetrain.turn_to_heading (90, GRADI) drivetrain.drive_for(AVANTI, 800, MM) # 6. Passare ai dischi drivetrain.turn_to_heading(0, GRADI) wait(5, MSEC)
- Guarda il video qui sotto per vedere come spostare i comandi e regolare l'indentazione come descritto sopra. Nel video clip, vengono evidenziate le sei sezioni di commento del progetto e viene aperto il menu contestuale. Viene selezionata l'opzione "Taglia", quindi il cursore viene posizionato sotto il comando for loop. Il menu contestuale viene aperto di nuovo e viene selezionato "Incolla". I comandi si trovano quindi all'interno del ciclo per , ma sono rientrati in modo errato. Le sei sezioni di commento vengono nuovamente evidenziate e viene premuto "Tab" sulla tastiera per far rientrare correttamente il progetto all'interno del ciclo.
- Aprire il Disk Mover Playground se non è già aperto ed eseguire il progetto.
-
Quando questo progetto viene eseguito, il robot VR raccoglie e rilascia un disco di ciascun colore nel suo obiettivo colorato corrispondente.
Per tua informazione
Si noti che il robot VR ha continuato a guidare contro il muro. Questo comportamento è previsto poiché il progetto ha incaricato il robot VR di girare a destra e guidare verso l'obiettivo successivo, per tre volte. La prima volta è guidare dal blu al rosso. Il secondo è dal rosso al verde, e il terzo è dal verde al muro, poiché non c'è un altro obiettivo colorato. Interrompi il progetto una volta che il robot VR colpisce il muro. Il progetto potrebbe essere migliorato in modo che il robot VR si fermi dopo aver raccolto e spostato il disco verde, ma ciò aumenterebbe la complessità complessiva del progetto.