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)
1
respuesta

Dudas leyendo el codigo paso a paso

En la versión #3 del programa "Juego_secreto_v3.html" llegando a la mitad de código, estoy atorado y no llego a entender...

No entiendo por qué ni para qué, en el ultimo IF en el caso de que el número sea falso le ingresa "numeroAleatorio" a "secretos" y después para qué incrementa el "contador" con contador++

Primero les paso el fragmento del código donde estoy trabado y luego les paso el código completo para que se entienda el contexto.

Soy principiante el programación completamente desde cero, así que valoro muchísimo la ayuda. Gracias!!

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

Código completo:


<meta charset="UTF-8">

<input/>
<button>Verificar si acertó algún valor secreto</button>

<script>
      function aleatorio() {
        return Math.round(Math.random() * 10);
      }
      // Math.round DEVUELVE NUMEROS DECIMALES (POR ESO MULTIPLICO POR "10")
      // return EJECUTA Math.round SIN DEVOLVER EL VALOR Y REGRESA A LA FUNCION

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

        while (contador <= cantidad) {
          var numeroAleatorio = aleatorio();
          console.log(numeroAleatorio); // SI QUISIERA VERLO EN LA CONSOLA
          var encontrado = false;

          if (numeroAleatorio != 0) {
            for (var posicion = 0; posicion < secretos.length; posicion++) {
            // secretos.length VA A secretos Y TOMA TODOS LOS VALORE QUE HAY AHI

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

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

      var secretos = sortearNumeros(4);

      console.log(secretos); // SI QUISIERA VERLO EN LA CONSOLA

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

      function verificar() {
        var encontrado = false;

        for (var posicion = 0; posicion < secretos.length; posicion++) {
          if (parseInt(input.value) == secretos[posicion]) {
            alert("usted acerto");
            encontrado = true;
            break;
          }
        }

        if (encontrado == false) {
          alert("usted erro");
        }

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

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

      boton.onclick = verificar;

    </script>
1 respuesta
solución!

Vale, el pedazo de código que tienes tu duda:

if(encontrado == false){

                secretos.push(numeroAleatorio);
                contador++;

}

Respuesta corta: para que en caso de que no haya número repetido, que agregue el número aleatorio a el arreglo "secretos".

Respuesta larga: en caso de que la variable sea encontrado falso, significa que en esa iteración, la variable encontrado no pasó por el pedazo de código:

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

                if(numeroAleatorio == secretos[posicion]){ 

                    encontrado = true;
                    break;

                }

}

Ya que ese pedazo de código sirve para que en caso de que ya sea repetido un número, no pase al código donde tienes la duda y agregue ese número a el arreglo, ya que en caso de que si encuentre un número que ya se haya repetido en la anterior iteración, la variable "encontrado" se asignará true y se romperá ese bucle (no se romperá el ciclo while) y no pasará por el "if" que tienes duda. Luego el "secretos.push(numeroAleatorio)" lo que hace es añadir el número aleatorio al arreglo y "contador++;" está dentro de ese "if" porque si estuviera afuera, el ciclo aumentaría hasta llegar a 4 y puede que en 4 iteraciones del ciclo "while" no se puedan juntar los 4 número que no se repitan, pues porque el ciclo "while" se irá repitiendo en caso de que encuentre un número en el ciclo "for" que no cumpla la condición de que no se repita. Espero haberme dado a entender, si no entendiste te recomiendo busques en internet como depurar(debug en inglés) en JavaScript, ya que es una herramienta que te ayuda a entender que hace tu código línea por línea.