Para solucionar el desafío, hice que el programa le pida al usuario un número mínimo y uno máximo. Esto permite que el usuario elija el rango en el que quiere jugar. Luego, el programa comprueba que el número mínimo sea menor que el máximo antes de seguir. Mientras el usuario intenta adivinar el número secreto, le da pistas sobre si su número es más grande o más pequeño. Así, el juego se siente más personalizado y fácil de usar, pero sigue siendo el mismo.
// Variables
let rangoMinimo = parseInt(prompt("¿Valor mínimo del rango?"));
let rangoMaximo = parseInt(prompt("¿Valor máximo del rango?"));
while (rangoMinimo >= rangoMaximo || rangoMinimo == null || rangoMaximo == null) {
rangoMinimo = parseInt(prompt("Introduce un mínimo válido:"));
rangoMaximo = parseInt(prompt("Introduce un máximo válido:"));
}
let numeroSecreto = Math.floor(Math.random() * (rangoMaximo - rangoMinimo + 1)) + rangoMinimo;
let numeroUsuario = 0;
let intentos = 1;
let maximosIntentos = 3;
while (numeroUsuario != numeroSecreto) {
numeroUsuario = parseInt(prompt(`Intento ${intentos}: Ingresa un número entre ${rangoMinimo} y ${rangoMaximo}`));
if (numeroUsuario < rangoMinimo || numeroUsuario > rangoMaximo || numeroUsuario == null) {
alert(`Por favor, ingresa un número válido entre ${rangoMinimo} y ${rangoMaximo}.`);
continue;
}
if (numeroUsuario == numeroSecreto) {
alert(`Acertaste, el número es ${numeroUsuario}. Lo lograste en ${intentos} intento(s).`);
break;
} else {
alert(`El número secreto es ${numeroUsuario > numeroSecreto ? 'menor' : 'mayor'}.`);
intentos++;
if (intentos > maximosIntentos) {
alert(`Llegaste al límite de intentos. El número era ${numeroSecreto}.`);
break;
}
}
}