1
resposta

[Dúvida] onclick não funciona todas as vezes

Criei um joguinho de jokenpô e atribuí uma função que compara a escolha do usuário com a escolha do computador ao botão "jogar" e ele retorna o resultado da comparação. O problema é que ele não retorna todas as vezes, em vários momentos apertei o botão e nada aconteceu, mas em outros funcionou normalmente.

Alguém pode me dizer o que está errado, ou alguma maneira melhor de fazer isso?

<!DOCTYPE html>
<meta charset= "UTF-8">


<h1> Jokenpô! Jogue contra o computador. </h1>
<li>Regras:</li>
<ul>Existem três movimentos: pedra, papel, tesoura </ul>
<ul> Tesoura ganha de papel </ul>
<ul> Papel ganha de pedra </ul>
<ul> Pedra ganha de tesoura </ul>
Insira no campo de texto em letras minúsculas qual é o seu movimento: 

<input/>
<button> Jogar </button>

<script>
    var input = document.querySelector("input");



var jogadaComputador = function movimentoComputador(){
        let jogadas = [0, 1 ,2];
        let sorteio = Math.floor(Math.random() * 3);
        let movimento;

        if(sorteio == 0){
            movimento = 'pedra';
            }else if(sorteio == 1){
            movimento = 'papel'
                }else if(sorteio == 2){
                    movimento = 'tesoura'
                }
        return movimento;

    }

    function comparaJogadas(){
        if(jogadaComputador() == input.value){
            alert("É um empate");
        }else if(jogadaComputador() == 'pedra' && input.value == 'papel'){
            alert("Movimento do computador: pedra \nO computador jogou pedra e perdeu! Parabéns você ganhou");
        }else if(jogadaComputador() == 'papel' && input.value == "tesoura"){
            alert("Movimento do computador: papel \nO computador jogou papel e perdeu! Parabéns você ganhou");
        }else if(jogadaComputador() == 'tesoura' && input.value == 'pedra'){
            alert("Movimento do computador: tesoura \nO computador jogou tesoura e perdeu! Parabéns você ganhou");
        }else if(input.value == 'pedra' && jogadaComputador() == 'papel'){
            alert("Movimento do computador: papel \nO usuário jogou pedra e perdeu! Que pena, você perdeu");
        }else if(input.value == 'papel' && jogadaComputador() == "tesoura"){
            alert("Movimento do computador: tesoura \nO usuário jogou papel e perdeu! Que pena, você perdeu");
        }else if(input.value == 'tesoura' && jogadaComputador() == 'pedra'){
            alert("Movimento do computador: pedra \nO usuário jogou tesoura e perdeu! Que pena, você perdeu"); 
        }

        input.value = "";
    input.focus();
    }
    var button = document.querySelector("button");
    button.onclick = comparaJogadas;

</script>
1 resposta

Olá boa tarde Sarah, sou estudante também e vou tentar ajudar, pelo que pude ver colocando um else no final de suas condicionais, assim

} else {
          console.log(input.value, jogadaComputador());
        }

teve momentos que realmente não deu alert e imprime no console algo assim, pedra, pedra ou tesoura, tesoura

sendo assim acho que quando a jogada do computador for igual do usuário poderia oferecer um alert tipo deu empate!!, tente novamente