1
resposta

É possível encurtar mais o meu código?

Olá pessoal!

Eu desenvolvi o joguinho, só que eu quis fazer com que os carros das faixas superiores fossem da direita para a esquerda, e com que os carros das inferiores fossem no sentido contrário, eu tentei de várias formas fazer de um jeito mais curto tudo dentro da mesma lista chamada no sketch e no "for" dentro do carro.js mas não estava conseguindo, aí eu dividi em 2 grupos de carros A e B, que era uma solução que eu já sabia que daria certo, mas eu gostaria muito de saber se é possível encurtar meu código, porque as funções acabam se tornando muito repetitivas. Talvez tenha alguma entrada que eu não conheça para facilitar isso, se alguém puder ajudar, fico agradecida.

Abaixo segue o exemplo de como está o meu carro.js

let xCarrosA = [600,600,600];
let xCarrosB = [-50, -50, -50];
let yCarrosA = [40, 100, 150];
let yCarrosB = [210, 260, 320];
let velocidadeCarrosA = [7, 5, 6.5];
let velocidadeCarrosB = [4.5, 6, 3.5];
let comprimentoCarros = 50;
let alturaCarros = 40;

function mostraCarrosA(){
  for (let i = 0; i < imagemCarrosA.length; i++){
    image(imagemCarrosA[i], xCarrosA[i], yCarrosA[i], comprimentoCarros, alturaCarros);
  }
}

function mostraCarrosB(){
  for (let i = 0; i < imagemCarrosB.length; i++){
    image(imagemCarrosB[i], xCarrosB[i], yCarrosB[i], comprimentoCarros, alturaCarros);
  }
}

function movimentaCarrosA() {
  for (let i = 0; i < imagemCarrosA.length; i++){
    xCarrosA[i] -= velocidadeCarrosA[i];
  }
}

function movimentaCarrosB() {
  for (let i = 0; i < imagemCarrosB.length; i++){
    xCarrosB[i] += velocidadeCarrosB[i];
  }
}

function voltaPosicaoInicialDosCarrosA(){
  for (let i = 0; i < imagemCarrosA.length; i++){
    if (passouTodaATelaA(xCarrosA[i])){
      xCarrosA[i] = 600;
    }
  }
}

function voltaPosicaoInicialDosCarrosB(){
  for (let i = 0; i < imagemCarrosB.length; i++){
    if (passouTodaATelaB(xCarrosB[i])){
      xCarrosB[i] = -50;
    }
  }
}

function passouTodaATelaA(xCarrosA){
  return xCarrosA < - 50 ;
}

function passouTodaATelaB(xCarrosB){
  return xCarrosB > 600 ;
}
1 resposta

Olá, Julie! Tudo bem contigo?

Dê uma olhada nesse projeto, feito pelo Eder Sato, que utilizou a mesma ideia que você está pensando!

Um abraço e bons estudos