2
respuestas

Validando duplicados del juego número secreto .

Buenas, la verdad se me empezo a hacer cuesta arriba. Comparto mi codigo , que no difiere mucho de lo del profesor, lo fui siguiendo y tomando notas.comparto el codigo:



<meta charset="UTF-8">

<h1>Programa: Juego Secreto</h1>

<input/> <!--vamos a pedir un dato-->

<button>Verificar si acerto con el número secreto</button>


<script>

function aleatorio () {

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

function sortearNumeros(cantidad) {

    var secretos = []; // creo un array vacio donde luego se cargaran los numeros aleatorios.
    var contador = 1;  // creo la variable contador para poder iniciar en 1 en el while.

    while (contador <= cantidad) {

        var numeroAleatorio = aleatorio();
        console.log(numeroAleatorio);  // utilizo esto para ver que numeros aleatorios estamos generando, asi vamos a entender lo que nuestro programa esta haciendo.
        var encontrado = false; 

        for (var posicion = 0 ; posicion < secretos.length ; posicion++) {   // este for lo uso para ver si el numero aleatorio se repite, y si se repite no se agregue al array.

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

        if (encontrado == false) {
            secretos.push(numeroAleatorio);  // push le pasa los valores generados en cada vuelta a secretos.
            contador++;  // aumento en 1 el contador, que va a frenar cuando sea menor o igual a CANTIDAD que esta puesto en sortearNumeros ()

        }

    }

    return secretos;

}

var secretos = sortearNumeros(4);  //cantidad de número que va a sortear.

console.log(secretos);  // se abre herramienta de desarrollador para verificar sorteo.

var input = document.querySelector("input"); //función querySelector es un puente entre HTML y JS; esto nos trae el input de html a JS
input.focus();   // estando aca al principio va a hacer que el cursos apenas abra la pagina ya aparezca posicionado para escribir el numero en el lugar correspondiente. 


function verificar () {

    var encontrado = false; 

    //for (var posicion = 0 ; posicion < 4 ; posicion++) { // este va hasta posicion 4, pero si quiero agregar mas elementos me conviene usar lenght, sino siempre estaria limitado a 4 elementos, salvo que el programador se siente a cambiarlo.

    for (var posicion = 0 ; posicion < secretos.length ; posicion++) {  // por eso mejor aca le digo revisa en secretos.lenght osea del principio al fin del array, osea todos los elementos que contiene. 

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

            alert("¡Perfecto acertaste!");
            encontrado = true;
            break;

        }

    }

    if (encontrado == false) {

        alert ("Erraste!");
    }

    input.value = "";  // para que luego de verificar quede nuevamente vacio, osea q me borre el numero que puse.
    input.focus();     // para que el cursor se focalize, osea que automaticamente nos deje denuevo en esa casilla.
}

var button = document.querySelector("button");  // capturar el objeto button definido en html.
button.onclick = verificar;  // que cuando uno haga clic en el boton nos traiga la funcion verificar. Lo ponemos sin parentesis para que se ejecute al mo mento de hacer clic solamente.

</script>

Gracias!

2 respuestas

Hola Christian , espero que estés muy bien.

Felicitaciones por tu aprendizaje. Estamos priorizando el foro para postear dudas, así optimizamos el tiempo de respuesta para ustedes.

Para no dejar de compartir los códigos, actividades y ejercicios que realizas, creamos un canal en Discord (#compartatucodigo) donde puedes compartirlos, dar y sugerir mejoras con el resto de tus compañeros.

Un saludo.

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios

Trate de hacerlo pero utilizando un for dentro de otro for pero me arrojaba los 4 números iguales.