Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Desafío

Realizando un estudio de funciones no vistas en las clases, descubrí la función isNaN() que sirve para determinar si un valor es "Not a Number", verifica si un valor no puede ser convertido a un número. Lo cual me permitió posteriormente definir un rango y verificar que lo ingresado por el usuario sea válido. Dejo el código:

//Variables
let numeroSecreto;
let maximo;
let numeroUsuario = 0;
let intentos = 1;
//let palabraVeces = 'vez';
let maximosIntentos = 3;

//Preguntar al usuario el rango de números
maximo = parseInt(prompt("Ingrese el número máximo del rango. (por ejemplo: 10, 100, 1000, etc.):"));

//Validar el número máximo y que sea mayor que 0
while(isNaN(maximo) || maximo<=0){
maximo = parseInt("Ingrese un número válido y mayor que 0:");
}

//Generar el número Secreto
numeroSecreto = Math.floor(Math.random()*maximo)+1;

while(numeroUsuario != numeroSecreto){
numeroUsuario = parseInt(prompt(Me indicas un número entre 1 y ${maximo}:));
console.log(typeof(numeroUsuario));
if (numeroUsuario == numeroSecreto){
//Acertamos, fue verdadera la condición
alert(Acertaste, el número es: ${numeroUsuario}. Lo hiciste en ${intentos} ${intentos == 1 ? "vez" : "veces"})
} else{
if(numeroUsuario > numeroSecreto){
alert('El número secreto es menor');
} else {
alert('El número secreto es mayor');
}
//Incrementamos el contador cuando no acierta
//intentos = intentos + 1;
//intentos += 1;
intentos++;
palabraVeces = 'veces';
if (intentos > 3){
alert(Llegaste al número máximo de ${maximosintentos} intentos);
break;
}
//La condición no se cumplió
//alert(Lo siento, no acertaste el número, tu número ingresado fue: ${numeroUsuario})
}
}

1 respuesta

¡Hola, Johnathan, espero que estés bien!

¡Qué bueno que te has aventurado a explorar funciones no vistas en las clases! La función isNaN() es realmente útil para validar entradas de usuario, especialmente cuando se espera un número.

Revisando tu código, parece que has logrado implementar la funcionalidad de permitir que el usuario defina un rango para el juego, lo cual es precisamente el desafío planteado. Sin embargo, noto un pequeño error en la línea donde verificas el número de intentos:

if (intentos > 3){
    alert(`Llegaste al número máximo de ${maximosintentos} intentos`);
    break;
}

Aquí, el nombre de la variable maximosintentos debería ser maximosIntentos para coincidir con cómo la declaraste al principio de tu código. Esto evitará errores de referencia cuando se ejecute el código.

Además, en la validación del número máximo, parece que falta el prompt dentro del parseInt en el ciclo while. Debería ser:

while(isNaN(maximo) || maximo <= 0){
    maximo = parseInt(prompt("Ingrese un número válido y mayor que 0:"));
}

Con estas correcciones, tu juego debería funcionar correctamente permitiendo que el usuario defina el rango deseado. ¡Es un excelente ejercicio para practicar la lógica de programación y el manejo de errores!

Espero haber ayudado y buenos estudios!