Pessoal, boa tarde!
Referente ao exercício/jogo de adivinhar, quis fazer uma implementação aparentemente simple a mais mas não está dando certo de jeito nenhum.
O usuário tem 3 tentativas. Nas 2 primeiras, deve aparecer um alert com "tente novamente". Na 3a e última, aparecer "acabaram as suas chances" porque não faz sentido aparecer "tente novamente".
O programa original estava rodando certo (inclusive fiz ele antes de assistir a resolução para treinar, mesmo), mas quando tentei fazer esta alteração, aparentemente está dando dois problemas:
- Mesmo acertando o número, ele fica no loop infinito;
- Sempre aparece a mensagem de "acabaram as suas chances", mesmo nas tentativas 1 e 2.
E uma dúvida sobre o "break": o que ele faz "por baixo dos panos" (como o prof Flavio gosta de dizer)? Ele apenas quebra o laço ou ele atribui um valor ao contador ou a alguma variável de codição do laço?
Para mim, faz todo o sentido a forma como está o código, mas não encontro os erros de jeito nenhum.
Solicito ajuda aos Sherlock Holmes da Programação de plantão.
Obs: outra vez, tentei coloca um "if" ou um "else" dentro de outro "else" e não deu certo, também. Não sei se tem alguma sacada diferente para isso ou minha lógica que está errada mesmo.
Valeu, um abraço.
Segue o código:
<meta charset="utf-8">
<script>
function pL() {
document.write("<br><br>");
}
function mostra(frase) {
document.write(frase);
pL();
}
var numeroPensado = Math.round(Math.random() * 10);
console.log (numeroPensado); //serve para ver no console o número
var maxTentativas = 3;
var tentativa = 1;
var totalTentativas = 1;
while (tentativa <= maxTentativas) {
var chute = parseInt(prompt("Dê seu chute!"));
if (numeroPensado == chute) { //eu acerto, mas não sai do loop nunca!
mostra("Você acertou!");
tentativa = maxTentativas; //o break apenas quebra ou faria tentativa = maxTentativas = 1?
} else { //se errou, checar se é a última tentativa ou não
if (tentativa = 3) {
alert("ACABARAM SUAS CHANCES!"); //se esta foi a última chance, não pode mostrar "tente novamente"
} else { //se for a tentativa 1 ou 2
alert("ERROOOUUU! Tente novamente");
tentativa++; //incremento..ok
totalTentativas++; //variável auxiliar para contar as tentativas (acho que nem precisa)
}
}
}
if(totalTentativas = 4) {
mostra("Você gastou todas as suas tentativas!\nO número correto era " + numeroPensado);
}
</script>