<meta charset="UTF-8">
<script>
function pulaLinha() {
document.write("<br>");
}
function mostra(frase) {
document.write(frase);
pulaLinha();
}
var n = 10;
var contador = 1;
var limiteTentativas = 3;
while(contador <= limiteTentativas) {
var produto1 = Math.round(Math.random() * n);
var produto2 = Math.round(Math.random() * n);
var resposta = parseInt(prompt("Qual é o resultado de " + produto1 + " x " + produto2 + " ?"));
var resultado = produto1*produto2;
if(resposta == resultado) {
alert("Parabéns, você acertou!");
contador = limiteTentativas;
} else {
alert("Não está correto. Responda novamente!");
contador++;
}
}
mostra("Continue praticando a TABUADA!");
</script>
Minha intenção neste código foi criar uma maneira para alguém testar conhecimentos de tabuada! Todavia, minha lógica era que se a primeira resposta já fosse correta o laço deveria ser interrompido e a mensagem na função "mostra" aparecesse. Caso a resposta fosse errada, a pessoa teria mais duas tentativas (fazendo um total de 3) e então o laço seria interrompido e a mensagem na função "mostra" apareceria.
O problema é que mesmo quando a primeira resposta já é a correta, ele não interrompe o laço. Fica gerando novos números e esperando resposta ciclicamente. Só o que funcionou foi no caso de respostas erradas. Após 3 respostas erradas consecutivas, o laço é interrompido!
Eu consegui o resultado que idealizei apenas quando inseri um "break" após o "alert("Parabéns, você acertou!"), mas não quis deixar com o break por não ter intendido o motivo da estrutura "contador = limiteTentativas;" não ter funcionado.
Me ajude a entender o que está havendo, por favor!
Muito obrigado!