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

[Dúvida] Carros na mão oposta

Quero colocar os carros na mão oposta nas três primeiras faixas, para deixar o jogo mais estético, até consegui antes de fazer os laços e as listas. consegui resolver o sentido do carro (colocando a velocidade negativa) mas não sei como colocar o carro para voltar a aparecer, segue meu código

//posição dos carros let xCarros = [600, 600, 600, 0, 0]; let yCarros = [40, 100, 150, 260, 320]; let velocidadeCarros = [5.5, 6, 3, -4.2, -6.2];

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

function movimentoDosCarros(){ for(let i = 0; i < imagemCarros.length; i = i + 1){ xCarros[i] -= velocidadeCarros[i] } } function voltaCarros(){ for(let i = 0; i < imagemCarros.length; i = i + 1){ if (passouTodaTela(xCarros[i])){ xCarros[i] = 600 } } } function passouTodaTela(xCarros){ return xCarros < -50; }

https://editor.p5js.org/AwayRafael/sketches/eG9YHvXbe

3 respostas
solução!

Oi, Rafael

Uma sugestão:


function voltaCarros(){
  for(let i = 0; i < imagemCarros.length; i = i + 1){
    if ( velocidadeCarros[i] > 0 ) {
      if ( xCarros[i] < -50) 
        xCarros[i] = 600;
    }
    else {  
      if ( xCarros[i] > 650) 
        xCarros[i] = -100;
    }
  }
}
  Caso este post tenha lhe ajudado, marque-o como solução . Bons Estudos!  🤓

funcionou muito bem, obrigado!

Mas me explique por favor o por quê de não precisar criar a função passouPorTodaATela com o return.

Oi,

Não usei a função "passouPorTodaATela()". O instrutor só a usa para fim didático

Para verificar a direção do carro eu usei a velocidade:


    if ( velocidadeCarros[i] > 0 ) {
         // se a velocidade for positiva, o carro está indo para a esquerda
         if ( xCarros[i] < -50 ) //  verifica se o carro ultrapassou o lado esquerdo
            xCarros[i] = 600; // envia o carro para direita
    }
    else {  
       // se a velocidade for negativa, o carro está indo para a direita
        if ( xCarros[i] > 650 ) // verifica se o carro ultrapassou o lado direito
            xCarros[i] = -100; // envia o carro para esquerda
    }