Oi, João! Tudo bom contigo?
Existem alguns fatores que estão impedindo que o jogo funcione, vamos olhá-los mais de perto?
1 - Para receber o valor sorteado, a função sorteio()
precisará retornar o seu número aleatório. Para isso, podemos usar o comando return
, desta forma:
function sorteio(n){
return Math.round(Math.random() * n)
}
Quando var numero = sorteio(10);
foi lido, a variável número passará a armazenar o valor retornado por sorteio()
.
2 - Para o laço de repetição funcionar, precisaremos alterar a sua condição, deixando algo assim:
while(tentativa > 0){
// ... restante do código!
}
Agora, enquanto o número de tentativas for superior a 0, o nosso jogo continuará perguntando ao usuário acerca do número. Ao substituir o símbolo de diferente (!=) pelo de maior que (>), evitamos que a variável tentativa
fique com valores negativos;
3 - Caso o usuário acerte o número, o laço de repetição deverá parar, certo? Podemos fazer isso através do comando break
, o qual realiza justamente esse processo. Iremos adicioná-lo ao fim da condição que analisa se a variável chute
é igual a numero
:
if(chute == numero){
alert("Parabéns, você acertou ao tentar pela " + vezesQtentou + "° vez");
break
}
Com isso, o seu jogo volta a funcionar, João! Contudo, ainda podemos deixá-lo mais legal, já que, se olharmos com carinho, iremos perceber que há alguns problemas na contagem das tentativas. As modificações abaixo são opcionais, você pode vê-las e adicioná-las em seu código, mas só se quiser!
1 - Remover o decremento da variável tentativa
e o incremento de vezesQtentou
, deixando-os somente no início do laço de repetição:
while(tentativa > 0){
var chute = parseInt(prompt("chute um número!"))
tentativa = tentativa - 1;
vezesQtentou++;
// ... restante do código!
}
Assim, as duas variáveis serão alteradas nas duas situações: quando o usuário acertar e quando errar.
2 - Adicionar uma condicional que verifica se o número de tentativas é igual a 0. Caso seja, uma mensagem aparece na tela do usuário e o laço de repetição é interrompido:
else if (tentativa == 0){
alert("Que pena, você perdeu!")
break
}
Com todas as modificações que vimos, seu código ficará da seguinte maneira:
<script>
function pularLinha(){
document.write("<br>");
}
function mostra(frase){
document.write(frase);
}
function sorteio(n){
return Math.round(Math.random() * n)
}
alert("estou pensando em um número, você consegue adivinhar qual é?")
var tentativa = 3;
var vezesQtentou = 0;
var numero = sorteio(10);
console.log(numero);
while(tentativa > 0){
var chute = parseInt(prompt("chute um número!"))
tentativa = tentativa - 1;
vezesQtentou++;
if(chute == numero){
alert("Parabéns, você acertou ao tentar pela " + vezesQtentou + "° vez");
break
}
else if (tentativa == 0){
alert("Que pena, você perdeu!")
break
}
else if (chute < numero){
alert("um pouco mais! " + "você tem mais " + tentativa + " chances");
}
else if (chute > numero){
alert("um pouco menos! " + "você tem mais " + tentativa + " chances");
}
}
</script>
João, espero que tenha compreendido minha explicação e gostado das dicas que trouxe! Fico à disposição para ajudá-lo no que for preciso.
Até mais.
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.