Skip to main content

Leçon 4 : Flux de projet avec des boucles imbriquées

Collectez les deux disques suivants

  • Maintenant que le robot VR fait face aux disques rouges, le robot VR devra répéter les mêmes comportements que ceux utilisés pour collecter le disque bleu, afin de ramasser et de déplacer le disque rouge. Comportements consistant à avancer pour ramasser le disque, à faire demi-tour et à revenir au même objectif coloré pour déposer le disque.

    Vue de haut en bas du terrain de jeu Disk Mover avec des flèches en pointillés indiquant le chemin du robot VR depuis le but rouge pour collecter le disque rouge et le déposer dans le but, puis pointer vers la droite pour se déplacer vers le but vert.
  • Une fois le premier disque rouge déplacé, le robot VR devra alors se diriger vers l'objectif vert et effectuer les mêmes actions que celles utilisées pour déplacer le disque bleu et le disque rouge, pour déplacer le premier disque vert.

    Vue de haut en bas du Disk Mover Playground au début, avec des flèches en pointillés indiquant le chemin que le robot doit parcourir pour collecter chaque disque. Les flèches pointent vers et depuis chaque but vers le premier disque, et des flèches droites supplémentaires pointent entre chacune des zones de but.
  • Afin de répéter plusieurs fois les comportements, une boucle pour peut être utilisée.
    VEXcode VR Python pour la commande de boucle dans la définition principale. La commande lit pour la valeur dans la plage avec un point 10 entre parenthèses sur la première ligne, puis indenté sous une commande wait lit wait avec 5, MSEC entre parenthèses.
  • Ajoutez une boucle pour en haut du projet, au-dessus du premier commentaire, et définissez le paramètre de fonction range sur « 3 ». Assurez-vous que la boucle pour est en retrait dans la définition principale.

    def main() :
        for repeat_count in range(3) :
            wait(5, MSEC)
  • Pour copier le code dans la boucle pour , une attention particulière devra être portée à l'indentation. Tout d’abord, ajoutez un espace avant la commande wait , de sorte que la boucle ressemble à ceci :

    def main() :
        for repeat_count in range(3) :
    
    
            
            wait(5, MSEC)
  • Ensuite, sélectionnez les commandes à placer dans la boucle pour , puis copiez-les et collez-les au-dessus de la commande wait . Notez que l'indentation sera incorrecte après avoir simplement copié et collé. La ligne indicatrice grise de la boucle pour est rompue et déconnectée de la commande wait . Il s'agit d'un indice visuel que votre projet ne s'exécutera pas comme prévu.Le projet d'en haut, copie collée dans la boucle for, avec une indentation incorrecte. L'indentation correcte est indiquée dans le bloc de code suivant.
  • Sélectionnez les commandes à l'intérieur de la boucle pour et utilisez « Tab » pour mettre correctement en retrait les commandes dans la boucle. Lorsqu'elle est correctement indentée, la ligne indicatrice grise doit connecter la boucle pour avec la commande wait  pour afficher les limites de la boucle externe. Une fois terminé, votre projet devrait ressembler à ceci : 

    def main() :
        for repeat_count in range(3) :
            # 1. Drive to disk using Down Eye Sensor
            while not down_eye.near_object() :
                drivetrain.drive(FORWARD)
                wait(5, MSEC)
            drivetrain.stop()
    
            # 2. Ramassez l'aimant à
            disque. Énergisez (BOOST)
    
            # 3. Conduisez jusqu'au but à l'aide
            du capteur de distance drivetrain.turn_to_heading (180, DEGRÉS)
            tandis que front_distance.get_distance (MM) >
                200 : DRIVETRAIN.DRIVE (FORWARD)
                wait(5, MSEC)
            drivetrain. stop()
    
            # 4. Déposez le disque dans l'
            objectifmagnet.energize (DROP
            )drivetrain.drive_for (REVERSE, 100, MM)
    
            # 5. Tournez et conduisez jusqu'au prochain
            objectifdrivetrain.turn_to_heading (90, DEGRÉS)
            drivetrain.drive_for(AVANT, 800, MM)
    
            # 6. Tourner à disques
            drivetrain.turn_to_heading(0, DEGRÉS)  
    
        attendre(5, MSEC)
  • Regardez la vidéo ci-dessous pour voir comment déplacer les commandes et ajuster l'indentation comme décrit ci-dessus. Dans le clip vidéo, les six sections de commentaires du projet sont mises en surbrillance et le menu contextuel est ouvert. L'option « Couper » est sélectionnée, puis le curseur est placé sous la commande pour boucle. Le menu contextuel s'ouvre à nouveau et « Coller » est sélectionné. Les commandes sont alors dans la boucle pour , mais mal indentées. Les six sections de commentaires sont mises en surbrillance à nouveau et « Tab » sur le clavier est pressé pour indenter correctement le projet dans la boucle.
Fichier vidéo
  • Ouvrez le Disk Mover Playground s'il n'est pas déjà ouvert et exécutez le projet.
  • Lorsque ce projet est exécuté, le robot VR ramasse et dépose un disque de chaque couleur dans son objectif coloré correspondant.

    Une vue de haut en bas du robot VR à la fin du projet, avec un de chaque disque de couleur dans le but correspondant, et le robot VR face à la paroi latérale droite au bord du but vert dans le coin inférieur droit.

Pour votre information

Notez que le robot VR a continué à s'enfoncer dans le mur. Ce comportement est attendu puisque le projet a demandé au robot VR de tourner à droite et de se diriger vers le prochain objectif, trois fois. La première fois, vous passez du bleu au rouge. Le deuxième va du rouge au vert, et le troisième va du vert au mur, car il n'y a pas d'autre objectif coloré. Arrêtez le projet une fois que le robot VR a heurté le mur. Le projet pourrait être amélioré de sorte que le robot VR s'arrête après avoir ramassé et déplacé le disque vert, mais cela augmenterait la complexité globale du projet.

Une vue de haut en bas du robot VR à la fin du projet, avec le bouton Stop dans la fenêtre Playground surligné dans le coin gauche. Sur le terrain de jeu, un disque de chaque couleur dans le but correspondant, et le robot VR faisant face à la paroi latérale droite au centre du but vert, lorsque le bouton d'arrêt a été enfoncé.

 

 

Questions

Veuillez sélectionner un lien ci-dessous pour accéder au questionnaire de la leçon.

Google Doc / .docx / .pdf