Code problem

1

My guessing code is working, however, instead of giving only 3 attempts to the user, the program gives 4 attempts. How do I stop the code in the third attempt ??

var chute = document.getElementById("chute")
var tentativa = document.getElementById("tentativa")
tentativa.innerText = 3 //Valor que irá aparecer na tela

function valida() {
  var chute2 = parseInt(chute.value) //Declarar como variável local para não resetar o valor
  var tentativa2 = parseInt(tentativa.innerText)
  if (chute2 >= 0 && chute2 <= 10) {
    aleatorio(chute2, tentativa2)
  } else {
    alert("Favor digitar um numero de 0 a 10")
  }
}

function aleatorio(chute2, tentativa2) {
  var numero = parseInt(1 + Math.random() * 10)

  if (chute2 != numero && tentativa2 != 0) { //colocar o tentativa != 0 para não entrar em "loop infinito"
    alert("Você errou! Tente de novo")
    tentativa2-- //Reduz o valor int
    tentativa.innerText = tentativa2 //O innerText é atribuido ao seu novo valor convertido em int
    document.getElementById("chute").value = "" //Limpa a caixa de diálogo

  } else if (chute2 != numero && tentativa2 == 0) {
    alert("Suas chances acabaram! O número correto é " + numero)
    window.location.reload()
  } else if (chute2 == numero) {
    alert("Parabéns! Você acertou")
    window.location.reload()
  }
}
<h1>Adivinhador</h1>
<p>
  Seu chute: <br>
  <input type="text" id="chute" name="chute">
</p>

<button onclick="valida()" reset="true">Arriscar</button>

<p>Tentativas: <span id="tentativa"></span> </p>
<!-- Para converter valor de span no JS, chamar o innerText -->
   
    
asked by anonymous 25.04.2017 / 20:32

2 answers

1

You used an else if to verify that the option is correct, you can check for all attempts if the attempts are over

var chute = document.getElementById("chute")
var tentativa = document.getElementById("tentativa")
tentativa.innerText = 3 //Valor que irá aparecer na tela

function valida() {
  var chute2 = parseInt(chute.value) //Declarar como variável local para não resetar o valor
  var tentativa2 = parseInt(tentativa.innerText)
  if (chute2 >= 0 && chute2 <= 10) {
    aleatorio(chute2, tentativa2)
  } else {
    alert("Favor digitar um numero de 0 a 10")
  }
}

function aleatorio(chute2, tentativa2) {
  var numero = parseInt(1 + Math.random() * 10)

  if (chute2 != numero && tentativa2 != 0) { //colocar o tentativa != 0 para não entrar em "loop infinito"
    alert("Você errou! Tente de novo")
    tentativa2-- //Reduz o valor int
    tentativa.innerText = tentativa2 //O innerText é atribuido ao seu novo valor convertido em int
    document.getElementById("chute").value = "" //Limpa a caixa de diálogo

  } 
  if (chute2 != numero && tentativa2 == 0) {
    alert("Suas chances acabaram! O número correto é " + numero)
    window.location.reload()
  } else if (chute2 == numero) {
    alert("Parabéns! Você acertou")
    window.location.reload()
  }
}
<h1>Adivinhador</h1>
<p>
  Seu chute: <br>
  <input type="text" id="chute" name="chute">
</p>

<button onclick="valida()" reset="true">Arriscar</button>

<p>Tentativas: <span id="tentativa"></span> </p>
<!-- Para converter valor de span no JS, chamar o innerText -->
   
    
25.04.2017 / 20:40
1

If I understand correctly, every time the code goes into aleatorio it loses a try.

Then the tentativa2-- should be immediately at the entry of this function, before the if that verifies how many attempts are missing.

function aleatorio(chute2, tentativa2) {
    var numero = parseInt(1 + Math.random() * 10);
    tentativa2--; //Reduz o valor int
    if (chute2 != numero && tentativa2 != 0) { //colocar o tentativa != 0 para não entrar em "loop infinito"
        // etc...
    
25.04.2017 / 20:42