Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
2
respuestas

NO ENCUENTRO EL ERROR

Dejo copia de mi codigo, EL ERROR ES QUE AUNQUE ACIERTE SIEMPRE DA COMO QUE NO ACERTÓ. Estoy bloqueado, ayuda.

<meta charset="UTF-8">

<input> </input>

<button>Verificar si acertó adivinando 4</button>

<script>

    function generadorAleatorio (){ 

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

    }   


    function sortearNumeros (cantidad){  
        var secretosNum = [];    
        var contador = 1;    

        while (contador <= cantidad){   

            var numeroAleatorio = generadorAleatorio();
            console.log(numeroAleatorio)
            var encontrado = false;

            if (numeroAleatorio != 0) { 

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

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

                    }

                }

                if (encontrado == false){ 

                    secretosNum.push(numeroAleatorio);  
                    contador++; 

                }                                              

            }

        }

        return secretosNum

    }

    var secreto = sortearNumeros(4);   
    console.log(secreto);             

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

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

    function verificar(){

        var adivinado = false;

        for (var vueltas = 0; vueltas < vueltas.length ; vueltas++) { 

            if (parseInt(input.value) == secreto[vueltas]) {

                alert("Usted acerto la adivinanza!!");
                adivinado = true; 
                break; 
            } 

        }

        if (adivinado == false) {

             alert("No acertó"); 

        }

        input.value = "";

        input.focus();

    }

    button.onclick = verificar;

</script>
2 respuestas

He revisado tu código y parece que el problema se encuentra en la función verificar(). En el bucle for dentro de esta función, estás usando vueltas como el límite del bucle, pero vueltas no está definido en ningún lugar, lo cual podría causar un error y hacer que siempre muestre "No acertó" incluso si el número es adivinado correctamente. Para solucionar esto, puedes usar secreto.length como el límite del bucle, ya que secreto es el arreglo que contiene los números secretos generados.

Aquí está el código corregido:

<meta charset="UTF-8">

<input> </input>

<button>Verificar si acertó adivinando 4</button>

<script>

    function generadorAleatorio (){ 

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

    }   


    function sortearNumeros (cantidad){  
        var secretosNum = [];    
        var contador = 1;    

        while (contador <= cantidad){   

            var numeroAleatorio = generadorAleatorio();
            console.log(numeroAleatorio)
            var encontrado = false;

            if (numeroAleatorio != 0) { 

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

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

                    }

                }

                if (encontrado == false){ 

                    secretosNum.push(numeroAleatorio);  
                    contador++; 

                }                                              

            }

        }

        return secretosNum

    }

    var secreto = sortearNumeros(4);   
    console.log(secreto);             

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

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

    function verificar(){

        var adivinado = false;

        for (var vueltas = 0; vueltas < secreto.length ; vueltas++) { 

            if (parseInt(input.value) == secreto[vueltas]) {

                alert("Usted acertó la adivinanza!!");
                adivinado = true; 
                break; 
            } 

        }

        if (adivinado == false) {

             alert("No acertó"); 

        }

        input.value = "";

        input.focus();

    }

    button.onclick = verificar;

</script>
← Si te sirve esta solución , márcalo con (✓)
solución!

Efectivamente el error era igualar mi contador vueltas consigo mismo jajaj, nunca iva a pasar nada asi!!.

CODIGO CON ERROR:
VUELTAS = VUELTAS

for (var vueltas = 0; vueltas < vueltas.length ; vueltas++) { 

            if (parseInt(input.value) == secreto[vueltas]) {

                alert("Usted acerto la adivinanza!!");
                adivinado = true; 
                break; 
            } 

//--------------------------------------------------------------------------------------------------------------------
CODIGO CORREGIDO:

for (var vuelta = 0; vuelta < secreto.length ; vuelta++) { 

            if (parseInt(input.value) == secreto[vuelta]) {

                alert("Usted acerto la adivinanza!!");
                adivinado = true; 
                break; 
            }