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

Hola, intente con for en vez de while, pero una vez encuentra un valor 0, no lanza uno nuevo, espero me puedan ayudar

<meta charset="utf-8">  

<input>
<button>Verificar si acerto con el secreto</button>

<script>

    function aleatorio () {

        return Math.round(Math.random()*10)

    }

    function sortearNumeros (cantidad) {
        var secretos = []

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

            if (numeroAleatorio != 0){
                for (var posicion = 0; posicion < secretos.length; posicion++) {
                    if (numeroAleatorio == secretos[posicion]){
                        break;
                    }
                }
                if (encontrado == false) {
                    secretos.push(numeroAleatorio);
                }
            }
        }
        return secretos
    }

    var secretos = sortearNumeros(4);

    console.log (secretos);

    var input = document.querySelector("input");
    input.focus();

    function verificar() {

        var encontrado = false;

        for(var posicion = 0; posicion < 4; posicion++) {

            if (parseInt(input.value) == secretos[posicion]) {

                alert("Usted acerto");
                encontrado = true;
                break;

            }

            if (encontrado == false) {

                alert("Usted se equivoco");

            }

            input.value = "";
            input.focus();

        }    
    }

    var button = document.querySelector("button")
    button.onclick = verificar;

</script>
1 respuesta

Hola, aparte de que tu problema con el cero, tu código también guarda repetidos. Hay modifique tu código para solucionar los dos problemas y te comente al lado de cada modificación el porque la hice:

<meta charset="utf-8">  

<input>
<button>Verificar si acerto con el secreto</button>

<script>

    function aleatorio () {

        return Math.round(Math.random()*10)

    }

    function sortearNumeros (cantidad) {
        var secretos = []

        for (var contador = 1; contador <= cantidad;) { 
            /*tuve que quitar del for  el contador++  y ponerlo mas abajo 
            porque sino siempre hacia 4 repeticiones. 
            Aunque no da error, no es recomendable hacer esto por eso si no sabemos
            cuantas repeticiones va a hacer nuestro bucle debemos usar while */
            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 /* te faltaba cambiar el valor de econtrado a true 
                        para que en el if que sigue no guarde el valor si ya lo encontro.*/  
                        break;
                    }
                }
                if (encontrado == false) {
                    secretos.push(numeroAleatorio);
                    contador++ /*Aqui puse el contador++ para que aumente solo si guardo 
                    un numero valido , entonces guardara 4 valores validos y terminara el bucle for.*/
                }

            }
        }
        return secretos
    }

    var secretos = sortearNumeros(4);

    console.log (secretos);

    var input = document.querySelector("input");
    input.focus();

    function verificar() {

        var encontrado = false;

        for(var posicion = 0; posicion < 4; posicion++) {

            if (parseInt(input.value) == secretos[posicion]) {

                alert("Usted acerto");
                encontrado = true;
                break;

            }

            if (encontrado == false) {

                alert("Usted se equivoco");

            }

            input.value = "";
            input.focus();

        }    
    }

    var button = document.querySelector("button")
    button.onclick = verificar;

</script>

Espero haberte ayudado.