Lógica del Cazador de Glitches • Lesson • Lenny.com
Lógica del Cazador de Glitches
Los estudiantes exploran el poder de los bucles "mientras" (while) en Microsoft MakeCode Arcade para crear comportamientos repetitivos en sus juegos. Aprenden a usar condiciones para controlar la repetición y automatizar mecánicas como la generación de enemigos o el seguimiento de puntajes.
"When would you use a 'repeat 10' block instead of a 'while' block?"
"In Minecraft, what is something that repeats 'while' something else is true?" (e.g., While holding the mouse button, mine the block).
"Can you think of a loop in your daily morning routine?"
Level Up Challenges
The Rapid Spawner
Modify the while loop to spawn enemies faster and faster by decreasing the pause duration each time. Hint: Use a variable for the pause time!
The Sound of Loops
Create a "beat maker" where a while loop plays a sound as long as a certain key is pressed. How do you stop the sound when the key is released?
Answer Key
Loop Logic Handout
Section 1: The Loop Trace
Iteration
Is score < 4?
New score Value
Start
N/A
0
1
Yes (0 < 4)
1
2
Yes (1 < 4)
2
3
Yes (2 < 4)
3
4
Yes (3 < 4)
4
5
No (4 < 4 is False)
Loop Stops
Computer says "Scanning..." 4 times.
Section 2: Code Translation
The Boss Shield: while (shieldActive == true)
Survival Timer: while (time > 0)
Section 4: The Bug Bounty
Why it crashes: The variable level is set to 1 at the start. Inside the loop, level never changes. Since 1 is always equal to 1, the condition level == 1 is always True, creating an infinite loop.
Fix: Update the variable inside the loop (e.g., level = 2 after spawning enemies) or change the condition to look at a different variable that does change (like an enemy count).
¿vida == 0?
Si es SÍ -> Se detiene
Operadores Lógicos
> Mayor que
< Menor que
== Igual a
!= Distinto de
Variables: El Motor del Bucle
Para que un bucle no sea infinito, algo dentro del bucle debe cambiar el valor de la variable.
mientras (monedas < 5)
{
generarMoneda()
monedas = monedas + 1
}
Caso 1: El Jefe Invencible
"Mientras el jefe tenga escudo, el jugador no puede hacerle daño."
mientras (jefeEscudo == true)
Dentro del bucle, el código puede hacer que el jefe brille en azul o sea transparente.
Caso 2: Lluvia de Poderes
"Mientras el nivel sea menor a 5, caen corazones del cielo."
mientras (nivel < 5)
Cuando el jugador suba al nivel 5, ¡la lluvia se detendrá automáticamente!
¡No Olvides la Pausa!
Las computadoras son demasiado rápidas. Sin un bloque de "pausa", el bucle correrá miles de veces en un segundo y el juego se congelará.
pausa(100ms)
¿Y si nace muerto?
Si la condición es FALSA desde el principio...
mientras (puntaje > 100)
(Si el puntaje actual es 0)
¡El bucle nunca se ejecutará ni una vez!
Caza de Errores #1
// ¿Qué está mal?
var n = 0
mientras (n < 10)
{
decir "¡Hola!"
}
¡Bucle Infinito!
Nunca cambiamos el valor de n. ¡Se queda en 0 para siempre y el juego se cuelga!
Caza de Errores #2
// ¿Qué está mal?
var n = 10
mientras (n < 5)
{
n = n + 1
}
¡Código Invisible!
La condición es falsa desde el inicio (10 no es menor que 5). El bucle es ignorado por completo.
Código Real: JavaScript
while (vida > 0) {
generarGlitch();
pause(100);
}
¡Es exactamente lo mismo que los bloques!
Reto Avanzado: El Generador
Diseña un bucle que cree un muro de bloques al inicio del nivel:
Crea una variable columna que empiece en 0.
Usa un bucle mientras columna < 10.
Dentro: Coloca un bloque en la posición (columna * 16, 0).
¡No olvides aumentar columna en 1!
Consejos Pro
Nombres Claros
No uses variables como "x". Usa enemigosRestantes o tiempoCarga.
Planifica Antes
Escribe en un papel cuándo quieres que el bucle se detenga antes de tocar la computadora.
Comenta tu Lógica
Usa bloques de texto para explicar qué hace tu bucle complejo.
Prueba Paso a Paso
Usa el simulador para ver si el bucle hace lo que esperas.
Repaso de la Misión
1
Los bucles While necesitan una condición.
2
Si la condición es Verdadera, el bucle sigue.
3
¡Siempre usa Pausa y cambia la Variable!
Misión: Reparar el Sistema
Objetivo:
Crea la variable glitchesReparados.
Usa un bucle mientras: "mientras glitchesReparados < 5..."
Dentro: Genera un sprite "Glitch", espera un poco, e incrementa la variable.
Al terminar el bucle, muestra el mensaje "¡Sistema Limpio!".
¡A Programar!
Nivel Completado
Abre MakeCode Arcade y comienza tu misión.
generarSprite("Enemigo")
pausa(100)
}
Explica por qué este bucle colgará el juego:
¿Cómo lo arreglarías?
¿vida == 0?
Si es SÍ -> Se detiene
Operadores Lógicos
> Mayor que
< Menor que
== Igual a
!= Distinto de
Variables: El Motor del Bucle
Para que un bucle no sea infinito, algo dentro del bucle debe cambiar el valor de la variable.
mientras (monedas < 5)
{
generarMoneda()
monedas = monedas + 1
}
Caso 1: El Jefe Invencible
"Mientras el jefe tenga escudo, el jugador no puede hacerle daño."
mientras (jefeEscudo == true)
Dentro del bucle, el código puede hacer que el jefe brille en azul o sea transparente.
Caso 2: Lluvia de Poderes
"Mientras el nivel sea menor a 5, caen corazones del cielo."
mientras (nivel < 5)
Cuando el jugador suba al nivel 5, ¡la lluvia se detendrá automáticamente!
¡No Olvides la Pausa!
Las computadoras son demasiado rápidas. Sin un bloque de "pausa", el bucle correrá miles de veces en un segundo y el juego se congelará.
pausa(100ms)
¿Y si nace muerto?
Si la condición es FALSA desde el principio...
mientras (puntaje > 100)
(Si el puntaje actual es 0)
¡El bucle nunca se ejecutará ni una vez!
Caza de Errores #1
// ¿Qué está mal?
var n = 0
mientras (n < 10)
{
decir "¡Hola!"
}
¡Bucle Infinito!
Nunca cambiamos el valor de n. ¡Se queda en 0 para siempre y el juego se cuelga!
Caza de Errores #2
// ¿Qué está mal?
var n = 10
mientras (n < 5)
{
n = n + 1
}
¡Código Invisible!
La condición es falsa desde el inicio (10 no es menor que 5). El bucle es ignorado por completo.
Código Real: JavaScript
while (vida > 0) {
generarGlitch();
pause(100);
}
¡Es exactamente lo mismo que los bloques!
Reto Avanzado: El Generador
Diseña un bucle que cree un muro de bloques al inicio del nivel:
Crea una variable columna que empiece en 0.
Usa un bucle mientras columna < 10.
Dentro: Coloca un bloque en la posición (columna * 16, 0).
¡No olvides aumentar columna en 1!
Consejos Pro
Nombres Claros
No uses variables como "x". Usa enemigosRestantes o tiempoCarga.
Planifica Antes
Escribe en un papel cuándo quieres que el bucle se detenga antes de tocar la computadora.
Comenta tu Lógica
Usa bloques de texto para explicar qué hace tu bucle complejo.
Prueba Paso a Paso
Usa el simulador para ver si el bucle hace lo que esperas.
Repaso de la Misión
1
Los bucles While necesitan una condición.
2
Si la condición es Verdadera, el bucle sigue.
3
¡Siempre usa Pausa y cambia la Variable!
Misión: Reparar el Sistema
Objetivo:
Crea la variable glitchesReparados.
Usa un bucle mientras: "mientras glitchesReparados < 5..."
Dentro: Genera un sprite "Glitch", espera un poco, e incrementa la variable.
Al terminar el bucle, muestra el mensaje "¡Sistema Limpio!".