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

[Bug] El codigo deja de ejecutarse

estoy realizando el código consecuente con las clases pero al momento de agregar la lista con las funciones el código deja de funcionar en html si alguien pudiera orientarme:

let numeroSecreto = secretNumber(); let intentos = 0; let listaNumerosSorteados = []; let numeroMaximo = 10;

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

function inputUser() { let userNumber = parseInt(document.getElementById('valorUsuario').value);

if (numeroSecreto === userNumber) {
    console.log(intentos);
    asignarTextoElemento("p", `Acertaste el número en  ${intentos} ${(intentos === 1) ? 'vez' : 'veces'}`);
    document.getElementById("reiniciar").removeAttribute("disabled");
} else {
    //el usuario no acertó
    if (numeroSecreto > userNumber) {
        asignarTextoElemento("p", "El número es mayor");
    } else {
        asignarTextoElemento("p", "El número es menor");
    }
    intentos++;
    clearScreen();
    
} 
return;

}

function clearScreen() { let cleanner = document.querySelector('#valorUsuario'); cleanner.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 restartGame() { //limpiar caja clearScreen(); //indicar mensaje de intervalos //generar el numero aleatorio //Inicializar el numero de intentos getStarted(); //Deshabilitar el boton del juego document.getElementById("reiniciar").setAttribute("disabled", "true");

}

function getStarted(){ asignarTextoElemento('h1', "Juego del número secreto"); asignarTextoElemento('p', 'Indica un número del 1 al 10'); numeroSecreto = generarNumeroSecreto(); intentos = 1; }

getStarted();

1 respuesta

Hola Luis,

Parece que estás teniendo problemas con tu código en JavaScript al intentar integrar una lista de números sorteados. Vamos a revisar algunos aspectos que podrían estar causando que tu código deje de funcionar:

  1. Función secretNumber no definida: Asegúrate de que la función secretNumber() esté definida en tu código. Si no está definida, el código fallará al intentar asignar un valor a numeroSecreto.

  2. Uso de querySelector y getElementById: Verifica que los elementos que estás seleccionando con querySelector y getElementById realmente existan en tu documento HTML. Por ejemplo, asegúrate de que haya un elemento con id="valorUsuario" y que existan elementos <p> donde quieras insertar texto.

  3. Recursividad en generarNumeroSecreto: La función generarNumeroSecreto utiliza recursividad para volver a llamarse si el número generado ya ha sido sorteado. Asegúrate de que esto no esté causando un bucle infinito si numeroMaximo es muy bajo o si la lógica no está manejando correctamente el llenado de listaNumerosSorteados.

  4. Errores en la consola: Revisa la consola del navegador para ver si hay errores que puedan darte pistas sobre qué parte del código está fallando.

  5. Inicialización de variables: Asegúrate de que todas las variables estén correctamente inicializadas antes de usarlas. Por ejemplo, listaNumerosSorteados debe ser un array vacío al inicio del juego.

Aquí tienes un ejemplo de cómo podrías definir la función secretNumber si no está definida:

function secretNumber() {
    return Math.floor(Math.random() * numeroMaximo) + 1;
}

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

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios