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

[Proyecto] Challenge Amigo secreto

Hola que tal compañeros estoy realizando el Challenge de Amigo secreto, tengo un pequeño problema quiero reiniciar lo que es el juego cuando mi lista contenga un elemento pero no lo hace alguna sugerencia, o cual es mi error quiero mejorar :D!!

// El principal objetivo de este desafío es fortalecer tus habilidades en lógica de programación. Aquí deberás desarrollar la lógica para resolver el problema.
let amigos =[];
console.log(amigos);

function recorrerLista (){
    console.log(amigos)
    let listaAmigosHTML = document.getElementById('listaAmigos');
    listaAmigosHTML.innerHTML = '';
    for (let i = 0; i < amigos.length; i++) {
        let nuevoElemento = document.createElement('li');
        nuevoElemento.textContent = amigos[i];
        listaAmigosHTML.appendChild(nuevoElemento);
    }
}
function asignarTextoElemento(elemto,texto){
    let elemtohtml = document.querySelector(elemto);
    elemtohtml.innerHTML = texto;
    return;
}
function agregarAmigo(){
    let valorCaja = document.getElementById("amigo").value.trim();
    if (valorCaja === ""){
        alert("El campo no puede estar vacio")
    }else if (amigos.includes(valorCaja)){
        alert("Este nombre ya se encuentra en la lista")
        limpiarCaja();
    }else{
        amigos.push(valorCaja);
        console.log(amigos);
        recorrerLista();
        limpiarCaja();
    }
}
function limpiarCaja(){
    document.querySelector("#amigo").value ="";
}

function sortearAmigo(){
    if (amigos.length < 2) {
        alert("Debe haber al menos 2 amigos para hacer el sorteo.");
        return;  
    }else if (amigos.length === 1) {
        let amigoSeleccionado = amigos[0];
        asignarTextoElemento("#resultado", `El amigo secreto es: ${amigoSeleccionado}`);
        amigos = []; 
        recorrerLista();  
        alert("El último amigo ha sido sorteado, el juego se reiniciará.");
        reiniciarJuego(); 
        return; 
    }else{
    let amigoSeleccionado = amigos[Math.floor(Math.random()*amigos.length)];
    asignarTextoElemento("#resultado",`El amigo secreto es: ${amigoSeleccionado}`)
    amigos = amigos.filter(amigo => amigo !== amigoSeleccionado);
    recorrerLista();
    }
}

function reiniciarJuego(){
    amigos = [];
    recorrerLista();
    asignarTextoElemento("#resultado", "");
    limpiarCaja();
}
1 respuesta

Hola Billy, espero que estés bien

¡Espero que estés bien! Parece que estás trabajando en un proyecto interesante. He revisado tu código y creo que el problema podría estar relacionado con la lógica dentro de la función sortearAmigo. Cuando intentas reiniciar el juego al tener un solo elemento en la lista, ya estás llamando a reiniciarJuego() después de vaciar la lista y recorrerla. Esto puede estar causando que el juego no se reinicie como esperas.

Aquí tienes un par de sugerencias para solucionar el problema:

  1. Revisar el flujo de reinicio: Asegúrate de que la función reiniciarJuego() está haciendo todo lo necesario para restablecer el estado del juego. En tu caso, parece que ya lo hace, pero podrías verificar que todos los elementos de la interfaz se actualizan correctamente.

  2. Eliminar el llamado a reiniciarJuego(): Dado que ya estás vaciando la lista y actualizando la interfaz dentro del bloque else if (amigos.length === 1), podrías probar eliminando la llamada adicional a reiniciarJuego() para ver si eso soluciona el problema.

Aquí tienes una pequeña modificación:

function sortearAmigo(){
    if (amigos.length < 2) {
        alert("Debe haber al menos 2 amigos para hacer el sorteo.");
        return;  
    } else if (amigos.length === 1) {
        let amigoSeleccionado = amigos[0];
        asignarTextoElemento("#resultado", `El amigo secreto es: ${amigoSeleccionado}`);
        amigos = []; 
        recorrerLista();  
        alert("El último amigo ha sido sorteado, el juego se reiniciará.");
        // Aquí podrías eliminar la llamada a reiniciarJuego() porque ya estás reiniciando los elementos necesarios
        return; 
    } else {
        let amigoSeleccionado = amigos[Math.floor(Math.random() * amigos.length)];
        asignarTextoElemento("#resultado", `El amigo secreto es: ${amigoSeleccionado}`);
        amigos = amigos.filter(amigo => amigo !== amigoSeleccionado);
        recorrerLista();
    }
}

Espero que estas sugerencias te ayuden a resolver el problema. ¡Bons estudios!