Lezione 4: Utilizzo di Infinite While Loops
Risolvere il problema del labirinto del disco
Costruire il progetto
- Carica il progetto Unit7Lesson3 dalla lezione precedente o ricrea il progetto mostrato qui per iniziare.
def main():
# If front eye detects green then turn right
if front_eye.detect (GREEN):
drivetrain.turn_for (RIGHT, 90, DEGREES)
# If front eye detects blue then turn left
if front_eye.detect (BLUE):
drivetrain.turn_for (LEFT, 90, DEGREES)
# If front eye detects red then stop
if front_eye.detect (RED):
drivetrain.stop ()
# If front eye detects none then drive forward
if front_eye.detect (NONE):
drivetrain.drive (FORWARD)
-
Rinominare il progetto Unit7Lesson4.
- Trascinare o digitare un ciclo infinito while nella parte superiore del progetto e impostare la condizione su Vero.
def main():
while True:
wait(5, MSEC)
- Sposta il comando wait per fare spazio ai comandi che andranno all'interno del ciclo infinito while .
def main():
while True:
wait(5, MSEC)
- All'interno del ciclo infinito while , copia e incolla le precedenti istruzioni if all'interno del ciclo. Non eliminare il comando wait alla fine del ciclo while. Il tuo progetto potrebbe assomigliare a questo. Si noti che copiare e incollare i comandi in questo modo non comporta un rientro corretto.
def main():
while True:
# If front eye detects green then turn right
if front_eye.detect (GREEN):
drivetrain.turn_for (RIGHT, 90, DEGREES)
# If front eye detects blue then turn left
if front_eye.detect (BLUE):
drivetrain.turn_for (LEFT, 90, DEGREES)
# If front eye detects red then stop
if front_eye.detect (RED):
drivetrain.stop ()
# If front eye detects none then drive forward
if front_eye.detect (NONE):
drivetrain.drive (FORWARD)
wait(5, MSEC)
- Ricorda, l'indentazione è MOLTO importante in VEXcode VR Python. Affinché il flusso del progetto venga eseguito come previsto, le istruzioni if devono essere rientrate nel ciclo infinito while . Selezionare le istruzioni if e premere 'Tab' per rientrarle nel ciclo infinito while . Se correttamente rientrato, il tuo progetto dovrebbe assomigliare a questo:
def main():
while True:
# If front eye detects green then turn right
if front_eye.detect (GREEN):
drivetrain.turn_for (RIGHT, 90, DEGREES)
# If front eye detects blue then turn left
if front_eye.detect (BLUE):
drivetrain.turn_for (LEFT, 90, DEGREES)
# If front eye detects red then stop
if front_eye.detect (RED):
drivetrain.stop ()
# If front eye detects none then drive forward
if front_eye.detect (NONE):
drivetrain.drive (FORWARD)
wait(5, MSEC)
- Con l'infinito while aggiunto al progetto, tutte le if istruzioni avranno ripetutamente le loro condizioni controllate. Aprire Disk Maze Playground ed eseguire il progetto.
-
Quando questo progetto viene eseguito, il robot VR navigherà nel Disk Maze Playground dall'inizio alla fine. Una volta che il robot VR rileva il rosso, smetterà di guidare.
In sintesi
- Nel progetto della lezione precedente, le condizioni all'interno delle istruzioni if sono state verificate solo una volta. Poiché le condizioni nelle istruzioni if sono state verificate solo una volta, il robot VR ha continuato a procedere all'infinito perché la condizione di "nessun colore" rilevato era stata segnalata come Vera all'inizio del progetto.
- Ora che è stato aggiunto il ciclo infinito while , ogni condizione delle istruzioni if verrà controllata ripetutamente. La condizione del ciclo while è sempre True, e quindi il codice all'interno del ciclo while verrà sempre eseguito. Verranno ripetutamente verificate le condizioni delle istruzioni if durante l'esecuzione del progetto.
- Durante il flusso del progetto, se la condizione delle istruzioni if è True, vengono eseguiti i comandi all'interno delle istruzioni if . Se la condizione dell'istruzione if è False, i comandi all'interno dell'istruzione if non vengono eseguiti e il flusso del progetto continuerà con il comando successivo. Ciò consente al robot VR di eseguire comportamenti discreti come girare o fermarsi una volta rilevato un determinato colore.
- Le istruzioni If vengono utilizzate con cicli infiniti while per garantire che le condizioni vengano costantemente verificate.