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

Desafio Final: Numero secreto en un rango numerico

// 4. Desafios no obligatorios
// Juego de adivinar un número secreto indicando rango numérico
let numeroUsuario = 0;
let intentos = 1;
let maximosIntentos = 3;

let rangoMinimo = parseInt(prompt("Indica un número mínimo del rango (mayor o igual a 1):"));

// Validación del rango mínimo
while (isNaN(rangoMinimo) || rangoMinimo < 1) {
    alert("Por favor, ingresa un número válido mayor o igual a 1.");
    rangoMinimo = parseInt(prompt("Indica un número mínimo del rango (mayor o igual a 1):"));
    if (rangoMinimo >= 1) {
        console.log(`Rango mínimo establecido: ${rangoMinimo}`);
        break; // Salimos del bucle si el rango mínimo es válido
    }
}

let rangoMaximo = parseInt(prompt(`Indica un número máximo del rango (mayor que ${rangoMinimo}:)`));

// Validación del rango máximo
while (isNaN(rangoMaximo) || rangoMaximo <= rangoMinimo) {
    alert(`Por favor, ingresa un número válido mayor a ${rangoMinimo}.`);
    rangoMaximo = parseInt(prompt(`Indica un número máximo del rango (mayor que ${rangoMinimo}):`));

    if (rangoMaximo > rangoMinimo) {
        console.log(`Rango máximo establecido: ${rangoMaximo}`);
        break; // Salimos del bucle si el rango máximo es válido
    }
}


// Genera un número secreto aleatorio dentro del rango especificado    
let numeroSecreto = Math.floor(Math.random() * (rangoMaximo - rangoMinimo + 1)) + rangoMinimo;
console.log(`Número secreto generado: ${numeroSecreto}`); // Para depuración

while (numeroUsuario != numeroSecreto) {
    numeroUsuario = parseInt(prompt(`Me indicas un número entre ${rangoMinimo} y ${rangoMaximo} por favor:`));

    if (numeroUsuario == numeroSecreto) {
        //Condición verdadera, acertó el número
        alert(`Acertaste, el número es: ${numeroSecreto} y lo encontraste en ${intentos} ${intentos == 1 ? "vez" : "veces"}.`);
        break; // Salimos del bucle
    } else {
        if (numeroUsuario < numeroSecreto) {
            //El número es menor al secreto
            alert(`El número ${numeroUsuario} es menor al número secreto`);
        } else if (numeroUsuario > numeroSecreto) {
            //El número es mayor al secreto
            alert(`El número ${numeroUsuario} es mayor al número secreto`);
        }
        intentos++;
        console.log(`Intentos: ${intentos}`);
        //palabraVeces = "veces";
        if (intentos > maximosIntentos) {
            alert(`Llegaste al máximo de intentos, el maximo de intentos es ${maximosIntentos} y el número secreto era: ${numeroSecreto}`);
            break; // Salimos del bucle si se superan los intentos
        } 
    }
}
1 respuesta

Hola Greccy, espero que estés bien

¡Qué emocionante ver que estás trabajando en un juego de adivinanza de números! Tu código se ve bastante bien estructurado y parece que has considerado varias validaciones importantes. Aquí hay un par de sugerencias que podrían ayudarte a mejorar o ajustar tu código:

  1. Mensajes de Intentos: Veo que tienes un comentario sobre la palabra "veces", pero no está siendo utilizada en el mensaje de alerta. Puedes mejorar el mensaje de acierto utilizando una variable para manejar el singular y el plural, como ya lo has hecho en el alert dentro del bucle. Aquí tienes un ejemplo:

    alert(`Acertaste, el número es: ${numeroSecreto} y lo encontraste en ${intentos} ${intentos == 1 ? "vez" : "veces"}.`);
    
  2. Validación de Entrada del Usuario: Sería útil agregar una validación para asegurarte de que el usuario ingrese un número válido durante sus intentos. Esto evitará que el programa falle si el usuario ingresa algo que no sea un número. Puedes hacer algo similar a las validaciones de los rangos:

    while (isNaN(numeroUsuario) || numeroUsuario < rangoMinimo || numeroUsuario > rangoMaximo) {
        alert(`Por favor, ingresa un número válido entre ${rangoMinimo} y ${rangoMaximo}.`);
        numeroUsuario = parseInt(prompt(`Me indicas un número entre ${rangoMinimo} y ${rangoMaximo} por favor:`));
    }
    
  3. Claridad en los Mensajes: Asegúrate de que los mensajes de alerta sean claros para el usuario. Por ejemplo, cuando el usuario alcanza el máximo de intentos, puedes hacer que el mensaje sea más amigable:

    alert(`Lo siento, has alcanzado el máximo de intentos (${maximosIntentos}). El número secreto era: ${numeroSecreto}. ¡Intenta de nuevo!`);
    

Espero que estas sugerencias te sean útiles para mejorar tu juego. ¡Sigue adelante con tu aprendizaje de JavaScript!

Espero haber ayudado y buenos estudios!