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

[Sugerencia] Desafío elegir un numero en un intervalo determinado

Una alternativa flexible, en la cual el usuario puede escoger el intervalo de números en el que hay que adivinar, y puede decidir el máximo de intentos que quiera, además, tiene validaciones para cuando se cambie de pestaña y se quiera volver a jugar.

function solicitarIntervalo() {

let rangoMinimo = parseInt(prompt('Elige un número mínimo para el intervalo'));
let rangoMaximo = parseInt(prompt('Elige un número máximo para el intervalo, que no sea más de 100'));

if (rangoMaximo <= 100) {
    if (rangoMinimo != 0 && rangoMaximo != 0) {
        if (rangoMinimo < rangoMaximo) {
            let numeroSecreto = Math.floor(Math.random() * (rangoMaximo - rangoMinimo + 1)) + rangoMinimo;
            console.log(numeroSecreto);
            let numeroUsuario = 0;
            let contador = 1;
            let maximosIntentos = parseInt(prompt('Elige el número máximo de intentos'));
            
            while (numeroUsuario != numeroSecreto) {

                numeroUsuario = parseInt(prompt(`Elige un número entre ${rangoMinimo} y ${rangoMaximo}`));                   

                if (numeroUsuario < rangoMinimo || numeroUsuario > rangoMaximo) {
                    alert(`El número debe estar en el intervalo de ${rangoMinimo} y ${rangoMaximo}`);
                    break;
                }

                if (numeroUsuario == numeroSecreto) {
                    alert(`¡Adivinaste el número ${numeroSecreto}!`);
                    alert(`Número de intentos: ${contador}`);
                    break;
                } else {
                    if (numeroUsuario > numeroSecreto) {
                        alert('¡El número secreto es menor!');
                        contador++;
                    } else {
                        alert('¡El número secreto es mayor!');
                        contador++;
                    }
                }

                if (contador > maximosIntentos) {
                    alert(`¡Número de intentos máximo (${contador - 1}) alcanzado!`);
                    alert(`¡El número era ${numeroSecreto}!`);
                    break;
                }
            }    
            
        } else {
            alert('El número mínimo debe ser menor que el número máximo');
        }
    } else {
        alert('Los números no pueden ser 0');
    }
} else {
    alert('El número máximo no puede ser mayor a 100');
}

if (confirm("¿Quieres jugar de nuevo?")) {
     solicitarIntervalo();
 } else {
     alert("¡Gracias por jugar!");
     return;
 }

}

document.addEventListener('DOMContentLoaded', function() { solicitarIntervalo(); });

document.addEventListener('visibilitychange', function() { if (!document.hidden) { solicitarIntervalo(); } });

1 respuesta

¡Hola Brayan!

Entiendo que estás buscando una alternativa flexible para que el usuario pueda elegir el intervalo de números en el que debe adivinar, así como también el número máximo de intentos. Para lograr esto, es necesario realizar algunos cambios en el código que has compartido.

Una forma de implementar esta funcionalidad es permitir que el usuario elija el intervalo de números al inicio del juego. Para lograr esto, puedes modificar la función solicitarIntervalo() para que solicite al usuario el rango de números deseados y el número máximo de intentos. Algo así:

function solicitarIntervalo() {
    let rangoMinimo = parseInt(prompt('Elige un número mínimo para el intervalo'));
    let rangoMaximo = parseInt(prompt('Elige un número máximo para el intervalo, que no sea más de 100'));
    // ... resto del código ...
}

Además, es importante asegurarse de que el número secreto se genere dentro del rango seleccionado por el usuario. Puedes ajustar la generación del número secreto de la siguiente manera:

let numeroSecreto = Math.floor(Math.random() * (rangoMaximo - rangoMinimo + 1)) + rangoMinimo;

De esta forma, el número secreto se generará dentro del rango especificado por el usuario.

Espero que estos cambios te ayuden a lograr la flexibilidad que estás buscando en tu juego. Recuerda que siempre es importante validar las entradas del usuario para garantizar un funcionamiento adecuado.

¡Espero haber ayudado y buenos estudios!