1
resposta

Dúvida semelhante a de outro colega, referente a função xCarro vs. xCarros

Entendo que xCarro se refere a posição x de um dos carros. Mas não entendi/não encontro onde no código esta variável foi estipulada para ser "puxada" nessa função. Penso que talvez a função function passouTodaATela(xCarro) por ela sozinha já estipula o xCarro, mas não tenho certeza. Também não entendo de onde xCarro tira parâmetros para rodar.

//código do carro

let xCarros = [420, 420, 420];
let yCarros = [45, 100, 155];
let velocidadeCarros = [2, 3, 2.5];


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

//imagemCarros.Length = quantidade de carros que tem na tela

function movimentaCarro(){
  for ( i = 0; i < imagemCarros.length; i = i + 1){

  xCarros[i] -= velocidadeCarros[i];

  }
}

function voltaPosiçãoInicialCarro(){
  for ( i = 0; i < imagemCarros.length; i = i + 1){
    if (passouTodaATela(xCarros[i])){
        xCarros[i] = 500;

    }
  }
}


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

}
1 resposta

Fala ai Maria, tudo bem? Vamos lá:

Repare na função voltaPosiçãoInicialCarro:

function voltaPosiçãoInicialCarro(){
    for ( i = 0; i < imagemCarros.length; i = i + 1){
        if (passouTodaATela(xCarros[i])){
            xCarros[i] = 500;
        }
    }
}

Ela está percorrendo pela lista de xCarros e para cada item verifica se o carro já passou da tela ou não, essa verificação é feita pela função passouTodaATela:

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

Repare que ela recebe a posição do carro e verifica se é menor que -50, assim sabemos se ela saiu da tela ou não.

Mas, de onde vem o parâmetro xCarro?

Ele é passado pela função voltaPosiçãoInicialCarro:

passouTodaATela(xCarros[i])

Veja que dentro do array de xCarros ela pega o item atual à ser iterado e passa para a função, ou seja, o valor de xCarros[i] será passado como parâmetro da função passouTodaATela.

Espero ter ajudado.