Code problem

Asked

Viewed 59 times

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 on 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 -->
   

  • Puts tentativa2-- //Reduz o valor int before the if.

  • 1

    I guess that’s right

  • Yes, you solved my problem Thank you

  • 1

    @bcastro95 Marks Sergio’s response as correct. Using V on its left side.

  • no use just decrease the tentativa2 If you do not remove the phrase "your chances are over" from If, or you will receive the message that you made a mistake, or that your attempts are over, except that he will skip the last one, starting at 3, he would have only 2 and 1 to reply

2 answers

1

You used an Else if to check if the option is right, Voce can check on 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 -->
   

1

If I understand correctly, every time the code goes into aleatorio loses an attempt.

Then the tentativa2-- must be immediately at the entrance of that function, before the if which checks how many attempts remain.

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...

Browser other questions tagged

You are not signed in. Login or sign up in order to post.