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

[Duda] Duda clase Actividad 5 Resolviendo Recursividad

Sortea número y almacena, guardando los que ya fueron sorteados. No obstante, en un momento empieza a generar un número repetido y deja de funcionar.

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





function asignarTextoElemento(elemento, texto) {
    let elementoHTML = document.querySelector(elemento);//documen.querySelector selcciona un elemento de HTML"<h1>,<p> so on.
    elementoHTML.innerHTML = texto; //elementoHTML.innerHTML le asignamos el texto que queremos darle
    return;
}

function verificarIntento () {
    let numeroDeUsuario = parseInt(document.getElementById("valorUsuario").value);
    
    
    if (numeroDeUsuario === numeroSecreto){
        asignarTextoElemento('p',`Acertaste el número en ${intentos} ${intentos === 1 ? "intento" : "intentos"}`);      
        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 mayor");
        }
        intentos++;
        limpiarCaja();
        
    }
    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 número generado está incluído 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", `Give a number from 1 to ${numeroMaximo}`);
    numeroSecreto = generarNumeroSecreto();
    intentos = 1;
}
function reiniciarJuego(){
    //limpiar la caja
    limpiarCaja();
    //indicar mensaje de intervalo de números
    condicionesIniciales();
    //generar el número aleatorio 
    //deshabilitar el botón de nuevo juego
    document.querySelector("#reiniciar").setAttribute("disabled",true);
}
condicionesIniciales();
1 respuesta

mmm en la función generar generarNumeroSecreto, en la parte donde se verifica si el número está incluido en la lista creo que te falta ( ) en el return generarNumeroSecreto;

Corrección:

//Si el número generado está incluído en la lista
            if (listaNumerosSorteados.includes(numeroGenerado)){
                    return generarNumeroSecreto();
            } else {
                listaNumerosSorteados.push(numeroGenerado);
                return numeroGenerado;
            }