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

Duvida Sobre o for No Meu Código

Bom, pra esclarecer, eu fiz o jogo um pouco diferente. Criei carros que andam em ambas as direções (direita e esquerda), pra dificultar o jogo (este é o link para visualizar como está: https://editor.p5js.org/brassassingyoung/sketches/EBVgP3jMZ) Minha dúvida é que não estou conseguindo implementar a função For para reduzir o número de linhas de código, porque nem todos os carros iniciam no mesmo lugar e nem todos recebem o mesmo incremento. Os carros que vêm da esquerda, recebem um aumento em sua posição X. Ex.:

xCarros[3] += velocidadeCarros[3];

Enquanto que os carros que vêm da direita recebem um decremento na posição X. Ex.:

xCarros[0] -= velocidadeCarros[0];

Tudo o que tento fazer resulta em mais bagunça nas linhas de código (e o propósito era otimizar kk). Alguém poderia me ajudar? Pra evitar este tanto de linhas:

function movimentaCarros() {

  xCarros[0] -= velocidadeCarros[0]; 

  if (xCarros[0] < -60) {

    xCarros[0] = 800;

      }

  xCarros[1] -= velocidadeCarros[1]; 

  if (xCarros[1] < -60) {

    xCarros[1] = 800;

      }

  xCarros[2] -= velocidadeCarros[2]; 

  if (xCarros[2] < -60) {

    xCarros[2] = 800;

      }

  xCarros[3] += velocidadeCarros[3]; 

  if (xCarros[3] > 860) {

    xCarros[3] = -60;

      }

  xCarros[4] += velocidadeCarros[4]; 

  if (xCarros[4] > 860) {

    xCarros[4] = -60;

      }

  xCarros[5] += velocidadeCarros[5]; 

  if (xCarros[5] > 860) {

    xCarros[5] = -60;

      }

}
2 respostas
solução!

Cara tenta ai, reformatei mais ou menos do jeito que entendi pelo seu codigo

function movimentaCarros() {
  let carros = velocidadeCarros;

  for (let i = 0; i < 5; i ++) {
    let carro = velocidadeCarros[i];
    // dependendo de como sua lista de objetos está sendo montada vc poderia controlar quais carros poderia mover para esquerda ou direita. 
    // utilizando um array de objetos onde cada objeto representaria as propriedades de um carro.
    // exemplo [{esquerda: true}, {direita: true}]
    // vc poderia ter funcoes nesse objeto e poderia chama-las aqui dentro do for para tentar eliminar o IF ELSE aqui.... só uma ideia, não sei se ficou fácil // de entender rs
    if (i < 3) {
      carro -= velocidadeCarros[0]; 
    } else {
      carro += velocidadeCarros[0];
    }

    verificaMovimentoMaximoEsquerda(carro)

    verificaMovimentoMaximoDireita(carro)
  }
}

function verificaMovimentoMaximoEsquerda(carro) {
  if (carro < -60) {
    carro = 800;
  }  
}

function verificaMovimentoMaximoDireita(carro) {
  if (carro > 860) {
    carro = -60;
  }  
}

Muito obrigado. Deu certo e consegui entender a lógica! =D