Skip to main content

Leçon 2 : Déclarations conditionnelles si/autrement

Dans cette leçon, vous allez créer un projet dans lequel le robot VR renversera au moins deux bâtiments sur le terrain de jeu Dynamic Castle Crasher. Un algorithme sera nécessaire pour résoudre le défi en utilisant des boucles et des retours de capteurs, car la disposition du terrain de jeu change à chaque réinitialisation.

Exemples d'aménagements dynamiques du terrain de jeu Castle Crasher :

Trois vues de haut en bas d'exemples de disposition du terrain de jeu Dynamic Castle Crasher avec le robot dans la même position de départ et les châteaux dans des positions différentes. Les dispositions sont côte à côte, pour souligner comment les châteaux changent de position chaque fois que le terrain de jeu est réinitialisé.

Résultats d'apprentissage

  • Identifiez qu'un bloc [If then else] est un bloc C qui exécute les blocs à l'intérieur de la branche If ou Else en fonction de la valeur booléenne signalée.
  • Identifiez qu'un bloc [If then else] est normalement utilisé avec un bloc [Repeat] ou [Forever] afin de vérifier la condition plus d'une fois.
  • Identifiez et décrivez pourquoi un bloc [If then else] est utilisé avec des boucles.
  • Décrivez ce qui entraînerait l'exécution d'une succursale [If then else] dans un projet.

Comment utiliser un bloc [If then else]

Ce défi est différent du défi Castle Crasher de l'Unité 2. Le défi de l'unité 2 a utilisé un séquençage simple et des commandes de transmission pour renverser les bâtiments sur un terrain de jeu statique.

Un exemple de projet VEXcode VR de l'unité 2. Le projet commence par un bloc Quand a commencé et comporte 6 blocs attachés. Les blocs lisent, dans l'ordre, Régler la vitesse d'entraînement à 100 % ; Régler la vitesse de rotation à 100 % ; avancer de 1550 mm ; tourner à droite sur 180 degrés ; avancer de 700 mm ; puis tourner à droite sur 90 degrés.

Les commandes du groupe motopropulseur à elles seules ne suffiront pas pour que le robot VR détruise deux bâtiments ou plus en raison des modifications de la disposition de l'aire de jeu du casse-tête du château dynamique. Un ensemble de commandes de transmission peut fonctionner dans un terrain de jeu, mais pas dans un autre. Un algorithme qui utilise des capteurs et une sélection sera nécessaire. Le bloc [If then else] sera utilisé pour créer un algorithme en ajoutant une sélection avec des instructions conditionnelles à ce projet.

Une vue de haut en bas de l'aire de jeux Dynamic Castle Crasher avec seulement quelques châteaux renversés, et d'autres intacts, pour illustrer à quel point les commandes de transmission seules sont insuffisantes lorsque la position des châteaux change au hasard.

Il y a deux étapes principales pour le robot VR pour renverser les bâtiments sur le terrain de jeu Dynamic Castle Crasher.

  1. Si le robot VR détecte un bâtiment du château, avancez vers lui pour le renverser.
    1. Contrairement à tous les autres terrains de jeux, le terrain de jeu Dynamic Castle Crasher n'a pas de murs. Étant donné que les bâtiments sont les seuls objets de l'aire de jeux Dynamic Castle Crasher, le capteur de distance peut être utilisé pour détecter les bâtiments.

      Une vue de haut en bas de l'aire de jeux Dynamic Castle Crasher avec le robot en position de départ, en bas au centre de la mise en page, avec une flèche en pointillés pointant vers un château droit devant le robot qui est surligné dans une boîte rouge. La flèche indique que le capteur peut détecter le château comme un objet devant lui.
  2. Si le robot VR ne détecte pas un bâtiment de château, tournez et vérifiez à nouveau un bâtiment de château.
    1. Étant donné que les bâtiments sont les seuls objets de l'aire de jeux Dynamic Castle Crasher, le capteur de distance peut être utilisé pour détecter les bâtiments du château.

      Une vue de haut en bas de l'aire de jeux Dynamic Castle Crasher, avec le robot en position de départ, et des flèches incurvées de chaque côté, indiquant la nécessité de tourner jusqu'à ce qu'un objet du château soit détecté.

Une fois les étapes 1 et 2 terminées, le robot VR peut revenir à l'étape 1 et utiliser le capteur de distance pour trouver le prochain bâtiment à renverser.

  • Lancez un nouveau projet dans VEXcode VR et nommez le projet Unit9Lesson2.

    Zone Nom du projet au centre de la barre d'outils VEXcode VR surlignée par une case rouge, à gauche du bouton Sélectionner un terrain de jeu. Le nom du projet indique Unité 9 Leçon 2.
  • Ajoutez deux blocs [Commentaire] dans l'espace de travail et remplissez les étapes décrites ci-dessus.

    Un nouveau projet VEXcode VR avec deux blocs de commentaires attachés au bloc Quand a commencé. Les commentaires sont lus dans l'ordre : renversez le bâtiment trouvé à l'aide du capteur de distance ; et tournez pour trouver un bâtiment à l'aide du capteur de distance.
  • Un bloc [If then else] peut être utilisé pour déclencher chacune des actions décrites ci-dessus. Chaque action dépend de si la condition booléenne dans le bloc [If then else] rapporte TRUE ou FALSE. Ajoutez un bloc [If then else] sous les blocs [Comment].

    Le même projet VEXcode VR avec un bloc If then else attaché sous le deuxième commentaire. Le paramètre de la branche If est laissé ouvert.

    Pour votre information

    Le bloc [If then else] est un bloc C qui accepte les blocs rapporteurs booléens comme entrée. Le bloc [If then else] est une instruction conditionnelle qui contrôle le flux d'un projet. Le bloc [If then else] exécutera une séquence d'instructions particulière si la condition est remplie, et un autre ensemble d'instructions si la condition N'EST PAS remplie, « ramifiant » ainsi le flux du projet. Une seule branche dans le [If then else] sera exécutée.

    Un bloc If else de la boîte à outils VR VEXcode.
    • Si la condition est signalée comme VRAIE, les blocs à l'intérieur de la branche If Then sont exécutés.
    • Si la condition est signalée comme FAUSSE, les blocs à l'intérieur de la branche Else sont exécutés.
    Un projet VEXcode VR est utilisé pour illustrer la fonction de chaque branche du bloc If then else. Dans ce projet, le bloc If then else est attaché à un When started et indique If Front Distance found an object, then Comment - Knock over the building found using the Distance Sensor and drive forward ; Else, Turn to find a building using the Distance Sensor, and Turn right. La branche « Si alors » est étiquetée Drive forward si le capteur de distance détecte un objet. La branche « Else » est étiquetée comme Tourner à droite si le capteur de distance ne détecte pas d'objet.

    Une fois que tous les blocs à l'intérieur de l'une des branches sont exécutés, le projet passera au bloc suivant en dehors du bloc [If then else].

  • Dans ce projet, le capteur de distance peut être utilisé pour détecter les bâtiments sur le terrain de jeu. Ajoutez un <Distance found object> bloc au bloc [If then else].

    Le même projet VR VEXcode d'avant, avec un bloc d'objet Distance Trouvée ajouté comme paramètre de la branche If then. Le bloc Si alors affiche maintenant Si la distance avant a trouvé un objet alors.

    Pour votre information

    Le <Distance found object> bloc est un bloc rapporteur booléen qui signale si le capteur de distance a trouvé un objet devant le robot VR. Ce bloc indique VRAI lorsqu'il y a un objet ou une surface à moins de 3000 millimètres (mm) du robot VR.

    La distance a trouvé l'objet VEXcode VR bloc de la boîte à outils qui lit la distance avant a trouvé un objet ?
  • Maintenant, chaque branche du bloc [If then else] doit être définie à l'aide des commentaires créés au début du projet. Lorsque le <Distance found object> bloc rapporte VRAI, le robot VR doit se diriger vers ce bâtiment pour le renverser. Déplacez ce bloc [Commentaire] vers la branche « Si alors » du projet.

    Le même projet VEXcode VR avec le premier commentaire s'est déplacé à l'intérieur du C de la branche If then. Le projet indique désormais When Started, If Front Distance found an object, puis Knock over the building found using the Distance Sensor.
  • Déplacez l'autre bloc [Commentaire] vers la branche « Autre » du projet pour savoir ce qui devrait se passer si le robot VR ne détecte PAS un bâtiment.

    Le même projet VEXcode VR avec le deuxième commentaire à l'intérieur du C de la branche else. Le projet indique maintenant Au démarrage, Si la distance avant a trouvé un objet, puis Renversez le bâtiment trouvé à l'aide du capteur de distance ; sinon, Tournez pour trouver un bâtiment à l'aide du capteur de distance.
  • Ajoutez un bloc [Drive] dans la branche « If Then » du bloc [If then else].

    Le même projet VEXcode VR avec un bloc Drive défini pour transférer sous le premier commentaire dans la branche If then. La branche If then affiche maintenant, If Front Distance found an object, then Comment Knock over the building found using the Distance sensor ; Drive forward.
  • Lorsque le <Distance found object> bloc signale FAUX, le robot VR devra faire demi-tour et trouver un bâtiment sur le terrain de jeu. Ajoutez un bloc [Turn] sous le bloc [Comment] dans la branche « Else » du bloc [If then else].

    Le même projet VEXcode VR avec un bloc Turn réglé à droite sous le deuxième commentaire dans la branche Else. La branche Else lit maintenant, Else, Commentaire du virage pour trouver un bâtiment à l'aide du capteur de distance ; puis Tournez à droite.
  • Avant de tester le projet, un bloc supplémentaire doit être ajouté. Les blocs [If then else] ne vérifieront la condition qu'une seule fois avant de passer au bloc suivant dans la pile. Dans l'unité 7, un bloc [Forever] a été ajouté au projet pour demander au robot VR de vérifier à plusieurs reprises l'état du capteur Down Eye. Pour vous assurer que l'état du capteur de distance est vérifié à plusieurs reprises, faites glisser un bloc [Forever] dans l'espace de travail autour du bloc [If then else].

    Un aperçu de la façon d'ajouter un bloc Forever au projet afin que l'intégralité du bloc If else se trouve à l'intérieur du C du bloc Forever. Le projet indique désormais Au démarrage, Pour toujours, Si la distance avant a trouvé un objet, avancez ; sinon, tournez à droite.
  • Ouvrez le terrain de jeu Dynamic Castle Crasher et exécutez le projet.

    Une vue de haut en bas de l'aire de jeux Castle Crasher avec trois châteaux intacts et deux bâtiments du château renversés. Le robot est dans le coin supérieur droit à côté d'un château renversé.
  • Une fois que le robot VR a renversé au moins deux bâtiments, rechargez l'aire de jeux et exécutez le projet sur une autre disposition de l'aire de jeux Dynamic Castle Crasher.

    Une vue de haut en bas de l'aire de jeux Castle Crasher avec trois châteaux intacts et deux bâtiments du château renversés. Le robot est dans le coin supérieur droit à côté d'un château renversé.
  • À chaque exécution du projet, le robot VR tournera jusqu'à ce qu'un bâtiment soit détecté par le capteur de distance, puis se dirigera vers ce bâtiment pour le renverser.

    Une vue latérale du robot VR poussant une pièce de château sur le côté de l'aire de jeux, mais le robot commence à rouler sur le bord de l'aire de jeux comme s'il allait lui aussi tomber du bord.
  • Pendant le déroulement du projet, le robot VR peut pousser une pièce de construction jusqu'au bord et tomber du terrain de jeu. En effet, le <Distance found object> bloc signale toujours qu'il y a un objet devant le robot VR. Lorsque ce bloc rapporte VRAI, le robot VR avance. Amener le robot VR à tomber de la table.

Sélectionnez le bouton Suivant pour continuer le reste de cette leçon.