Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
0
respuestas

Desafío + Resolviendo la Recursividad

Buenas, lo primero que hice fue manejar el máximo de intento y numero, mi idea era que modifica el html desde funciones, entonces esto fe lo que hice:
Tuve que usar algunas cosas que no vimos en el curso, ¿Por que? Me gusta estudiar y ponerme mejores desafíos, use cosas como conts, ya que lo veía algo mas fijo, y no seria correcto usar let, ya que esto se usa cuando una variable suele cambiar, y el create elements, es algo sencillo, ya habia visto algo de html, llegue un poco mas de controladores para cargar una tabla usando thymeleaf. También iba hacer lo mismo con lo de numero máximo, pero me tomaría mas tiempo, y ya me tomo tiempo estudiar esto, así que lo hice simple.

let numeromax=Number (prompt(`Ingrese maximo número`));
//1let numeromax=Number (0);
let listaNumerosSorteado = [];
let nrosecreto= 0;
let cont = Number (1);
let max_intento = Number (0);


function establecer_juego() {
    AsignatTextoElemento('p', 'Indica maximo de intento');

    const valorUsuario = parseInt(document.getElementById('Usuario').value);
    if (valorUsuario > 0) {
        nrosecreto=generarNumeroSecreto();
        console.log (nrosecreto);
        max_intento = valorUsuario;
        AsignatTextoElemento('p', `Indica un número del 1 al ${numeromax}.  ${cont}/${max_intento}`);
        return true;
    } else {
        AsignatTextoElemento('p', 'Por favor, ingresa un número mayor que 0');
        return false;
    }
};


function inicio() {
    const juegoValido = establecer_juego();

    if (!juegoValido) return; // Si no se ingresó bien, no continúa

    const contenedorBotones = document.querySelector('.chute');
    document.getElementById('btn_confirmar_intento').remove();

    const btnIntentar = document.createElement('button');
    btnIntentar.textContent = 'Intentar';
    btnIntentar.classList.add('container__boton');
    btnIntentar.setAttribute('onclick', 'verificar_Intento();');
    btnIntentar.id = 'intentar';
    contenedorBotones.appendChild(btnIntentar);

    const btnReiniciar = document.createElement('button');
    btnReiniciar.textContent = 'Nuevo juego';
    btnReiniciar.classList.add('container__boton');
    btnReiniciar.setAttribute('onclick', 'reiniciar_juego();');
    btnReiniciar.id = 'reiniciar';
    btnReiniciar.disabled = true; // Se activará cuando se termine el juego
    contenedorBotones.appendChild(btnReiniciar);

    const btnMax = document.createElement('button');
    btnMax.textContent = 'Nuevo Maximo';
    btnMax.classList.add('container__boton');
    btnMax.setAttribute('onclick', 'NuevoMax ();');
    btnMax.id = 'maximo';
    contenedorBotones.appendChild(btnMax);
    limpiarCaja ();
    AsignatTextoElemento('h1',`Juego del numero secreto`);
};

//Funcionalidades omitidas... 
function reiniciar_juego() {
    nrosecreto= generarNumeroSecreto ();
    cont = Number (1);
    max_intento = Number (0);

    console.log (nrosecreto);

    AsignatTextoElemento('p', 'Ingresa el número máximo de intentos para comenzar');
    AsignatTextoElemento('h1', `Juego del número secreto`);
    limpiarCaja();

    const contenedorBotones = document.querySelector('.chute');

    const btnIntentar = document.getElementById('intentar');
    const btnReiniciar= document.getElementById('reiniciar');
    if (btnReiniciar) btnIntentar.remove();
    if (btnReiniciar) btnReiniciar.remove();

    contenedorBotones.innerHTML = '';

    const btnConfirmar = document.createElement('button');
    btnConfirmar.textContent = 'Confirmar intentos';
    btnConfirmar.classList.add('container__boton');
    btnConfirmar.id = 'btn_confirmar_intento';
    btnConfirmar.setAttribute('onclick', 'inicio();');
    contenedorBotones.appendChild(btnConfirmar);
};

function NuevoMax () {
    numeromax=Number (prompt(`Ingrese maximo número`));
    alert ("Se ha actualizado el maximo")
    reiniciar_juego();
};

Respecto a la recursividad lo hice asi:

//Recursividad 
function generarNumeroSecreto () {
    let nrosecreto2 = Math.floor(Math.random()*numeromax)+1;
    if (listaNumerosSorteado.length>=numeromax) {
        listaNumerosSorteado = []; 
        listaNumerosSorteado.push(nrosecreto2); 
        console.log(listaNumerosSorteado);
        return nrosecreto2
    } else {
        if (listaNumerosSorteado.includes(nrosecreto2)) {
            console.log(listaNumerosSorteado);
            return generarNumeroSecreto ();
        } else {      
            listaNumerosSorteado.push(nrosecreto2);
            console.log(listaNumerosSorteado);
            return nrosecreto2;
        }
    }
};

El mayor y igual, el motivo de esto fue porque al momento de hacer el cambio de numero max, esto generaba un bug cuando el numero max era mas grande que el largo de lista, por ejemplo: hago el cambio a 10, cuando ya la lista tengo 20, no serviría el == y generaría un bucle.