4
respuestas

[Duda] No se me habilita el boton nuevo juego

Hola! intente hacer el ejercicio propuesto en el video de poner un numero maximo de intentos y lo logre. Sin embargo no puedo hacer que vuelva a reiniciar el juego habilitando el boton "nuevo juego" nuevamente.

let numeroSecreto = 0;
let intentos = 0;
let listaNumerosSorteados = [];
let numeroMaximo = 10;
let intentosMaximo=3;


function asignarTextoElemento(elemento, texto) {
    let elementoHTML = document.querySelector(elemento);
    elementoHTML.innerHTML = texto;
    return;
}

function verificarIntento() {
    let numeroDeUsuario = parseInt(document.getElementById('valorUsuario').value);
    if (intentos<(intentosMaximo+1))
    {
        if (numeroDeUsuario === numeroSecreto) 
        {
            asignarTextoElemento('p',`Acertaste el número en ${intentos} ${(intentos === 1) ? 'vez' : 'veces'}`);
            document.getElementById('reiniciar').removeAttribute('disabled');
        } 
        else 
        {
            //El usuario no acertó.
            if (numeroDeUsuario > numeroSecreto) 
            {
                asignarTextoElemento('p','El número secreto es menor');
            } 
            else 
            {
                asignarTextoElemento('p','El número secreto es mayor');
            }
        intentos++;
        limpiarCaja();
        }
    }
    else
    {
        asignarTextoElemento('p','Llegaste a la cant maxima de intentos');
        reiniciarJuego;
    }   
    
return;
}

function limpiarCaja() {
    document.querySelector('#valorUsuario').value = '';
}

function generarNumeroSecreto() {
    let numeroGenerado =  Math.floor(Math.random()*numeroMaximo)+1;

    console.log(numeroGenerado);
    console.log(listaNumerosSorteados);
    //Si ya sorteamos todos los números
    if (listaNumerosSorteados.length == numeroMaximo) {
        asignarTextoElemento('p','Ya se sortearon todos los números posibles');
    } else {
        //Si el numero generado está incluido en la lista 
        if (listaNumerosSorteados.includes(numeroGenerado)) {
            return generarNumeroSecreto();
        } else {
            listaNumerosSorteados.push(numeroGenerado);
            return numeroGenerado;
        }
    }
}

function condicionesIniciales() {
    asignarTextoElemento('h1','Juego del número secreto!');
    asignarTextoElemento('p',`Indica un número del 1 al ${numeroMaximo}`);
    numeroSecreto = generarNumeroSecreto();
    intentos = 1;
    console.log(numeroSecreto);
}

function reiniciarJuego() {
    //limpiar caja
    limpiarCaja();
    //Indicar mensaje de intervalo de números 
    //Generar el número aleatorio
    //Inicializar el número intentos
    condicionesIniciales();
    //Deshabilitar el botón de nuevo juego
    document.querySelector('#reiniciar').setAttribute('disabled','true');
    
}
condicionesIniciales();
4 respuestas

Saludos María.

Ubicación de un errorRemplazar por:

reiniciarJuego();

Espero sea de utilidad.

Gracias!!Ya corregi la fala del parentesis. Ahora me pasa que al llegar a la cantidad maxima de intentos no me aparece el mensaje "superaste la cantidad de intentos", directamente me comienza el nuevo juego...

let numeroSecreto = 0;
let intentos = 0;
let listaNumerosSorteados = [];
let numeroMaximo = 20;
let intentosMaximo=3;


function asignarTextoElemento(elemento, texto) {
    let elementoHTML = document.querySelector(elemento);
    elementoHTML.innerHTML = texto;
    return;
}

function verificarIntento() 
{
    let numeroDeUsuario = parseInt(document.getElementById('valorUsuario').value);
    if (intentos<(intentosMaximo))
    {
        if (numeroDeUsuario === numeroSecreto) 
        {
            asignarTextoElemento('p',`Acertaste el número en ${intentos} ${(intentos === 1) ? 'vez' : 'veces'}`);
            document.getElementById('reiniciar').removeAttribute('disabled');
        } 
        else 
        {
            //El usuario no acertó.
            if (numeroDeUsuario > numeroSecreto) 
            {
                asignarTextoElemento('p','El número secreto es menor');
            } 
            else 
            {
                asignarTextoElemento('p','El número secreto es mayor');
            }
        intentos++;
        limpiarCaja();
        }
    }
    else
    {
        asignarTextoElemento('p','Llegaste a la cant maxima de intentos,vuelve a intentar');
        reiniciarJuego();
    }   

return;
}

function limpiarCaja() {
    document.querySelector('#valorUsuario').value = '';
}

function generarNumeroSecreto() {
    let numeroGenerado =  Math.floor(Math.random()*numeroMaximo)+1;

    console.log(numeroGenerado);
    console.log(listaNumerosSorteados);
    //Si ya sorteamos todos los números
    if (listaNumerosSorteados.length == numeroMaximo) {
        asignarTextoElemento('p','Ya se sortearon todos los números posibles');
    } else {
        //Si el numero generado está incluido en la lista 
        if (listaNumerosSorteados.includes(numeroGenerado)) {
            return generarNumeroSecreto();
        } else {
            listaNumerosSorteados.push(numeroGenerado);
            return numeroGenerado;
        }
    }
}

function condicionesIniciales() {
    asignarTextoElemento('h1','Juego del número secreto!');
    asignarTextoElemento('p',`Indica un número del 1 al ${numeroMaximo}`);
    numeroSecreto = generarNumeroSecreto();
    intentos = 1;
    console.log(numeroSecreto);
}

function reiniciarJuego() {
    //limpiar caja
    limpiarCaja();
    //Indicar mensaje de intervalo de números 
    //Generar el número aleatorio
    //Inicializar el número intentos
    condicionesIniciales();
    //Deshabilitar el botón de nuevo juego
    document.querySelector('#reiniciar').setAttribute('disabled','true');
    
}
condicionesIniciales();

Saludos Maria.

Cuando se alcanza el número máximo de intentos la configuración llama la función reiniciarJuego( ), la cual a su vez llama la función condicionesIniciales( ), la cual actualiza el texto con la nota: Indica un número del 1 al numeroMaximo. Hasta aquí la configuración hace lo que se le indica. No hay error.

Ahora si se quiere que se ejecute algo diferente cuando se alcanza el numero máximo de intentos, habría que hacer cambios en la configuración.

Por ejemplo si lo que se quiere es que aparezca el texto “Superaste la cantidad de intentos”, una posible solución seria que cuando se presente esta condición (El numero de intentos es igual o superior a la constante intentosMaximio) solo se actualice el texto deseado, no se debe llamar a la función reuniciarJuego( ), y a la vez se debe habilitar el botón de Juego nuevo para que sea el usuario quien reinicie el juego nuevamente.

Una posible sugerencia de configuración de esta sección en especial sería:

La linea: //reiniciarJuego(); con las dos barras antecediendola indica que esta linea es considerada solo un anotación de texto y no será ejecutada. En este caso puede simplemente borrar esta linea si lo desea. Se la ha dejado solo por efecto didáctico.

La linea: document.getElementById('reiniciar').removeAttribute('disabled'); habilita el boton Nuevo Juego.

} else {
        asignarTextoElemento('p','Llegaste a la cant maxima de intentos,vuelve a intentar');
        document.getElementById('reiniciar').removeAttribute('disabled'); 

        //reiniciarJuego();
    }
    return;

Espero sea de utilidad.

Hola compañeros,

tengo una duda, entonces como puedo hacer para deshabilitar el botón intentar cuando ya tiene la cantidad máxima de intentos?

Yo realice una deshabilitacion de los botones y del input para cuando finalizaba el juego pero no he podido realizarlo al momento en que acaban los intentos

y lo otro que tambien me genero problemas y no supe hacer, es como generar la posibilidad de que el usuario ponga la cantidad de numeros que quiera adivinar.

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

    if (intentos <= intentosMaximos){ 
        console.log(intentos);
        
        if (numeroDeUsuario === numeroSecreto) {
            asignarTextoElemento('p',`Acertaste el número en ${intentos} ${(intentos === 1) ? 'vez' : 'veces'}`);
            document.getElementById('reiniciar').removeAttribute('disabled');
        } else {
            //El usuario no acertó.
            if (numeroDeUsuario > numeroSecreto) {
                asignarTextoElemento('p','El número secreto es menor');
            } else {
                asignarTextoElemento('p','El número secreto es mayor');
            }
            intentos++;
            limpiarCaja();
        }
    } else{
        asignarTextoElemento('p',`Llegaste a la cantidad maxima de intentos que es ${intentosMaximos}. Inicia nuevo juego`);
        document.getElementById('reiniciar').removeAttribute('disabled'); 
    }
    return;
}

function limpiarCaja() {
    document.querySelector('#valorUsuario').value = '';
}

function generarNumeroSecreto() {
    let numeroGenerado =  Math.floor(Math.random()*numeroMaximo)+1;

    console.log(numeroGenerado);
    console.log(listaNumerosSorteados);
    //Si ya sorteamos todos los números
    if (listaNumerosSorteados.length == numeroMaximo) {
        asignarTextoElemento('p','Ya se sortearon todos los números posibles, actualiza la pagina');
        document.querySelector('#valorUsuario').setAttribute('disabled','true');
        document.querySelector('#intentar').setAttribute('disabled','true');
    } else {
        //Si el numero generado está incluido en la lista 
        if (listaNumerosSorteados.includes(numeroGenerado)) {
            return generarNumeroSecreto();
        } else {
            listaNumerosSorteados.push(numeroGenerado);
            return numeroGenerado;
        }
    }
}