Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Olá, Lucas, tudo bem?
Muito legal que você quis complementar a atividade!! Continue assim, avançando seus conhecimentos!
Mas antes de partir para sua dúvida, uma dica: quando você for escrever código aqui no fórum, você deve deixá-lo dentro de um bloco de código, senão não será possível visualizá-lo. O bloco de código começa com três crases seguidas e termina com mais três crases seguidas, assim:
Por exemplo, um código HTML:
Note que você pode escrever o nome da linguagem junto com as três primeiras crases para realçar o código!
Você também pode clicar no ícone </> na barra de ícones para gerar um bloco de de código.
Agora vamos resolver sua dúvida!
Bem, acredito que o seu programa dá apenas 3 tentativas para o usuário e depois disso ele não pode mais adivinhar, certo?
Analisando seu código da função verifica:
function verifica() {
while (tentativas <= 3) {
if (input.value == numeroPensado) {
alert("você acertou");
document.write("você conseguiu!!");
break;
} else {
alert("você errou!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
input.value = "";
input.facus;
}
tentativas++;
}
}
O problema é que você está executando o while quando a função verifica é chamada assim que o usuário clica no botão. O bloco while executa várias vezes até que a condição seja quebrada, e por isso a mensagem de erro aparece 3 vezes seguidas assim que o usuário erra!
Então, na verdade, não há necessidade de usar o while. E sem o while, precisamos tirar o comando break;, senão haverá um erro no console. Seu código ficaria assim:
function verifica() {
if (input.value == numeroPensado) {
alert("você acertou");
document.write("você conseguiu!!");
// break;
} else {
alert("você errou!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
input.value = "";
input.facus;
}
tentativas++;
}
Mas desse jeito não estamos verificando se o usuário já alcançou o número máximo de tentativas! Onde podemos fazer essa verificação então?
Uma coisa que podemos fazer é "acabar" com o jogo escrevendo diretamente na tela que o usuário perdeu, caso o número de tentativas atinja o máximo. Então, depois da instrução tentativas++, podemos fazer essa verificação com um if:
function verifica() {
if (input.value == numeroPensado) {
alert("você acertou");
document.write("você conseguiu!!");
// break;
} else {
alert("você errou!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
input.value = "";
input.facus;
}
tentativas++;
if (tentativas > 3) {
document.write("Você perdeu :(");
}
}
Isso funciona, mas na verdade existem outras formas de fazer! Você pode programar de outra forma e fazer com que, em vez de "acabar" com o jogo usando document.write, você mostra um alerta dizendo que a pessoa não tem mais tentativas, quando ela clicar no botão. Deixo como exercício!
Espero ter te ajudado! Qualquer dúvida estaremos aqui para te auxiliar. Continue assim e bons estudos! :)