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

Ayuda, mi código sigue dando números repetidos al revisar la consola

<meta charset="UTF-8">

<input/>
<button>Verificar si acertó o no el secreto</button>

<script>

    function aleatorio() {

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

    function sortearNumeros(cantidad) {

        var secretos = [];
        var contador = 1;

        while (contador <= cantidad) {
            var numeroAleatorio = aleatorio();
            console.log(numeroAleatorio);
            var encontrado = false;
            for (var posicion = 0; posicion < secretos.lenght; posicion++) {

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

                }

            }

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

            }

        }

        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 < secretos.lenght; posicion++) {

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

            alert("Usted acertó");
            encontrado = true;
            break;

            }

        }

            if (encontrado == false) {

                alert("Usted erró");
            }


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





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

</script>
1 respuesta

Hola Lismery. Creo haber dado con tu problema... La cuestión es que solo se llama una vez a la función sortearNumeros en todo el programa por ende, la consola te arroja los números repetidos. Y a no ser que actualices la página, secretos no va a tener nuevos números en su lista.

¿La solución? Llamar a la función de sortearNumeros cada vez que el botón de verificar se presione y termine de evaluar si acertaste o no el número. Aquí te dejo el código con algunas modificaciones.

<meta charset="UTF-8">
<input/>
<button>Verificar si acertó o no el secreto</button>
<script>

    function aleatorio() {
        return Math.round(Math.random()*10);
    }

    var secretos = sortearNumeros(4); 
    function sortearNumeros(cantidad) {
        var secretos = [];
        var contador = 1;
        while (contador <= cantidad) {
            var numeroAleatorio = aleatorio();
            console.log(numeroAleatorio);
            var encontrado = false;
            for (var posicion = 0; posicion < secretos.lenght; posicion++) {
                if (numeroAleatorio == secretos[posicion]) {
                    encontrado = true;
                    break;
                }
            }
            if (encontrado == false) {
                secretos.push(numeroAleatorio);
                contador++;
            }
        }
        return secretos;
    }

// Definiendo una nueva función
    function reiniciarSecretos() {
      console.log("Randomizando numeros!")
      secretos = sortearNumeros(4)
      console.log(secretos);
    }

    var input = document.querySelector("input");
    input.focus();
    console.log(secretos);

    function verificar() {
        var encontrado = false;
        for (var posicion = 0; posicion < secretos.lenght; posicion++) {
            if (parseInt(input.value) == secretos[posicion]) {
            alert("Usted acertó");
            encontrado = true;
            break;
            }
        }
            if (encontrado == false) {
                alert("Usted erró");
            }
            input.value = "";
            input.focus();
            reiniciarSecretos(); // llamando a la función para actualizar la lista de números
    }
    var button = document.querySelector("button");
    button.onclick = verificar;
</script>

Espero haberte ayudado. Saludos.