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

Mi solución

// se requiere que el numeron sea entre 1 y 10 1 y 1000 la idea eria poner in prompt y guardar la variable
let rangoSup = parseInt(prompt(Ingrese el rango superior de los número aleatorio a generar entre 0 y..?));
let numeroSecreto = Math.floor(Math.random()rangoSup)+1;
let numeroUsuario=0;
let intentos = 1;
//let palabraVeces ="vez";
let maximosIntentos = 10; // es mala practica dejar el maximo de intentos como 3 en el codigo es mejor declarr la variable
while (numeroUsuario != numeroSecreto)
{
let numeroUsuario = parseInt(prompt(Me indicas un número entre 0 y ${rangoSup}));
/

para dejar codigo fuera o dejar comentarios
*/

console.log(typeof(numeroUsuario));
console.log(numeroSecreto);
// se usa doble igual para asignar un valor a una variable, compara dos valores para ver si son iguales
if (numeroUsuario == numeroSecreto) {
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++;  // dice que es operador ternario? o era pone el codigo de js en el template strings
//palabraVeces="veces";
if (intentos > maximosIntentos)  
{ alert(`Llegaste al número máximo de ${maximosIntentos} intentos el número secreto era ${numeroSecreto}`);
 break; 
}0

}

1 respuesta

¡Hola Adrián, espero que estés bien!

Gracias por compartir tu solución. Veo que estás trabajando en un juego de adivinanza de números en JavaScript. Me parece que has hecho un buen trabajo al establecer un rango dinámico para el número aleatorio, permitiendo que el usuario defina el límite superior.

He notado algunos puntos que podrías considerar para mejorar tu código:

  1. Declaración de Variables: En el bucle while, estás redeclarando la variable numeroUsuario dentro del bucle. Podrías declarar numeroUsuario fuera del bucle para evitar confusiones y posibles errores.

  2. Comentarios: Algunos de tus comentarios parecen un poco confusos, especialmente donde mencionas el operador ternario. El operador ternario es una forma de simplificar una declaración if-else en una sola línea. Sin embargo, en el código que compartiste, no estás usando un operador ternario. Podrías revisar esos comentarios para que sean más claros.

  3. Validación de Entrada: Sería útil agregar una validación para asegurarte de que el usuario ingrese un número válido dentro del rango especificado. Esto evitaría que el programa falle si el usuario ingresa algo que no sea un número.

  4. Uso de Template Strings: Veo que ya estás utilizando template strings para mostrar mensajes al usuario, lo cual es excelente. Asegúrate de usarlos consistentemente para mejorar la legibilidad del código.

Aquí tienes un ejemplo de cómo podrías ajustar el bucle while para mejorar la declaración de variables y la validación de entrada:

let numeroUsuario = null;
while (numeroUsuario !== numeroSecreto) {
    numeroUsuario = parseInt(prompt(`Me indicas un número entre 0 y ${rangoSup}`));
    
    if (isNaN(numeroUsuario) || numeroUsuario < 0 || numeroUsuario > rangoSup) {
        alert(`Por favor, ingresa un número válido entre 0 y ${rangoSup}.`);
        continue;
    }

    if (numeroUsuario === numeroSecreto) {
        alert(`Acertaste, el número es: ${numeroUsuario} lo hiciste en ${intentos} ${intentos === 1 ? "vez" : "veces"}`);
    } else {
        alert(`El número secreto es ${numeroUsuario > numeroSecreto ? "menor" : "mayor"}`);
    }
    
    intentos++;
    
    if (intentos > maximosIntentos) {
        alert(`Llegaste al número máximo de ${maximosIntentos} intentos. El número secreto era ${numeroSecreto}`);
        break;
    }
}

Espero que estas sugerencias te sean útiles para mejorar tu código. ¡Espero haber ayudado y buenos estudios!