Guía bloque a bloque de cada nivel. Incluye el código completo, explicaciones del porqué de cada decisión y los errores típicos del alumnado.
La Flor que Crece. Personaje único, 3 bloques WHEN independientes. Tiempo estimado: 12–15 min.
En este nivel no hace falta crear ninguna variable. Todo se controla con bloques de acción directa sobre el personaje.
Un solo personaje en el centro de la pantalla. En la biblioteca de Hopscotch buscar "flower" o usar cualquier personaje redondo renombrado como "Flor".
Set Size 40% dentro del bloque de "When Tapped" en lugar de en "When Game Starts". Resultado: la flor siempre empieza grande porque el Set Size 40 sólo se ejecuta cuando la tocan, no al inicio.
Change Size by es un bloque relativo (suma o resta al tamaño actual). Set Size es absoluto (fija un valor concreto). Aquí necesitamos el relativo para que la flor acumule tamaño con cada toque.Repeat Forever y gira para siempre. No interferirán entre sí porque el primero ya terminó su trabajo en los primeros fotogramas. Es un concepto clave de la programación concurrente simplificada.
La Mariposa + contador de polinizaciones. Se trabaja sobre el proyecto anterior añadiendo un segundo personaje y las primeras variables.
| Nombre | Valor inicial | Tipo | Para qué sirve |
|---|---|---|---|
| polinizaciones | 0 | Número | Cuenta cuántas veces la mariposa toca la flor |
polinizaciones ➜ valor inicial: 0. Si se crea dentro del código sin inicializarla, Hopscotch la trata como 0, pero es mejor práctica inicializarla explícitamente.
No hay que modificar nada de la Flor. Los 3 bloques del Nivel Semilla se conservan. La detección de colisión se programa desde la Mariposa, no desde la Flor.
When bumps Flor en la Mariposa, no al revés.
Añadir desde la biblioteca. Colocarla en cualquier posición de la pantalla.
Wait 0.5 seconds dentro del bloque bump, justo después del Change polinizaciones by 1.
If normal se evalúa cada fotograma dentro del bucle, lo que haría que el sonido de victoria sonase continuamente mientras la condición sea verdadera. Check Once If sólo dispara su contenido la primera vez que la condición se cumple, aunque el bucle siga corriendo. Perfecto para eventos de "victoria" o "game over".
Añadir un personaje de tipo Text desde la biblioteca. Colocarlo en la esquina superior izquierda (ej. X:100, Y:700).
El Jardín Vivo. Flores que aparecen solas (clones), temporizador regresivo de 30 s y sistema de puntuación completo.
| Nombre | Valor inicial | Para qué sirve |
|---|---|---|
| puntos | 0 | Puntuación acumulada del jugador |
| tiempo | 30 | Segundos que quedan de partida |
| jugando | 1 | Bandera: 1 = partida en curso, 0 = fin |
Crear un personaje cualquiera. Colocarlo fuera de la pantalla visible (X: -100, Y: -100). Opcionalmente hacerlo transparente con Set Opacity 0. Su única función es fabricar clones.
jugando a 0 y el bucle seguirá corriendo pero no creará más clones porque la condición fallará.puntos. Al ser global, cualquier clon puede modificarla y el objeto de texto que la muestra reflejará el cambio en el siguiente fotograma.Repeat 5 → Change Size by 15 hace que la flor "explote" visualmente antes de desaparecer. Es un detalle de game feel que mejora mucho la satisfacción del jugador. Los bloques tras el bucle (incluido Destroy Self) se ejecutan después del bucle, no durante.Check If jugando = 1). Los clones ya existentes en pantalla siguen ahí pero no se pueden tocar porque deberíamos añadir también una comprobación en el bloque "When Clone is Tapped".Repeat 30, el texto sólo se actualizaría cada segundo (al ritmo del Wait). Con el segundo bloque en bucle eterno, el texto se actualiza cada fotograma.
Las tareas de ampliación de los niveles Semilla y Brote, con solución completa bloque a bloque.
Simplemente duplicar el personaje Flor (botón de copia en Hopscotch) y cambiar la posición en el bloque When Game Starts → Set Position. Todo el código se copia automáticamente. Colocarla por ejemplo en X:200, Y:200.
If Self Size > 280 comprueba el tamaño después de sumarlo (porque el Change Size by 20 va antes). El tamaño máximo antes del reset es 280: 40 inicial + 14 toques × 20 = 320, pero como la comprobación es >280, se resetea al decimocuarto toque cuando llega a 300. Se puede ajustar el umbral a gusto.
Crear variable vidas con valor inicial 3. Añadir un nuevo bloque en la Mariposa:
Wait 15 espera 15 segundos desde el inicio, pero no "resetea" si el alumno poliza en el segundo 14. Para una solución más rigurosa habría que resetear una variable tiempoSinPolinar a 0 cada vez que haya colisión. Perfecto para alumnos muy avanzados que quieran profundizar.
Angle to Last Touch es un valor especial del sistema disponible en el menú de rotación. Devuelve el ángulo en grados entre la posición actual del personaje y el último punto tocado.
Solución completa de los 6 desafíos bonus. Recuerda: en el enunciado del alumno no aparecen estas instrucciones.
Self Y < -20 detecta que el clon salió por la parte inferior de la pantalla (Y=0 es el borde inferior en Hopscotch). El margen de -20 evita que se destruya justo en el borde visible.
When iPad is Shaken se pueden añadir tanto al personaje madre como a los clones. Si se añade al clon dentro del bloque "When Clone Created", cada clon reaccionará al agitar. Si sólo se añade a la FlorMadre, sólo ella reacciona. Para este bonus queremos que todos los clones exploten, así que hay que añadirlo al clon.
Crear 4 objetos de texto, uno en cada esquina. Cada uno tiene una nota asignada.
Las notas para los 4 botones: C4 (Do), D4 (Re), E4 (Mi), F4 (Fa). En Hopscotch el bloque Play Note acepta la nota en notación americana (C=Do, D=Re, E=Mi, F=Fa, G=Sol, A=La, B=Si) seguida del octavo (4 = octava central).
Modificación del temporizador del Nivel Roble. La clave es que el tiempo ya no se resta en un bucle fijo, sino que se decrementa en un bucle continuo y se recarga al tocar flores.
Wait en el generador (si se hace con una variable en lugar de un número fijo).
velocidad con valor inicial 20 y restarle 2 cada 3 segundos (hasta un mínimo de 4) produce esta escalada de dificultad.
Los 10 problemas más frecuentes en el aula, con diagnóstico y solución rápida para el docente.
Set Size 40 está dentro del bloque "When Tapped" en lugar de "When Game Starts".Wait 0.5 seconds dentro del bloque "When bumps Flor", justo después del Change polinizaciones by 1.Repeat Forever. El Set Position se ejecuta una vez y termina.Set Position dentro de un Repeat Forever.Create a Clone at X: 200 Y: 300 en lugar de Random().Random(80, 950) para X y Random(80, 680) para Y.tiempo a 0 pero olvidó cambiar jugando a 0. La FlorMadre sigue generando clones.Set jugando to 0 en el código de fin de partida del temporizador.Destroy Self en el bloque "When Game Starts" de la FlorMadre en lugar de en el bloque "When Clone is Tapped".Destroy Self al bloque correcto. Recordar: Destroy Self dentro de "When Clone Created" o "When Clone is Tapped" afecta al clon. En el bloque madre, eliminaría la madre.If normal en lugar de Check Once If. El bloque se evalúa cada fotograma y dispara el sonido/texto 30 veces por segundo.If por Check Once If.Last Touch X no es un bloque por sí solo, sino un valor especial que aparece como opción en el desplegable de los campos X/Y de los bloques de posición (Set X, Set Position). Hay que arrastrar primero el bloque Set X y luego tocar el campo de valor para ver las opciones.Destroy Self dentro del bloque "When Clone Created" en lugar de en "When Clone is Tapped".Destroy Self. El clon debe vivir hasta que el jugador lo toque, así que el Destroy Self sólo puede estar en "When Clone is Tapped".Repeat Forever → If Self Size > 200 → Destroy Self (para que los clones que nadie toca desaparezcan solos al hacerse demasiado grandes).