Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

[Dúvida] Subtraçao da estatisca

Quando aperto o botão de subtrair codigo, como o javascript sabe que é para diminuir os valores da estatística com os valores do objeto pecas ? Eu realmente nao conseguiur ententer comos os valores objeto pecas subtraem os valores da estaticas

3 respostas
solução!

Olá Iago, tudo bem contigo?

No código do curso, quando o botão de subtração é pressionado, a função manupulaDados é chamada, passando o parâmetro operacao como "-". Dentro dessa função, o valor do elemento peca é obtido, convertido para um número inteiro usando parseInt, e então é subtraído 1. Essa alteração é refletida no elemento HTML.

Em seguida, a função atualizaEstatisticas é chamada, passando o parâmetro evento.target.dataset.peca. Essa função percorre todos os elementos com o atributo data-estatistica e atualiza o seu conteúdo somando o valor correspondente da propriedade no objeto pecas.

No caso do botão de subtração, o valor da propriedade no objeto pecas é negativo, portanto, ao somá-lo com o valor atual do elemento estatisticas, ocorrerá uma subtração. Isso acontece porque estamos adicionando um número negativo, que é equivalente a subtrair o seu valor absoluto.

Em resumo, quando o botão de subtração é pressionado, o valor do elemento peca é reduzido em 1, e em seguida, os valores correspondentes no objeto pecas são subtraídos dos elementos estatisticas, atualizando assim as estatísticas exibidas na página.

Espero que isso esclareça a sua dúvida.

Se tiver mais dúvidas, fique à vontade para perguntar!

Espero ter ajudado, abraços e bons estudos.

Caso este post tenha lhe ajudado, por favor marque ele como solução! ✓

Desculpa Renam, mas ele não subtrai, o código possui um erro, pois ele sempre soma os valores na estatística, para subtrair é necessário alterar o código e incluir a checagem da operação igual foi feito no manipulaDados.

Observe que isso ocorre no vídeo também:

No minuto 8:46 ele os valores são Força: 58, Poder: 70, Energia: -42 e Velocidade: -10 No minuto 8:47 ele adiciona uma blindagem ficando a Força: 99, Poder: 90, Energia -42, Velocidade: -30 Logo em seguida ele retira a blindagem, na teoria deveria voltar para os valores iniciais, mas.... Não é isso que ocorre, ficando Força: 140, Poder: 110, Energia: -42 e Velocidade: -50

Código Original

function atualizaEstatisticas(peca){
    estatisticas.forEach((elemento) => {        
            elemento.textContent = parseInt(elemento.textContent) + pecas[peca][elemento.dataset.estatistica];        
        })
    
}

Sugestão de correção

function atualizaEstatisticas(peca, operacao){
    estatisticas.forEach((elemento) => {
        if (operacao === "-") {
            elemento.textContent = parseInt(elemento.textContent) - pecas[peca][elemento.dataset.estatistica];        
        } else {
            elemento.textContent = parseInt(elemento.textContent) + pecas[peca][elemento.dataset.estatistica];        
        }
    });
}

Olá Marcelo, tudo bem contigo?

Eu entendo que ocorreu esse choque de configurações nos números, peço desculpas pela pequena confusão que fiz anteriormente.

O que acontece nessa situação é que configuramos um valor padrão para os robôs, porém quando uma alteração é feita esse valor é esquecido e o código foi projetado para que a pessoa que está usando ele tenha controle dos valores, portanto como o valor inicial é somente algo padrão ele é configurado para ser sobrescrito pelo usuário.

Então não foi exatamente um erro isso ter acontecido e sim algo proposital. Mas agora pensando nessa solução que você trouxe, ela pode sim ser aplicada no seu projeto, e ela vai depender inteiramente da sua vontade, como no curso só estamos focados em ensinar o assunto usando exemplos nós ficamos muito felizes quando vocês os personalizam e aprimorar os projetos para deixar eles o mais legal que conseguirem.

Portanto, a sua sugestão até poderia ser aplicada no curso, mas como a metodologia nesse curso foi pensada para gerar uma certa autonomia de controle de valores por parte do usuário, então essa sugestão não será aplicada, mas pode vir a ser usada como um feedback para a produção de possíveis novos conteúdos da plataforma.

Em suma era isso, agradeço muito por sua interação e enorme contribuição aqui no fórum.

Fico à disposição em caso de dúvidas.

Abraços e bons estudos.