Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
2
respuestas

[Duda] Recursividad en el código

Buen día compañeros,

He estado intentando realizar el ejercicio que indican al final del vídeo, implementando un número máximo de intentos permitidos, pero aun no me funciona el código, alguno me podría ayudar revisando mi código e indicarme donde está el error por el cual la condición de numeroMaximoIntentos no esta ejecutándose correctamente, este es mi código:

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

function asignarTextoElemento(elemento, texto) { // Dentro de los parentesis asignamos los parametros que serán las variables que componen dicha funcion para hacer más dinámica la inserción de textos let elementoHTML = document.querySelector(elemento); // Esta caja ya es más compleja, esta línea ya representa un objeto elementoHTML.innerHTML = texto; return; }

function verificarIntento() { let numeroDeUsuario = parseInt(document.getElementById('valorUsuario').value); // Esta función de getElementById es específicamente para buscar Id's en el código html y traer el valor. // console.log(numeroSecreto, typeof(numeroSecreto)); // console.log(numeroDeUsuario, typeof(numeroDeUsuario)); // console.log(numeroSecreto === numeroDeUsuario); console.log(intentos); if (numeroDeUsuario === numeroSecreto){ asignarTextoElemento('p', Haz acertado el número en ${intentos} ${(intentos === 1) ? 'intento' : 'intentos'}); document.getElementById('reiniciar').removeAttribute('disabled'); // Habilita el botón nuevo juego solo cuando el usuario acierta el número } else { // Cuando el usuario no acierta if (numeroDeUsuario > numeroSecreto) { asignarTextoElemento('p', 'El número secreto es menor.'); } else { asignarTextoElemento('p', 'El número secreto es mayor.'); } intentos++; limpiarCaja(); } return; }

function limpiarCaja() { document.querySelector('#valorUsuario').value = ''; // En el querySelector cuando iniciamos con # estamos indicando que vamos a buscar directamente por ID. }

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

console.log(numeroGenerado);
console.log(listaNumerosSorteados);
// Establecemos el número máximo de intentos por partida
if (numeroMaximoIntentos == intentos) {
    asignarTextoElemento('p', `Lo siento, llegaste al número máximo de intentos que es ${numeroMaximoIntentos}`);
} else {
    // Si ya sorteamos todos los números, mostraremos un mensaje en pantalla para cerrar el juego
if (listaNumerosSorteados.length == numeroMaximo) {
    asignarTextoElemento ('p', 'Ya se han mostrado todos los números posibles.')
} else {
    // Si el número generado está incluido en la lista, hacemos una operación de lo contrario hacemos otra
    if (listaNumerosSorteados.includes(numeroGenerado)) {
    return generarNumeroSecreto();
    } else {
    listaNumerosSorteados.push(numeroGenerado);
    return numeroGenerado;
    }
}
}

}

function condicionesIniciales() { asignarTextoElemento('h1', 'Juego del número secreto'); // Al llamar la nueva función debemos mencionar el elemento que queremos cambiar (h1, h2, p, etc) y separando con (,) el texto que va a llevar. asignarTextoElemento('p', Ingresa un número entre 1 y ${numeroMaximo}); numeroSecreto = generarNumeroSecreto(); intentos = 1; numeroMaximo = 3; }

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

condicionesIniciales();`

2 respuestas

si esta es la primera accion que te aparece despues de corre if (numeroMaximoIntentos == intentos) { asignarTextoElemento('p', Lo siento, llegaste al número máximo de intentos que es ${numeroMaximoIntentos});

es orque arriba cuando inicializas esas variables las inicializaste en 0 ambas y estan iguales por ende de una ves no se ejecuta nada 

en numero maximo debes inicializarle un valor maximo = 10 o 20 o 3, el que quieras

a intentos debes inicializarlo en 1, y crear un contador que no es mas que intentos ++  de intentos que se incremente mientars juagas asi cuando sea igual al numero maximo asignado el programa te arroje esta comparacion

if (numeroMaximoIntentos == intentos) {
asignarTextoElemento('p', `Lo siento, llegaste al número máximo de intentos que es ${numeroMaximoIntentos}`);

que es lo que creo esta haciendo por ahora, espero te sirva esta respuesta saludos 
solución!

si esta es la primera accion que te aparece despues de corre if (numeroMaximoIntentos == intentos) { asignarTextoElemento('p', Lo siento, llegaste al número máximo de intentos que es ${numeroMaximoIntentos});

es orque arriba cuando inicializas esas variables las inicializaste en 0 ambas y estan iguales por ende de una ves no se ejecuta nada 

en numero maximo debes inicializarle un valor maximo = 10 o 20 o 3, el que quieras

a intentos debes inicializarlo en 1, y crear un contador que no es mas que intentos ++  de intentos que se incremente mientars juagas asi cuando sea igual al numero maximo asignado el programa te arroje esta comparacion

if (numeroMaximoIntentos == intentos) {
asignarTextoElemento('p', `Lo siento, llegaste al número máximo de intentos que es ${numeroMaximoIntentos}`);

que es lo que creo esta haciendo por ahora, espero te sirva esta respuesta saludos