2
respostas

Alterar a imagem

Olá, gostaria de implementar no projeto uma imagem diferente, caso a pessoa acerte a imagem seria de uma pessoa fazendo sinal positivo, caso o chute for diferente do numero secreto a imagem que apareceria, seria de uma pessoa fazendo o sinal negativo. eu sei que teria que acrescentar as imagens na pasta do projeto mas não estou conseguindo fazer a interação dessas imagens, alguem conseguiria me ajudar?

2 respostas

Olá, Henrique.

Tudo bem?

Para isso você pode utilizar a propriedade innerHTML para colocar um elemento HTML na tela através do JavaScript, no caso a tag <img>. Primeiro cria uma tag <div> vazia no seu arquivo HTML com um Id pode ser id="imagem-interacao", é dentro dessa <div> que vai aprecer a tag <img> com a imagem, algo como:

<div id="imagem-interacao" alt="Uma pessoa olhando para a esquerda" class="container__imagem-pessoa">
                
</div>

Agora, no Javasccript você faz todo o resto, pega essa <div> com o getElementById através do Id imagem-interacao criado, faça isso no início do arquivo JavaScript pois não pode ficar dentro de função, para ser acessado de qualquer lugar:

var containerImg = document.getElementById('imagem-interacao');

Agora é só passar essa variável criando a tag através do innerHTML:

containerImg.innerHTML = '<img id="minhaImagem" src="./img/bg.png" alt="Imagem" />';

Passe uma para o if de "Acertou" e a outra para o else.

Código JavaScript completo com as alterações:

let listaDeNumerosSorteados = [];
let numeroLimite = 10;
let numeroSecreto = gerarNumeroAleatorio();
let tentativas = 1;
var containerImg = document.getElementById('imagem-interacao');
function exibirTextoNaTela(tag, texto) {
    let campo = document.querySelector(tag);
    campo.innerHTML = texto;
    responsiveVoice.speak(texto, 'Brazilian Portuguese Female', {rate:1.2});
}

function exibirMensagemInicial() {
    exibirTextoNaTela('h1', 'Jogo do número secreto');
    exibirTextoNaTela('p', 'Escolha um número entre 1 e 10');
}

exibirMensagemInicial();

function verificarChute() {
    let chute = document.querySelector('input').value;
    
    if (chute == numeroSecreto) {
        exibirTextoNaTela('h1', 'Acertou!');
        let palavraTentativa = tentativas > 1 ? 'tentativas' : 'tentativa';
        let mensagemTentativas = `Você descobriu o número secreto com ${tentativas} ${palavraTentativa}!`;
        exibirTextoNaTela('p', mensagemTentativas);
        containerImg.innerHTML = '<img id="minhaImagem" src="./img/bg.png" alt="Imagem" />';
        document.getElementById('reiniciar').removeAttribute('disabled');
    } else {
        containerImg.innerHTML = '<img id="minhaImagem" src="./img/ia.png" alt="Imagem" />';
        if (chute > numeroSecreto) {
            exibirTextoNaTela('p', 'O número secreto é menor');
        } else {
            exibirTextoNaTela('p', 'O número secreto é maior');
        }
        tentativas++;
        limparCampo();
    }
}

function gerarNumeroAleatorio() {
    let numeroEscolhido = parseInt(Math.random() * numeroLimite + 1);
    let quantidadeDeElementosNaLista = listaDeNumerosSorteados.length;

    if (quantidadeDeElementosNaLista == numeroLimite) {
        listaDeNumerosSorteados = [];
    }
    if (listaDeNumerosSorteados.includes(numeroEscolhido)) {
        return gerarNumeroAleatorio();
    } else {
        listaDeNumerosSorteados.push(numeroEscolhido);
        console.log(listaDeNumerosSorteados)
        return numeroEscolhido;
    }
}

function limparCampo() {
    chute = document.querySelector('input');
    chute.value = '';
}

function reiniciarJogo() {
    numeroSecreto = gerarNumeroAleatorio();
    limparCampo();
    tentativas = 1;
    exibirMensagemInicial();
    document.getElementById('reiniciar').setAttribute('disabled', true)
}

Vou deixar o HTML completo com as alterações em outra resposta, pois não coube nessa:

Espero ter ajudado. Qualquer dúvida manda aqui. Valeu.

HTML completo com as alterações:

<!DOCTYPE html>
<html lang="pt-br">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="https://code.responsivevoice.org/responsivevoice.js"></script>
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Chakra+Petch:wght@700&family=Inter:wght@400;700&display=swap"
        rel="stylesheet">
    <link rel="stylesheet" href="style.css">
    <title>JS Game</title>
</head>

<body>

    <div class="container">
        <div class="container__conteudo">
            <div class="container__informacoes">
                <div class="container__texto">
                    <h1>Adivinhe o <span class="container__texto-azul">numero secreto</span></h1>
                    <p class="texto__paragrafo">Escolha um número entre 1 a 10</p>
                </div>
                <input type="number" min="1" max="10" class="container__input">
                <div class="chute container__botoes">
                    <button onclick="verificarChute()" class="container__botao">Chutar</button>
                    <button onclick="reiniciarJogo()" id="reiniciar" class="container__botao" disabled>Novo jogo</button>
                </div>
            </div>
            <div id="imagem-interacao" alt="Uma pessoa olhando para a esquerda" class="container__imagem-pessoa">
                
            </div>
            <!-- <img src="./img/ia.png" alt="Uma pessoa olhando para a esquerda" class="container__imagem-pessoa" /> -->
        </div>
    </div>
    <script src="app.js" defer></script>
</body>

</html>

Como eu comentei a imagem antiga no HTML, a imagem não vai aparecer de início, então tem que jogar para as imagens aparecerem, depois você corrige isso. Joga errando o número e tenta acertar para ver a imagem diferente aparecendo.