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

função passou toda a tela

Achei estranho o uso do "xCarro" sendo que a variável declarada foi "xCarros". O código não devia ter tido problema?

Outra dúvida é a respeito do "xCarro" dentro dos parênteses. O meu funcionou sem. Gostaria de entender mais a respeito disso se for possível.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas
solução!

Oi André! Tudo certo por aí?

O valor passado dentro dos parênteses da função passouTodaATela() não é o mesmo valor que foi declarado como variável xCarros.

Na função, estamos passando um parâmetro. Isso quer dizer que é uma nova variável que é declarada apenas no escopo da função, e o seu valor será atribuído no momento em que a função for ser chamada.

Nesse caso, a nossa função passouTodaATela tem um retorno booleano - Verdadeiro ou Falso. Quando ela for verdadeira, a condição onde ela está sendo parâmetro será executada, dentro da função voltaPosicaoInicialDoCarro().

function voltaPosicaoInicialDoCarro(){
  for (let i = 0; i < imagemCarros.length; i++){
  if (passouTodaATela(xCarros[i])){
    xCarros[i] = 600;
  }
 }
}

O valor que passamos nesse momento de execução da função é o xCarros[i], que representa cada item da lista xCarros. Como estamos em uma estrutura de repetição for, o código estará sendo executado em loop a cada vez que o retorno de voltaTodaATela for verdadeiro - ou seja, quando cada carro estiver com o y menor que -50.

O objetivo da função é que os carros voltem a aparecer na tela infinitamente.

Caso o código fique da forma como você compartilhou, a repetição não funcionará corretamente.

Espero que tenha ficado mais claro, André. Fico à disposição para conversarmos caso surjam mais dúvidas.

Abração!

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

Entendi! Isso ficou mais claro quando fui tentar fazer a colisão da vaquinha com o carro.