Hola! Hice el codigo del juego del numero secreto paso a paso junto con los videos del curso, y note una mejora que se puede hacer:
Al final, para verificar que el algoritmo trabaje correctamente, Leonardo coloca dos "console.log" en la funcion generarNumeroSecreto, sin embargo, esos console log, al estar al inicio de la funcion, hace que se ejecuten cada vez que la funcion se llama a si misma, dando como resultado un exceso de informacion en la consola, eso llega a hacer confusa la informacion se muestra.
La solucion a eso es cambiar los "console.log" hacia el "else", cuando el numero sorteado no esta en el array, para que solo se muestren en la consola el array y el numero secreto que se genera, cuando un nuevo numero es agregado y no cuando el numero ya esta en la lista.
En el video no se nota, porque todo pasa muy rapido y no se alcanza a ver en la pantalla.
A continuacion muestro el codigo como se sugiere en la clase y la alternativa del codigo corregido.
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;
}
}
}
OPCION CORREGIDA:
function generarNumeroSecreto()
{
let numeroGenerado = Math.floor(Math.random() * numeroMaximo) + 1; //floor para retornar solo numeros enteros;
// si ya sorteamos todos los numeros posibles
if(listaNumerosSorteados.length == numeroMaximo)
{
asignarTextoElemento('p', 'Ya se sortearon todos los numeros posibles');
}
else
{
// si el numero generado esta en la lista:
if(listaNumerosSorteados.includes(numeroGenerado) )
{
return generarNumeroSecreto(); // Recursividad, la funcion se llama a si misma
}
else // Si el numero generado, no esta en la lista:
{
listaNumerosSorteados.push(numeroGenerado);
console.log(numeroGenerado);
console.log(listaNumerosSorteados);
return numeroGenerado;
}
}
}