Aprender a tomar decisiones dentro del código es una de las bases más importantes de la programación. A través de un juego sencillo pero efectivo, se construye paso a paso una lógica que permite generar un número aleatorio, capturar la respuesta del usuario y validar si adivinó o no. Todo esto usando estructuras condicionales en JavaScript.
¿Cómo generar un número aleatorio con Math.random y Math.floor?
Para que el juego funcione, lo primero es crear un número secreto que cambie cada vez que se ejecuta el programa. Esto se logra combinando dos métodos nativos de JavaScript [0:27]:
- Math.random(): genera un número decimal aleatorio entre 0 y 1.
- Math.floor(): redondea hacia abajo el resultado para obtener un número entero.
La constante se declara así:
javascript
const numeroSecreto = Math.floor(Math.random() * 10) + 1;
Con esta línea, el programa produce un número entero aleatorio del 1 al 10 cada vez que se recarga la página. La combinación de ambos métodos es una técnica muy común cuando necesitas valores al azar dentro de un rango específico.
¿Cómo capturar la respuesta del jugador con prompt y parseInt?
Una vez definido el número secreto, se necesita que el usuario ingrese su intento. Para eso se utiliza prompt, que abre una ventana en el navegador donde el jugador puede escribir su respuesta [1:07]:
javascript
const numeroJugador = parseInt(prompt("Adivina el número secreto entre el 1 al 10"));
El método parseInt es fundamental aquí porque el prompt siempre devuelve un string (texto). Al envolverlo con parseInt, se convierte ese texto en un número entero, lo cual es necesario para que las comparaciones funcionen correctamente.
Para verificar visualmente el valor ingresado, se agrega un console.log [1:42]:
javascript
console.log("Este es el número con el que juegas:", numeroJugador);
¿Cómo funciona la estructura if, else if y else en este juego?
Aquí entra el corazón del ejercicio: la ejecución condicional. Dependiendo de la relación entre el número del jugador y el número secreto, el programa ejecuta un bloque de código diferente [2:14].
¿Qué pasa si el jugador adivina?
La primera condición compara ambos valores usando el operador de igualdad estricta (===), que valida tanto el valor como el tipo de dato:
javascript
if (numeroJugador === numeroSecreto) {
console.log("¡Felicidades! Adivinaste el número secreto");
}
Si coinciden, el jugador gana y recibe un mensaje de felicitación [2:30].
¿Qué ocurre si el número es muy bajo o muy alto?
Cuando el jugador no adivina, se utilizan las ramas else if y else para dar retroalimentación útil [3:48]:
javascript
else if (numeroJugador < numeroSecreto) {
console.log("El número es demasiado bajo. Intenta de nuevo");
} else {
console.log("El número es demasiado alto. Intenta de nuevo");
}
- Si el número del jugador es menor que el secreto, se le indica que su intento fue bajo.
- El bloque else actúa como un caso default: si no es igual ni menor, entonces es mayor.
Una variante mencionada es agregar un else if adicional para validar si el número está fuera del rango del 1 al 10, y reservar el else para un mensaje genérico [4:38].
¿Por qué es importante practicar con ejecución condicional?
La estructura if / else if / else permite que el programa tome decisiones dinámicas basándose en la comparación de valores. En este ejercicio los resultados son simples mensajes en consola, pero esta misma lógica se aplica a validaciones de formularios, control de acceso, flujos de pago y cualquier situación donde el comportamiento dependa de una condición [5:48].
Puntos clave para recordar:
- Usa
=== para comparaciones estrictas que incluyan tipo de dato.
- Combina
Math.floor y Math.random para generar enteros aleatorios.
- Envuelve el
prompt con parseInt para trabajar con números reales.
- El bloque
else siempre captura cualquier caso no contemplado.
Si quieres llevar este juego más lejos, intenta agregar un ciclo que permita múltiples intentos o un contador de oportunidades. Comparte en los comentarios cómo lo resolviste.