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

[Proyecto] 05. Desafío

EL desafio consiste en modificar el código actual del juego, donde el sistema genera un número aleatorio entre 1 y 10, para que el usuario pueda jugar con un rango diferente, por ejemplo, entre 1 y 100 o entre 1 y 1000:

let numeroMaximoPosible=10;
// Solicito al usuario el número máximo del rango
do {
    numeroMaximoPosible = parseInt(prompt("Ingresa el número máximo del rango (Ejemplo: 10, 100, 1000):"));
} while (isNaN(numeroMaximoPosible) || numeroMaximoPosible < 1);

// Generar número secreto dentro del rango definido
let numeroSecreto = (Math.floor(Math.random() * numeroMaximoPosible)) + 1;
let numeroUsuario = 0;
let intentos = 1;
let maximosIntentos = 6; // Se mantiene el límite de intentos

// Bucle para jugar hasta que el usuario acierte o supere los intentos
while (numeroUsuario !== numeroSecreto) {
    numeroUsuario = parseInt(prompt(`Intento ${intentos}/${maximosIntentos} - Ingresa un número entre 1 y ${numeroMaximoPosible}:`));

    // Validar entrada
    if (isNaN(numeroUsuario) || numeroUsuario < 1 || numeroUsuario > numeroMaximoPosible) {
        alert(`Entrada inválida. Ingresa un número entre 1 y ${numeroMaximoPosible}.`);
        continue;
    }

    // Verificar si el usuario acertó
    if (numeroUsuario === numeroSecreto) {
        alert(`¡Acertaste! El número era ${numeroUsuario}. Lo lograste en ${intentos} ${intentos === 1 ? 'intento' : 'intentos'}.`);
        break;
    } else {
        alert(numeroUsuario > numeroSecreto ? "El número secreto es menor." : "El número secreto es mayor.");
        intentos++;

        // Verificar si se superó el límite de intentos
        if (intentos > maximosIntentos) {
            alert(`Llegaste al máximo de ${maximosIntentos} intentos. El número secreto era ${numeroSecreto}.`);
            break;
        }
    }
}

Agregué un do while para asegurar que el usuario ingrese un número válido como límite máximo. Usé tmplate strings y un operador ternario para mejorar los mensajes. También añadí una validación que evita que el juego siga si el usuario ingresa un número inválido. Por último, ahora el juego termina automáticamente cuando se alcanzan los intentos máximos, mostrando un mensaje con el número secreto.

1 respuesta

Hola Jeison, espero que estés bien

¡Qué bueno que estás trabajando en este desafío! Parece que ya has implementado varias mejoras en el código del juego. El uso de un do while para validar la entrada del usuario y el uso de template strings realmente ayuda a mejorar la claridad y la funcionalidad del código.

Tu implementación ya permite al usuario elegir un rango diferente, como entre 1 y 100 o entre 1 y 1000, lo cual era uno de los objetivos del desafío. Además, la validación que has añadido para asegurar que el juego no continúe con entradas inválidas es muy útil para mejorar la experiencia del usuario.

Como sugerencia adicional, podrías considerar agregar un mensaje que permita al usuario decidir si quiere jugar otra vez después de terminar un juego, ya sea ganando o perdiendo. Esto podría hacerse preguntando al usuario si desea jugar de nuevo después de mostrar el resultado final.

Aquí tienes un ejemplo de cómo podrías implementar esto:

let jugarDeNuevo = true;

while (jugarDeNuevo) {
    // Tu código del juego aquí...

    // Después de que el juego termine
    jugarDeNuevo = confirm("¿Quieres jugar de nuevo?");
}

Este pequeño ajuste permite que el usuario pueda disfrutar del juego varias veces sin tener que reiniciar el programa manualmente.

Espero que estas sugerencias te sean útiles y que sigas disfrutando del proceso de aprendizaje. ¡Bons estudios!