Podrían ayudarme a entender y solucionar un error que tuvo el profesor en el ejercicio en Juego_Secreto_v3, aplicando Arrays, While , For e if pero en una sala con captura de pantalla. En el juego hay que adivinar 4 números, el programa se mejoró para que no duplicará o repitiera números, pero se le pusó una condición que no incluyera ceros en el array, pero lo sigue haciendo. El juego no debería arrojar ceros, pero lo sigue haciendo.
Este es el código:
<meta charset="UTF-8">
<input placeholder="Digite un número aquí"/>
<button>Verficar si acertó el secreto</button>
<script>
function aleatorio() {
return Math.round(Math.random()*10);
}
function sortearNumeros(cantidad) {
let secretos = [];
let contador = 1;
while(contador <= cantidad) {
let numeroAleatorio = aleatorio();
console.log(numeroAleatorio)
let encontrado = false;
if (numeroAleatorio != 0); {
for (let posicion = 0; posicion < secretos.length; posicion++) {
if (numeroAleatorio == secretos[posicion]) {
encontrado = true;
break;
}
}
if (encontrado == false) {
secretos.push(numeroAleatorio);
contador++
}
}
}
return secretos
}
let secretos = sortearNumeros(4);
console.log(secretos)
let input = document.querySelector("input"); //Comunicar o conectar caja de texto html con Java Script
input.focus(); //Ubicar el cursor en la caja de texto al inicio del programa
function verificar() {
var encontrado = false;
for(let posicion = 0; posicion < secretos.length; posicion++) {
if (parseInt(input.value) == secretos[posicion]) { //input.value se utiliza para acceder al texto o valor que se encuentra DENTRO de la cajita
alert("Usted acertó");
encontrado = true;
break; //Los "break" salen de cualquier ciclo while o for. Pero solo de uno, no de todos los anidados que tengan.
}
}
if(encontrado == false) {
alert("Usted falló");
}
input.value = ""; //limpiar el valor de la caja texto después de cada intento
input.focus(); //Ubicar el cursor en la caja de texto después de cada intento
}
let button = document.querySelector("button"); //Comunicar botón html con Java Script
button.onclick = verificar; //llamar la función sin ejecutarla, sólo se ejecuta al dar click sobre el botón
</script>