3
respostas

Alguém poderia me explicar o porquê dessa forma os carros não retornam para a posição inicial

//carro

let xCarros = [600,600,600];
let yCarros = [45,100,150];
let velocidades = [2,2.5,3];

let wCarro = 45;
let hCarro = 35;


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

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

function loopCarro(){
  for(let i=0; i<imagemCarros.lenght;i++){
    if(xCarros[i] < -50){
    xCarros[i] = 600
    }
  }
}
3 respostas

Oi, Álvaro. Espero que esteja tudo bem por aí!

Acredito que o problema esteja ocorrendo porque o método length esta escrito de forma incorreta. Além disso , de acordo com o código do instrutor, está faltando um método no seu projeto. Esse método é o passouTodaAtela(), ele funciona para dividir melhor as responsabilidades entre as funções e deixar o codigo mais legível. Vou explicar com mais detalhes.

A function passouTodaAtela() é utilizada como condição na função voltaPosicaoInicialDoCarro(), que no seu caso é a function loopCarro(). Vou exemplificar com mais detalhes no código:

O método passouTodaATela() executa uma ação a partir de um valor , que no caso é o parâmetro xCarro. Ele vai retornar uma ação, que é o valor passado < - 50. Olha só como fica:

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

Esse método será utilizado como condição na função função voltaPosicaoInicialDoCarro(). Nesse caso, é atribuído como valor do parâmentro da passouTodaATela a variável xCarros e seu contador . Depois de feita a verificação dentro da condição, se for verdadeira, o xCarros vai para posição 600 (que aqui foi definido como o início da borda da tela).

olha só no código:

function voltaPosicaoInicialDoCarro(){
  for (let i = 0; i < imagemCarros.length; i = i + 1){
    if (passouTodaATela(xCarros[i])){ //bem aqui o método sendo utilizado
      xCarros[i] = 600;
    }
  }
}

Espero que as informações tenham ajudado.

Em caso de dúvidas fico à disposição.

Um abraço e bons estudos!

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

function loopCarro(){ for(let i=0; i<imagemCarros.lenght ** < ------** ;i++){ if(xCarros[i] < -50){ xCarros[i] = 600 } } }

Boa, Doglas!

O método length tambem está escrito de forma incorreta na loopCarro()

Um abraco e bons estudos!