Leçon 4 : Utiliser Infinite While Loops
Résoudre le problème du labyrinthe de disques
Construire le projet
- Chargez le projet Unit7Lesson3 de la leçon précédente, ou recréez le projet montré ici pour commencer.
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)
-
Renommer le projet Unit7Lesson4.
- Faites glisser ou saisissez une boucle infinie while jusqu'en haut du projet et définissez la condition sur Vrai.
def main() :
while True :
wait(5, MSEC)
- Déplacez la commande wait pour faire de la place aux commandes qui iront à l'intérieur de la boucle infinie while .
def main() :
while True :
wait(5, MSEC)
- À l'intérieur de la boucle infinie while , copiez et collez les instructions if précédentes à l'intérieur de la boucle. Ne supprimez pas la commande wait au bas de la boucle while. Votre projet peut ressembler à ceci. Notez que copier et coller des commandes de cette manière n'entraîne pas une indentation correcte.
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)
- N'oubliez pas que l'indentation est TRÈS importante dans VEXcode VR Python. Pour que le flux du projet s'exécute comme prévu, les instructions if doivent être indentées dans la boucle infinie while . Sélectionnez les instructions if et appuyez sur « Tab » pour les mettre en retrait dans la boucle infinie while . Lorsqu'il est correctement indenté, votre projet doit ressembler à ceci :
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)
- Avec la boucle infinie while ajoutée au projet, toutes les instructions if auront leurs conditions vérifiées à plusieurs reprises. Ouvrez le Disk Maze Playground et exécutez le projet.
-
Lorsque ce projet est exécuté, le robot VR naviguera sur le terrain de jeu du labyrinthe de disques du début à la fin. Une fois que le robot VR détecte le rouge, il arrête de conduire.
En résumé
- Dans le projet de la leçon précédente, les conditions dans les instructions si n'ont été vérifiées qu'une seule fois. Étant donné que les conditions dans les instructions si n'ont été vérifiées qu'une seule fois, le robot VR a continué à avancer pour toujours car la condition « aucune couleur » détectée a été signalée comme vraie au début du projet.
- Maintenant que la boucle infinie while a été ajoutée, chaque condition des instructions if sera vérifiée à plusieurs reprises. La condition de la boucle while est toujours vraie, et donc le code à l'intérieur de la boucle while s'exécutera toujours. Cela vérifiera à plusieurs reprises les conditions des instructions si pendant l'exécution du projet.
- Pendant le déroulement du projet, si la condition des instructions if est vraie, les commandes à l'intérieur de l'instruction if sont exécutées. Si la condition de l'instruction if est fausse, les commandes à l'intérieur de l'instruction if ne sont pas exécutées et le flux du projet continuera jusqu'à la commande suivante. Cela permet au robot VR d'effectuer des comportements discrets tels que tourner ou s'arrêter une fois qu'il détecte une certaine couleur.
- Si instructions sont utilisées avec des boucles infinies while pour garantir que les conditions sont constamment vérifiées.
Questions
Veuillez sélectionner un lien ci-dessous pour accéder au questionnaire de la leçon.
Google Doc / .docx / .pdf