He pensado una solución parecida a Enoc Joaquin Francisco, por lo decidi copiar su codigo y agregarle dos cosas. Permiso Joaquin jaja :)
La primera es que al pedir el número maximo al usuario, este debe ingresar un valor numérico, si ingresa un valor NaN no le permitirá continuar hasta que ingrese un número.
Y la segunda es tambien otra validación para que cuando el jugar ingrese un número para adivinar, este dato no podra ser un NaN, por lo que le hara saber al jugador que debe ser un dato de tipo numérico.
let numeroMaximo;
do {
numeroMaximo = parseInt(prompt("Elige el número máximo del juego: "));
if (isNaN(numeroMaximo) || numeroMaximo <= 0) {
alert("Ingresa un valor númerico");
}
} while (isNaN(numeroMaximo) || numeroMaximo <= 0);
let numeroSecreto = Math.floor(Math.random() * numeroMaximo) + 1;
let numeroUsuario = 0;
let intentos = 1;
let numeroIntentos = 5;
while (numeroUsuario != numeroSecreto) {
numeroUsuario = parseInt(
prompt(`Escribe un número entre 1 y ${numeroMaximo}: `)
);
console.log(numeroUsuario);
if (!isNaN(numeroUsuario))
if (numeroUsuario == numeroSecreto) {
alert(
`Acertaste el numero. El número es: ${numeroUsuario} lo has conseguido en ${intentos} ${
intentos == 1 ? "intento" : "intentos"
}`
);
} else {
if (numeroUsuario > numeroSecreto) {
alert(`El numero es menor que ${numeroUsuario}`);
} else {
alert(`El numero es mayor que ${numeroUsuario}`);
}
intentos++;
if (intentos > numeroIntentos) {
alert(
`Has agotado los ${numeroIntentos} intentos que tenias disponibles`
);
break;
}
}
else {
alert("Ingresa un valor numérico ");
}
}