2
respuestas

El juego sigue arrojando ceros

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>
2 respuestas

Hola colega, a mi me pasó lo mismo.

Y se me solucionó dejando el "for" sin los {} Espero también te sirva Acá te dejo el ejemplo

 while(contador <= cantidad){
            var numeroAleatorio = aleatorio();
            console.log(numeroAleatorio);
            var encontrado = false;

            if(numeroAleatorio != 0){


                for(var posicion = 0; posicion < secretos.length; posicion++)

                    if(numeroAleatorio == secretos[posicion]){
                        encontrado = true;
                        break;
                    }

                    if(encontrado == false){
                        secretos.push(numeroAleatorio);
                        contador++;
                    }


            }
        }

Hola! Buenos dias! A mi me pasaba lo mismo y justamente hice lo que dijo Lucas y me funciono te agradezco miles! Me ahorraste un rompedero de cabeza!!!