Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Jogo da adivinhação

alguém pode me dar uma luz onde estou errando na parte das tentativas? (tentando juntar a atividade do jogo com a de login) ele acrescenta 1/3 e n sai disso, tentei de varias formas implementar tentativas nisso mas to falhando miseravelmente kkkk

<meta charset="utf-8">

<h1>Jogo da Adivinhação</h1>
<input/>
<button>Adivinhar</button>

<script>


function sorteiaNumero() {
     return Math.round(Math.random() * 10);
}

var quantia = parseInt(prompt('Escolha a dificuldade, 7= Facil, 4= Normal, 1= Dificil' ))
var segredos = montarSegredo(quantia)

function montarSegredo(quantidade){
 var segredos = [];
 var contador = 0;

    while(contador < quantidade){
     var randomNumb = sorteiaNumero();
     var existe = false;

        if (randomNumb !== 0){
            for (var i = 0; i < segredos.length; i++) {
                if(segredos[i] == randomNumb){
                     existe = true;
                    break;
                }
            }
                if(existe == false){
                    segredos.push(randomNumb);
                    contador++
                }
            }
        }        
 return segredos;
}

var input = document.querySelector('input');
var button = document.querySelector('button');
var acertou = false;


function verifica() {
        for (var i = 0; i < segredos.length; i++) {
            if (segredos[i] == input.value){
                alert('Parabéns, você acertou');
                acertou = true;
                break;                
            }
        }    
    if (acertou == false){    
     alert('VOCÊ ERROU!!Já foram usadas ' + tentativasUsadas + '/3 chances' )
     input.focus();
     input.value ='';
    }
}

var tentativasUsadas = 0
var tentativasMax = 3

if(tentativasUsadas < tentativasMax){
    tentativasUsadas++     
    button.onclick = verifica;    
}
else{
    button.onclick = alert('Tentativas esgotadas, recarregue a página')
}
console.log(segredos);
console.log(tentativasUsadas);
</script>
1 resposta
solução!

Olá Jhonatas, tudo joia?

Peço desculpa pela demora em lhe trazer uma resposta.

O problema de o contador não estar adicionando valores para cada tentativa que você estava fazendo anteriormente é pelo fato de que ele estar adicionando e criando essa variável fora da função, além da forma em que você está chamando a função verifica() após o click do butão.

Aqui a baixo vou deixar a forma que eu encontrei para solucionar esse problema.

<meta charset="utf-8">

<h1>Jogo da Adivinhação</h1>
<input/>
<button>Adivinhar</button>

<script>

function sorteiaNumero() {
     return Math.round(Math.random() * 10);
}

var quantia = parseInt(prompt('Escolha a dificuldade, 7= Facil, 4= Normal, 1= Dificil' ))
var segredos = montarSegredo(quantia)

function montarSegredo(quantidade){
 var segredos = [];
 var contador = 0;

    while(contador < quantidade){
     var randomNumb = sorteiaNumero();
     var existe = false;

        if (randomNumb !== 0){
            for (var i = 0; i < segredos.length; i++) {
                if(segredos[i] == randomNumb){
                     existe = true;
                    break;
                }
            }
                if(existe == false){
                    segredos.push(randomNumb);
                    contador++
                }
            }
        }        
 return segredos;
}

var input = document.querySelector('input');
var button = document.querySelector('button');
var acertou = false;
var tentativasUsadas = 0
var tentativasMax = 3

function verifica() {

        for (var i = 0; i < segredos.length; i++) {
            if (segredos[i] == input.value){
                alert('Parabéns, você acertou');
                acertou = true;
                break;                
            }
        } 

    if(tentativasUsadas <= tentativasMax) {
        tentativasUsadas++         
    }
    else {
        alert('Tentativas esgotadas, recarregue a página')
    }

    if (acertou == false && tentativasUsadas <= 3){    
     alert('VOCÊ ERROU!!Já foram usadas ' + tentativasUsadas + '/3 chances' )
     input.focus();
     input.value ='';
    }
}

button.onclick = verifica;

console.log(segredos);
console.log(tentativasUsadas);
</script>

As alterações pontuais que eu realizei foram necessariamente nessa estrutura de condição que você criou:

if(tentativasUsadas < tentativasMax){
    tentativasUsadas++     
    button.onclick = verifica;    
}
else{
    button.onclick = alert('Tentativas esgotadas, recarregue a página')
}

Onde eu a coloquei dentro da função verifica() e ainda retirei o button.onclick = verifica; deixando-o para ser chamado no nosso escopo global.

Assim você não terá mais problemas com o contador e poderá realizar o seu jogo de adivinhação limitando a quantidade de tentativas.

Espero que eu tenha lhe ajudado, caso ainda tenha dúvidas vou estar a sua disposição. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado! ✓.