1
resposta

Freeway refatoração do código

//código do carro

let xCarros = [600, 600, 600];
let yCarros = [40, 96, 150];
let velocidadeCarros = [2, 2.5, 3.2];

function mostraCarro(){
  for (let i = 0; i < imagemCarros.length; i = i + 1){
    image(imagemCarros[i], xCarros[i], yCarros[i], 50, 40);
  }
}

function movimentaCarro(){
  for (let i = 0; i < imagemCarros.length; i = i + 1){
    xCarros[i] -= velocidadeCarros[i];
  }
}

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

function passouTodaATela(xCarro){
  return xCarro < - 50;
}

Esse é o código mostrado na solução do professor, porém esse trecho me deixou um pouco confuso:

function passouTodaATela(xCarro){
  return xCarro < - 50;

Não deveria ser xCarros ao invés de xCarro?

1 resposta

Olá, Israel, tudo bem?

Obrigada pelo aguardo de um feedback.

A função passouTodaATela, terá como parâmetro a posição X do carro, percebe-se que essa posição é um valor único, apenas uma unidade. Essa função nos retornará um valor booleano, true ou false, portanto, ela espera receber apenas um número, que será armazenado na variável xCarro.

Já a nossa variável xCarros, ela é uma variável que armazena uma lista, ou seja, um conjunto de valores, com várias posições do X do carro, essa verificação não faria sentido na função passouTodaATela, pois um X poderia passar da posição - 50 e outro não.

Percebe-se que ao chamarmos essa função(passouTodaATela) na função voltaPosicaoInicialDoCarro(), nós passamos a posição X do carro, correspondente na lista xCarros como parâmetro, mas ainda continuamos olhando apenas um valor, e esse valor acessamos pelo índice, portanto, xCarros[i].

Espero ter ajudá-lo

Reforço que estou à disposição para tirar dúvidas.