Black November

ATÉ 50% OFF

TÁ ACABANDO!

0 dias

0 horas

0 min

0 seg

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 ;
}

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
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