Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
3
respuestas

Juego de adivinación - Usando botones

Hola! Hice otra versión de este juego en el que hay que elegir un numero del 1 al 10 y que tiene 3 intentos. Pero sucede que al ingresar el número equivocado y apretar el botón me aparece un alert diciendo que está mal, pero al querer continuar con los otros intentos vuelve a aparecer "numero equivocado", y así hasta llegar a 0 intentos. O sea no me deja continuar con los intentos. Alguien puede ayudarme?

<meta charset="UTF-8">

<h1>JUEGO DE ADIVINACIÓN</h1>
Ingrese un número entre 1-10 y haga click en el botón. <br> <br>
<input/>
<button>Jugar</button>

<script>

function saltarLinea() {

document.write("<br>");
document.write("<br>");
document.write("<br>");

}

function imprimir(frase) {

document.write("<big>" + frase + "</big>");
saltarLinea();

}

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


var numeroPensado = Math.round(Math.random()*10);
var intentos = 3;
var contador = 1;


function verificar() {

var numeroLanzado = parseInt(input.value);

while (contador <= 3) {


  if (numeroPensado == numeroLanzado) {

  alert("Usted acertó en el intento N°" + contador + ". El número pensado era " + numeroPensado + ".");
  break;  

  }

  else {


  input.focus();
  intentos = intentos - 1;  
  alert("¡Número incorrecto! Intentos restantes: " + intentos);

  }

contador++;

}

if (numeroPensado == parseInt(input.value)) {

 imprimir("¡Felicidades! Usted acertó en el intento " + contador + ". El número pensado era " + numeroPensado + ".");

}

else {

  imprimir("Usted erró, el número pensado era " + numeroPensado + ".");

}

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

}

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

</script>
3 respuestas

Aquí tienes una solución, te recomiendo organizar tu código e identarlo para una fácil lectura, el while es una estructura de control iterativa que ejecuta una accion hasta que sea falsa, por lo tanto toca agregarle break en ambas partes del if (tanto en la positiva como en la negativa (else)) para que la variable pueda ser seteada nuevamente y agregué otra validacion para que el while fuera mas exigente (como estabas usando dos variables (intentos y contador)) las utilicé en la condicion del while para que solo pudiera entrar cuando intentos > 0 y contador <= 3

<meta charset="UTF-8">

<h1>JUEGO DE ADIVINACIÓN</h1>
Ingrese un número entre 1-10 y haga click en el botón. <br> <br>
<input />
<button>Jugar</button>

<script>
    function saltarLinea() {
        document.write("<br>");
    }

    function imprimir(frase) {
        document.write("<big>" + frase + "</big>");
        saltarLinea();
    }

    var input = document.querySelector("input");
    var button = document.querySelector("button");
    var numeroLanzado = parseInt(input.value);
    var numeroPensado = Math.round(Math.random() * 10);
    var intentos = 3;
    var contador = 1;

    input.focus();
    button.onclick = verificar;

    function verificar() {

        while (contador <= 3 && intentos > 0) {

            if (numeroPensado == numeroLanzado) {
                alert("Usted acertó en el intento N°" + contador + ". El número pensado era " + numeroPensado + ".");
                break;
            } else {
                alert("¡Número incorrecto! Intentos restantes: " + intentos);
                intentos--;
                break;
            }
            contador++;
        }

        if (intentos == 0) {
            imprimir("Limite de intentos excedido");
        }

        input.value = "";
        input.focus();
    }
</script>

Hola. El código está mejor porque se corrige eso que estaba diciendo, ahora me deja utilizar los intentos. Pero sigue estando mal porque el juego es imposible de ganar, aunque haya puesto bien el número. Gracias igual!

Ya lo corregí. El código funciona perfecto, lo comparto para el resto:

<meta charset="UTF-8">

<h1>JUEGO DE ADIVINACIÓN</h1>
Ingrese un número entre 1-10 y haga click en el botón. <br> <br>
<input/>
<button>Jugar</button>

<script>

function saltarLinea() {

document.write("<br>");
document.write("<br>");
document.write("<br>");

}

function imprimir(frase) {

document.write("<big>" + frase + "</big>");
saltarLinea();

}

var input = document.querySelector("input");
var button = document.querySelector("button");
var numeroPensado = Math.round(Math.random() * 10);

var intentos = 3;
var contador = 1;

input.focus();
button.onclick = verificar;

function verificar() {

var numeroLanzado = parseInt(input.value);

while (contador <= 3 && intentos > 0) {

  if (numeroPensado == numeroLanzado) {

  alert("Usted acertó en el intento N°" + contador + ". El número pensado era " + numeroPensado + ".");
  break;  

  }

  else {

  contador++;
  intentos = intentos - 1;
  alert("¡Número incorrecto! Intentos restantes: " + intentos);
  break;

  }

}

if (intentos == 0) {

imprimir("Límite de intentos excedido. El número correcto era " + numeroPensado + ".");

}

if (numeroPensado == numeroLanzado) {

imprimir("¡Felicitaciones! Usted acertó en el intento N°" + contador + " .El número pensado era " + numeroPensado + ".");

}

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

}

</script>