Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
6
respuestas

[Duda] ¿Porque se deshabilita el botón "Nuevo juego"?.

Cuando se sale de la recursividad no le hemos indicado que el botón se tiene que deshabilitar sin embargo lo hace, ¿porque sucede esto?

let listaNumerosSorteados = [];
let numeroMaximo = 10;

// Cambia el texto a un elemento de HTML.
function asignarTextoElemento(elemento, texto) {

    // Se selecciona el elemento desde el DOM.
    let titulo = document.querySelector(elemento); 

    // Se cambia el texto.
    titulo.innerHTML = texto; 
    return;
}

function generarNumeroSecreto() {
    // Genera un numero aleatorio y le quita los decimales.
    let numeroGenerado = Math.floor(Math.random() * numeroMaximo) + 1;

    /* Muestra en consola el numero generado pseudo aleatoriamente
    al igual que la lista de numeros que ya se han generado anteriormente. */
    console.log(numeroGenerado);
    console.log(listaNumerosSorteados);

    // Verifica si la longitud de la lista es igual al numero maximo asignado.
    if (listaNumerosSorteados.length == numeroMaximo) {

        // Cambia el texto de la etiqueta 'p'.
        asignarTextoElemento('p', `Ya se sortearon todos los numeros posibles`);

    } else {

        // Verifica si dentro de la lista esta el nuevo numero generado.
        if (listaNumerosSorteados.includes(numeroGenerado)){

            // Vuelve a generar el numero.
            return generarNumeroSecreto();
    
        } else {

            // Agrega el numero generado a la lista.
            listaNumerosSorteados.push(numeroGenerado);
            return numeroGenerado;
    
        }
    }
}
6 respuestas

Aun no llego a eso punto pero en el codigo html el boton tiene el atributo disabled

Veo que te hace falta una función:

function verificarIntento (){
    let numeroDeUsuario = parseInt (document.getElementById('valorUsuario').value);

    if(numeroDeUsuario === numeroSecreto){
        asignarTextoElemento('p', `Acertaste el número en ${intentos} ${(intentos === 1)?'vez':'veces'}`);
        document.getElementById('reiniciar').removeAttribute ('disabled');
    }else{
        // El usuario no acerto.
        if (numeroDeUsuario > numeroSecreto){
            asignarTextoElemento ('p','El número secreto es menor');
        }else{
            asignarTextoElemento ('p', 'El número secreto es mayor');
        }
        intentos++;
        limpiarCaja ();
    }
    return;
}

Gracias, pero me refiero a que sin esa función de: document.getElementById('reiniciar').removeAttribute ('disabled'); aun así funciona y no entiendo el porqué.

Tienes este código en HTML?

Debe estar así, espero poder ayudarte.

solución!

Cuando adivinas el número secreto dentro de esa mísma función se habilita el botón para que puedas reiniciar el juego. Sin embargo, al terminar el último número del límiteMaximo sigue habilitado como si hubiera alguna oportunidad jugar de nuevo y al dar click sobre el botón 'nuevo juego' recuerda que este llama a la función reiniciarJuego() donde además de poner todo a los valores de inicio, el botón se deshabilita, este termina ahí con el botón deshabilitado y con la condición de que el tamaño de numerosSorteados == limiteMáximo es verdadera modifica el mensaje a 'ya se sortearon todos los números' el flujo del programa ya no tiene a donde ir y termina.

veo que en el video ses confuso, pero al tener el console.log, el esta viendo el número que es correcto, entonces al colocarlo, ya lo lleva al mensaje de que acertamos, por eso se habilita el botón enseguida, si jugaramos sin saber el número, el botón no nos daria la opcioón de volver a jugar hasta que acertemos. tambien pense que me faltaba algo jaja