Saltar al contenido principal

3. Catching Flies

Ver este tutorial en Google Docs external link

En esta actividad crearás un modelo computacional en el que las Frogs se mueven y comen Flies que pasan volando. ¡Siéntete libre de probar tus propias ideas y hacer el modelo tuyo!

Objetivos de Aprendizaje

  • Comenzar desde cero y programar nuevas funciones en un modelo
  • Explicar la diferencia entre colocar bloques dentro de la parte "do" de un bloque "create___do" y fuera de él
  • Explicar qué son los rasgos de los agentes y cómo cambiarlos
  • Describir cómo los agentes interactúan entre sí a través de colisiones
  • Crear una nueva breed
  • Editar Widgets

Nuevos Términos

BreedsRemixSocket

Descripción del Modelo

  • Tipos de Agentes ("Breeds")
    • Frogs
    • Flies
  • Comportamientos
    • Las Flies vuelan aleatoriamente
    • Las Frogs se mueven aleatoriamente
  • Interacciones
    • Cuando las Frogs chocan con las Flies, "comen" (eliminan) la Fly
    • De lo contrario, todo rebota entre sí
  • Datos
    • Un gráfico de líneas rastrea el número de Frogs y Flies a lo largo del tiempo

Parte 1: Crear un Nuevo Proyecto y Agregar Nuevas Breeds

En esta sección, iniciarás tu nuevo proyecto y crearás las páginas para las dos "breeds" (tipos de agentes) que existen en el proyecto: Flies y Frogs.

1. Crear un Nuevo Proyecto

My Projects pageCreate new project dialog
  • Ve a la página My Projects y haz clic en el botón para crear un nuevo proyecto (marcado en amarillo).
  • Titula tu proyecto "Catching Flies" y selecciona Blank Project. Haz clic en "Create" para crear el proyecto.

2. Renombrar una Breed Existente

Turtle tab rename menuRename breed dropdownRenamed to Frog
  • Haz clic en la pestaña "Turtle" en la parte superior del área de código, y luego haz clic en el triángulo a la izquierda.
  • Haz clic en el botón "Rename breed".
  • Escribe "Frog" en el cuadro de texto y luego haz clic fuera para completar el cambio de nombre.

3. Agregar una Segunda Breed

Add Breed buttonFlies breed added
  • Haz clic en el botón "Add Breed" para agregar una nueva breed (tipo de agente).
  • Nombra tu nueva breed "Flies".
info

Una breed es un tipo o categoría de agentes. Todos los agentes de una breed específica comparten los mismos rasgos y siguen las mismas instrucciones.

¡Verifica tu Progreso!

Asegúrate de tener las cinco pestañas que se muestran a continuación en tu Workspace:

Five tabs
¿Trabajando con un compañero?

Si estás trabajando con un compañero, puedes agregarlo como colaborador en este proyecto. Primero haz clic en "Add this project to my gallery", selecciona tu Public Gallery y haz clic en "submit". Eso hará que aparezca el botón "Add collaborators to this project". Haz clic en este botón, escribe el nombre de usuario de tu compañero y haz clic en "submit".


Parte 2: Configuración - Creando Flies

En esta sección crearás Flies y les darás rasgos iniciales cuando se haga clic en el botón "setup".

1. Responder a Clics de Botones

When setup pushed
  • Haz clic en la pestaña "The World" para mostrar la página "The World".
  • Abre el cajón Interface.
  • Arrastra un bloque "when ____ pushed" desde el cajón a la página.
  • Selecciona "setup" del menú desplegable. La opción "setup" se refiere al botón "setup" que se encuentra en SpaceLand.
info

Los bloques representan instrucciones que los agentes siguen. Un programa es una secuencia de comandos para que los agentes sigan. Para componer un programa, los bloques se conectan entre sí. Por ejemplo, conectar bloques dentro del bloque "when ____ pushed" le dice al agente qué hacer cuando se hace clic en el botón elegido.

2. Crear 10 Flies

Create 10 Flies code
  • Abre el cajón Agents.
  • Para crear 10 Flies en SpaceLand:
    • Arrastra el bloque "create___ each do" debajo del bloque "when [setup] pushed" y conéctalo.
    • Escribe el número "10" en el socket vacío del bloque "create ___ each do".
    • Selecciona "Flies" del menú desplegable en el bloque.
info

Cada uno de los agentes recién creados sigue inmediatamente las instrucciones que especifiques en la sección "do" del bloque "create___ do".

3. Establecer el Color de las Flies

Set color code
  • Abre el cajón Traits
  • Para establecer el color de las Flies:
    • Arrastra el bloque "set my ___ to ___" y conéctalo dentro del bloque "create___ each do"
    • Arrastra el bloque "color:___" y colócalo en el socket vacío del bloque "set my___ to ___".
    • Elige el color "black" del menú desplegable del bloque "color ___".
info

El bloque "set my ___ to ___" se usa para establecer o cambiar los rasgos de los agentes. El bloque "color:___" representa un color específico elegido del menú desplegable. Al especificar colores, debes usar uno de los bloques "color". Los agentes pueden no entender palabras escritas como red, purple, yellow, etc.

4. Dispersar las Flies

Scatter code
  • Abre el cajón Agents.
  • Para aleatorizar la posición de las Flies en SpaceLand:
    • Arrastra el bloque "scatter" y colócalo debajo del bloque "set my___ to___", todavía dentro del bloque "create___ each do".
info

El bloque "Scatter" permite que cada una de las 10 Flies establezca su ubicación en una posición aleatoria en SpaceLand.

¡Verifica tu Progreso!

Haz clic en "Run Code", luego cada vez que hagas clic en "setup" deberías ver 10 Flies más.

Flies scattered

Parte 3: Configuración - Creando una Frog

En esta sección, crearás una Frog y editarás sus rasgos.

¡Practica lo que has Aprendido!

Usa las habilidades y conocimientos que aprendiste en la Parte 2 para crear un nuevo agente Frog en SpaceLand: En el mismo bloque "When [setup] pushed" donde creaste las Flies, crea 1 Frog cuyo color sea green, tamaño sea 5, y forma sea pyramid (pista: usa el bloque "built-in shape").

Mostrar Solución
Frog solution code

¡Verifica tu Progreso!

Haz clic en "Run Code", luego cada vez que hagas clic en "setup" deberías ver 10 Flies más y 1 Frog más (aunque las Frogs estarán todas en el mismo lugar porque no están dispersas como las Flies).

Frog and Flies

Parte 4: Configuración - Reiniciar el Modelo

En esta sección agregarás código para que cada vez que hagas clic en el botón "setup", SpaceLand se reinicie.

Eliminar Agentes Anteriores

Delete everyone code
  • Asegúrate de que todavía estás en la pestaña "The World".
  • Abre el cajón Agents.
  • Para asegurarte de que todos los agentes anteriores se eliminen cuando se presione "setup":
    • Arrastra el bloque "delete everyone" dentro del bloque "when ___ pushed" pero antes del bloque "create ___ do".

¡Verifica tu Progreso!

Haz clic en "Run Code", luego cada vez que hagas clic en "setup" deberías ver solo 10 Flies y 1 Frog, porque los anteriores fueron eliminados antes de agregar los nuevos.

Reset check

Parte 5: Crear y Editar Widgets de Botones

En esta sección, crearás nuevos widgets de botones -- "Fly Around" y "Catch Flies!". En la siguiente sección, asignarás funciones a estos botones.

1. Renombrar un Widget de Botón

Rename to Fly Around
  • Haz clic en el botón "Edit Interface" en la barra encima de SpaceLand.
  • Haz clic en el botón "forever" y escribe "Fly Around" en la casilla etiquetada "Name".
  • Haz clic en la "(X)".

2. Crear un Nuevo Widget de Botón Toggle

Create Widget menuCreate Catch Flies toggle
  • Mientras todavía estés en el modo "Edit Interface", haz clic en el botón "Create Widget".
  • Haz clic en el botón etiquetado "Toggle"
  • Arrástralo a un lugar apropiado y nómbralo "Catch Flies!"
  • Haz clic en el botón "Lock Interface" para salir del modo "Edit Interface".
info

Hay una gran variedad de widgets. Usarás frecuentemente "Toggle Button" y "Push Button" para controlar tu programa. Otras opciones como "Labels" y "Graphs" te permiten mostrar información al usuario. "Data Boxes" y "Sliders" pueden usarse para mostrar información o recibir entrada del usuario. Los bloques usados para interactuar con estos widgets están en el cajón Interface.

¡Verifica tu Progreso!

Deberías ver cuatro Widgets en SpaceLand -- "Catch Flies!", "Fly Around", "setup" y "Data"

Four widgets

Parte 6: Movimiento de las Flies

En esta sección, harás que las Flies se muevan por SpaceLand.

1. Programar las Flies para Responder al Botón Fly Around

While Fly Around toggled
  • Ve a la pestaña "Flies" en Workspace -- cualquier código aquí solo es seguido por las Flies.
  • Para conectar las acciones de las "Flies" a un botón toggle:
    • Abre el cajón Interface.
    • Arrastra el bloque "while___ toggled" y selecciona la opción "Fly Around" del menú desplegable.
info

El bloque "while___ toggled" le dice a las Flies qué hacer mientras el botón toggle especificado esté activado.

2. Programar el Movimiento de las Flies

Flies forward code
  • Para hacer que las "Flies" se muevan mientras el botón "Fly Around" esté activado:
    • Abre el cajón Movement.
    • Arrastra un bloque "forward" y conéctalo al bloque "while___ toggled".
    • Escribe "1" en el socket del bloque "forward" -- esto significa que las Flies se moverán un paso a la vez.
info

El "1" le dice a cada agente Flies que avance 1 paso durante cada tick (el reloj de StarLogo Nova marca 5 veces por segundo cuando funciona a velocidad predeterminada). Un número mayor de pasos hará que parezca que las Flies se mueven más rápido.

¡Verifica tu Progreso!

Haz clic en "Run Code", "setup", luego "Fly Around". Deberías ver las Flies moviéndose.

Flies moving 1Flies moving 2Flies moving 3Flies moving 4

Parte 7: Movimiento de la Frog

En esta sección, harás que la Frog se mueva por SpaceLand.

¡Practica lo que has Aprendido!

Usa las habilidades y conocimientos que aprendiste en la Parte 6 para programar los movimientos de la Frog. Programa el agente Frog para que se mueva a 3 pasos a la vez cuando "Catch Flies!" esté activado.

Mostrar Solución
Frog movement code

¡Verifica tu Progreso!

Haz clic en "Run Code", "setup", "Fly Around", luego "Catch Flies!". Deberías ver la Frog moviéndose de lado a lado.

Frog moving
info

Ahora mismo, si una Fly choca con tu Frog no pasa nada. En la siguiente parte crearemos el código para una colisión entre la Frog y la Fly. Al hacerlo, la Frog "comerá" la Fly cuando choquen.


Parte 8: Colisiones

En esta sección escribirás código para que cuando la Frog y una Fly choquen, la Frog "coma" la Fly. También agregarás código a la página Everyone para que todas las demás colisiones resulten en que los agentes reboten entre sí.

1. Programar la Colisión

Collision with Flies code
  • Navega a la página Frog.
  • Abre el cajón Detection.
  • Para programar lo que ocurrirá cuando la Frog choque con una Fly:
    • Arrastra el bloque "on collision with ___" a la página Frog
    • Selecciona "Flies" del menú desplegable en el bloque "on collision with ___".
  • Saca el bloque "collidee"; lo necesitarás en el siguiente paso.
info

El bloque "on collision with ___" le dice al agente de la página en la que se encuentra (en este caso las Frogs) qué hacer cuando choquen con un agente de la breed seleccionada (en este caso las Flies).

2. Programar la "Comida" de la Fly

Delete collidee code
  • Navega al cajón Agents.
  • Para eliminar la Fly que choca con la Frog:
    • Arrastra el bloque "delete agent" dentro del bloque "on collision with ___"
    • Conecta el bloque "collidee" en el bloque "delete agent".
info

El bloque "collidee" representa al otro agente en una colisión. Así que el código anterior le dice a las Frogs que cada vez que una Frog choque con una Fly, la Frog debe eliminar esa Fly.

3. Programar que Everyone Rebote entre Sí

Bounce everyone code
  • Navega a la página Everyone -- el código en esta página será seguido por todos los agentes.
  • Arrastra un bloque "on collision with ___" (del cajón Detection) a la página y selecciona "Everyone" en el menú desplegable.
  • Abre el cajón Movement
  • Arrastra un bloque "face towards ___" dentro del bloque de colisión.
  • Arrastra un bloque "right by ___ degs" y conéctalo debajo del "face towards ___". Establece la cantidad de giro en 180 grados.
  • Abre el cajón Detection
  • Arrastra un bloque "collidee" en el socket vacío del bloque "face towards ___".
info

Debido a que esto está en la página Everyone, todos--tanto Frogs como Flies--seguirán las instrucciones. Esto significa que para las colisiones Frog-Fly, se ejecutarán dos conjuntos de código -- el código de "comer" y el código de "rebotar". StarLogo Nova no tiene un bloque "face away". Entonces, en su lugar, el agente se dirige hacia el collidee y luego gira 180 grados a la derecha. ¡Ahora está mirando en dirección opuesta al collidee! Descubrir cómo usar un grupo de pasos más pequeños para lograr un objetivo más grande es el desafío central de la programación de computadoras.

¡Verifica tu Progreso!

Haz clic en "Run Code", "setup", "Fly Around" y "Catch Flies", deberías ver las Flies siendo "comidas" por las Frogs al chocar. También deberías ver las Flies rebotando entre sí si chocan unas con otras.


Parte 9: Agregar un Gráfico

En esta sección agregarás un gráfico de líneas para rastrear el número de Frogs y Flies a medida que los números cambian con el tiempo.

1. Crear un Widget de Gráfico de Líneas

Create Widget dropdown
  • Haz clic en el botón "Edit Interface" en la barra encima de SpaceLand.
  • Haz clic en "Create Widget" y selecciona "Line Graph".
  • Arrastra el gráfico a la pantalla para que no cubra otros widgets ni el cuadrado verde del terreno.

2. Configurar el Gráfico

Graph configuration
  • Haz clic en el gráfico para abrir su ventana de configuración.
  • Dale al gráfico un nombre y buenas etiquetas para los ejes X e Y.
  • Renombra la primera serie a Frogs.
  • Haz clic en el botón "Add Series" para agregar una segunda serie, y renómbrala a Flies.
  • Usa los selectores de color para elegir colores para las líneas que representarán a las Frogs y las Flies.
  • Haz clic en el botón "Lock Interface".

3. Actualizar los Datos del Gráfico en Cada "Tick" del Reloj

Graph data code
  • Navega a la página The World.
  • Abre el cajón Interface
  • Arrastra un bloque "while _ toggled" y elige "Catch Flies".
  • Arrastra el bloque "add data to line graph" y conéctalo al bloque "while _ toggled".
  • Abre el cajón Environment.
  • Toma el bloque "clock" y conéctalo al bloque "add data to line graph" como se muestra.
  • Abre el cajón Detection.
  • Toma el bloque "count ___ within ___ steps" y conéctalo al bloque "add data to line graph" como se muestra.
  • Haz dos conjuntos de estos bloques -- uno para Frogs y otro para Flies.
info

La razón de los 200 pasos es que SpaceLand tiene solo 101 pasos de ancho, así que 200 pasos son más que suficientes para incluir a todos.

4. Limpiar el Gráfico al Configurar el Modelo

Clear graph code
  • Encuentra el código que configura el modelo en la página The World.
  • Para que el gráfico se limpie y comience desde cero ticks cada vez que hagas clic en setup:
    • Al final de este código, agrega un bloque "clear line graph ___" (de Interface) y un bloque "set clock to ___" (de Environment) como se muestra.

¡Verifica tu Progreso!

Ejecuta tu modelo, verifica que el gráfico de líneas se reinicie cuando se haga clic en "setup" y se actualice mientras el modelo está en ejecución.

Line graph result

Parte 10: Extensiones

Si tienes tiempo, prueba algunas extensiones de la lista a continuación para desarrollar tu simulación. Las extensiones tienden a progresar de tareas fáciles a difíciles. Algunas de ellas requieren nuevas habilidades y bloques que no has usado antes. Además, siéntete libre de explorar y probar cosas diferentes que no están incluidas aquí por tu cuenta.

tip

Es posible que quieras hacer clic en el botón "Remix" en la parte superior de la página de tu proyecto antes de intentar estas. Guarda una nueva copia de tu proyecto para que puedas volver a la versión funcional si algo que intentas no funciona como se esperaba.

  • Agregar más Frogs en diferentes ubicaciones, y hacerlas de diferentes colores.
    • Más fácil: Usa múltiples bloques "create___each do".
    • DESAFÍO: Haz esto usando solo el bloque create que ya tienes, con bloques adicionales adjuntos dentro.
  • Movimiento tipo rana: Usa bloques del cajón Movement para hacer que las Frogs giren y se muevan de una manera más parecida a una rana en SpaceLand. Usa el bloque "yield" (del cajón Logic) para hacer que las Frogs se detengan entre movimientos, para que parezca más que están saltando.
  • Hacer que las Frogs crezcan cada vez que "coman" una Fly.
  • Control deslizante de velocidad de vuelo: Crea un widget slider llamado "flying speed" y úsalo para determinar qué tan lejos se mueven las Flies cada vez. (PISTA: usa un bloque "___ slider value" del cajón Interface.)
  • Seguimiento de puntuación: Programa el databox Data para llevar un registro de cuántas Flies ha comido la Frog. (PISTA: usa un bloque "set data ___" del cajón Interface.)
  • Luciérnagas: ¡Usa los nuevos bloques experimentales "glow" en el cajón Traits para convertir las Flies en luciérnagas! También puedes reducir la intensidad de la luz direccional y el brillo del mundo a 0 (ambos bloques en el cajón Environment) para que se sienta más como de noche. (Asegúrate de cambiar el color de las Flies de black a un color diferente para que el efecto de brillo sea visible).
Firefly glow code

Copyright 2024 MIT Scheller Teacher Education Program. Distribuido bajo licencia Creative Commons CC BY-NC 4.0.