Skip to main content

Lección 2: Declaraciones condicionales If/Else

En esta lección, crearás un proyecto en el que el robot VR derriba al menos dos edificios en el Dynamic Castle Crasher Playground. Se necesitará un algoritmo para resolver el desafío utilizando bucles y retroalimentación del sensor porque el diseño del patio de recreo cambia con cada reinicio.

Ejemplos de diseños dinámicos de patios de recreo de colisiones de castillos:

Tres vistas de arriba hacia abajo de diseños de muestra del Dynamic Castle Crasher Playground con el robot en la misma posición inicial y castillos en diferentes posiciones. Los diseños están uno al lado del otro, para enfatizar cómo los castillos cambian de posición cada vez que se restablece el patio de recreo.

Resultados de aprendizaje

  • Identifique que un bloque [If then else] es un bloque C que ejecuta los bloques dentro de la rama If o Else en función del valor booleano informado.
  • Identifique que un bloque [If then else] se usa normalmente con un bloque [Repeat] o [Forever] para verificar la condición más de una vez.
  • Identifique y describa por qué se utiliza un bloque [If then else] con bucles.
  • Describa qué causaría que se ejecutara una rama [If then else] en un proyecto.

Cómo usar un bloque [If then else]

Este desafío es diferente del desafío Castle Crasher en la Unidad 2. El desafío de la Unidad 2 utilizó una secuencia simple y comandos de transmisión para derribar los edificios en un patio de recreo estático.

Un ejemplo de proyecto VEXcode VR de la Unidad 2. El proyecto comienza con un bloque Cuando se inicia y tiene 6 bloques adjuntos. Los bloques leen, en orden, Ajuste la velocidad de accionamiento al 100%; Ajuste la velocidad de giro al 100%; avance 1550 mm; gire a la derecha 180 grados; avance 700 mm; luego gire a la derecha 90 grados.

Los comandos de transmisión por sí solos no serán suficientes para que el robot VR derribe dos o más edificios debido a los diseños cambiantes del Dynamic Castle Crasher Playground. Un conjunto de comandos de transmisión puede funcionar en un patio de recreo, pero no en otro. Será necesario un algoritmo que utilice sensores y selección. El bloque [If then else] se utilizará para crear un algoritmo añadiendo selección con sentencias condicionales a este proyecto.

Una vista de arriba hacia abajo del Dynamic Castle Crasher Playground con solo algunos castillos derribados y otros intactos, para ilustrar cómo los comandos de transmisión por sí solos son insuficientes cuando la posición de los castillos cambia al azar.

Hay dos pasos principales para que el robot VR derribe edificios en el Dynamic Castle Crasher Playground.

  1. Si el robot VR detecta un edificio del castillo, dirígete hacia él para derribarlo.
    1. A diferencia de cualquier otro parque infantil, el Dynamic Castle Crasher Playground no tiene paredes. Debido a que los edificios son los únicos objetos en el Dynamic Castle Crasher Playground, el sensor de distancia se puede utilizar para detectar edificios.

      Una vista de arriba hacia abajo del Dynamic Castle Crasher Playground con el robot en la posición inicial, en el centro inferior del diseño, con una flecha punteada que apunta a un castillo directamente frente al robot que se resalta en un cuadro rojo. La flecha indica que el sensor puede detectar el castillo como un objeto frente a él.
  2. Si el robot de realidad virtual no detecta un edificio del castillo, vuelva a girar y compruebe si hay un edificio del castillo.
    1. Debido a que los edificios son los únicos objetos en el Dynamic Castle Crasher Playground, el sensor de distancia se puede utilizar para detectar edificios del castillo.

      Una vista de arriba hacia abajo del Dynamic Castle Crasher Playground, con el robot en la posición inicial, y flechas curvas a cada lado del mismo, que indican la necesidad de girar hasta que se detecte un objeto del castillo.

Una vez que se completen los pasos 1 y 2, el robot VR puede volver al paso 1 y usar el sensor de distancia para encontrar el siguiente edificio a derribar.

  • Inicie un nuevo proyecto en VEXcode VR y nombre el proyecto Unit9Lesson2.

    Cuadro de nombre del proyecto en el centro de la barra de herramientas VEXcode VR resaltado con un cuadro rojo, a la izquierda del botón Seleccionar parque infantil. El nombre del proyecto dice Unidad 9 Lección 2.
  • Añade dos bloques [Comment] al espacio de trabajo y completa los pasos descritos anteriormente.

    Un nuevo proyecto VEXcode VR con dos bloques Comment adjuntos al bloque When started. Los comentarios se leen en orden: Derribe el edificio encontrado usando el sensor de distancia; y Gire para encontrar un edificio usando el sensor de distancia.
  • Se puede utilizar un bloque [If then else] para activar cada una de las acciones descritas anteriormente. Cada acción depende de si la condición booleana en el bloque [If then else] informa VERDADERO o FALSO. Añade un bloque [If then else] debajo de los bloques [Comment].

    El mismo proyecto VEXcode VR con un bloque If then else adjunto debajo del segundo comentario. El parámetro de la rama If se deja abierto.

    Para su información

    El bloque [If then else] es un bloque C que acepta bloques informadores booleanos como entrada. El bloque [If then else] es una instrucción condicional que controla el flujo de un proyecto. El bloque [If then else] ejecutará una secuencia particular de instrucciones si se cumple la condición, y otro conjunto de instrucciones si NO se cumple la condición, "ramificando" así el flujo del proyecto. Solo se ejecutará una rama en [If then else].

    Un bloque If then else de la caja de herramientas de VEXcode VR.
    • Si la condición se informa como VERDADERA, se ejecutan los bloques dentro de la rama If Then.
    • Si la condición se informa como FALSA, se ejecutan los bloques dentro de la rama Else.
    Se utiliza un proyecto VEXcode VR para ilustrar la función de cada rama del bloque If then else. En este proyecto, el bloque If then else se adjunta a When started y lee 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 rama "Si entonces" está etiquetada como Conducir hacia adelante si el sensor de distancia detecta un objeto. La rama 'Else' está etiquetada como Gire a la derecha si el sensor de distancia no detecta un objeto.

    Una vez que se ejecuten todos los bloques dentro de una de las ramas, el proyecto pasará al siguiente bloque fuera del bloque [If then else].

  • En este proyecto, el sensor de distancia se puede utilizar para detectar edificios en el patio de recreo. Añade un <Distance found object> bloque al bloque [If then else].

    El mismo proyecto VEXcode VR de antes, con un bloque de objeto Distance Found añadido como parámetro de la rama If then. El bloque If then ahora lee If Front Distance found an object then.

    Para su información

    El <Distance found object> bloque es un bloque reportero booleano que informa si el sensor de distancia ha encontrado un objeto frente al robot VR. Este bloque informa VERDADERO cuando hay un objeto o superficie a menos de 3000 milímetros (mm) del robot VR.

    ¿El bloque VEXcode VR del cuadro de herramientas que lee Front Distance encontró un objeto?
  • Ahora cada rama del bloque [If then else] debe definirse utilizando los comentarios creados al comienzo del proyecto. Cuando el <Distance found object> bloque se informa como VERDADERO, el robot de realidad virtual debe conducir hacia ese edificio para derribarlo. Mueva ese bloque [Comment] a la rama ‘If Then’ del proyecto.

    El mismo proyecto VEXcode VR con el primer comentario se movió dentro de la C de la rama If then. El proyecto ahora lee Cuando se inicia, Si la distancia frontal encontró un objeto, entonces Derribe el edificio encontrado usando el sensor de distancia.
  • Mueva el otro bloque [Comment] a la rama ‘Else’ del proyecto para saber qué debería pasar si el robot VR NO detecta un edificio.

    El mismo proyecto VEXcode VR con el segundo comentario dentro de la C de la rama else. El proyecto ahora dice Cuando comenzó, Si la Distancia Frontal encontró un objeto, entonces Derribe el edificio encontrado usando el Sensor de Distancia; de lo contrario, Gire para encontrar un edificio usando el Sensor de Distancia.
  • Añade un bloque [Drive] en la rama ‘If Then’ del bloque [If then else].

    El mismo proyecto VEXcode VR con un bloque Drive configurado para reenviar debajo del primer comentario en la rama If then. La rama If then ahora dice, If Front Distance found an object, then Comment Knock over the building found using the Distance sensor; Drive forward.
  • Cuando el <Distance found object> bloque informa FALSO, el robot VR tendrá que darse la vuelta y encontrar un edificio en el patio de recreo. Añade un bloque [Turn] debajo del bloque [Comment] en la rama ‘Else’ del bloque [If then else].

    El mismo proyecto VEXcode VR con un bloque Turn configurado a la derecha debajo del segundo comentario en la rama Else. La rama Else ahora lee, Else, Comment of turn para encontrar un edificio usando el sensor de distancia; luego gire a la derecha.
  • Antes de probar el proyecto, es necesario añadir un bloque más. Los bloques [If then else] solo verificarán la condición una vez antes de pasar al siguiente bloque de la pila. En la Unidad 7, se añadió un bloque [Forever] al proyecto para indicar al Robot VR que verificara repetidamente el estado del Sensor Down Eye. Para asegurarse de que el estado del sensor de distancia se compruebe repetidamente, arrastre un bloque [Forever] al espacio de trabajo alrededor del bloque [If then else].

    Una descripción general de cómo añadir un bloque Forever al proyecto para que la totalidad del bloque If then else esté dentro del bloque C of the Forever. El proyecto ahora dice Cuando se inicia, Siempre, Si la distancia frontal encontró un objeto, entonces conduzca hacia adelante; de lo contrario, gire a la derecha.
  • Abre el Dynamic Castle Crasher Playground y ejecuta el proyecto.

    Una vista de arriba hacia abajo del Castle Crasher Playground con tres castillos intactos y dos edificios del castillo derribados. El robot está en la esquina superior derecha junto a un castillo derribado.
  • Una vez que el robot VR haya derribado al menos dos edificios, recargue el patio de recreo y ejecute el proyecto en otro diseño del Dynamic Castle Crasher Playground.

    Una vista de arriba hacia abajo del Castle Crasher Playground con tres castillos intactos y dos edificios del castillo derribados. El robot está en la esquina superior derecha junto a un castillo derribado.
  • En cada ejecución del proyecto, el robot VR girará hasta que el sensor de distancia detecte un edificio y luego se dirigirá hacia ese edificio para derribarlo.

    Una vista lateral del robot de realidad virtual empujando una pieza del castillo por el lado del patio de recreo, pero el robot está empezando a conducir hacia el borde del patio de recreo como si también se cayera del borde.
  • Durante la ejecución del proyecto, el robot de realidad virtual puede empujar una pieza de construcción hasta el borde y caerse del patio de recreo. Esto se debe a que el <Distance found object> bloque todavía informa que hay un objeto frente al robot de realidad virtual. Cuando este bloque se informa como VERDADERO, el robot VR avanza. Hacer que el robot de realidad virtual se caiga de la mesa.

Seleccione el botón Siguiente para continuar con el resto de esta lección.