1
resposta

Precisei de 6 Funções para mover os 6 carros

Depois que o professor ensinou a por as imagens na tela, tomei a liberdade de tentar fazer o restante sozinho. Com certeza teria como deixar mais prático, mas esse foi o melhor que eu consegui no momento. https://editor.p5js.org/Fontes/sketches/TTv2D06h8

var fundoEstrada;
var vaca;

//sons
var trilha;
var ponto;
var colisao;

//imagens
var carro1;
var carro2;
var carro3;
var carro4;
var carro5;
var carro6;
var marvin;

//carro1
var xCarro1 = 500;
var yCarro1 = 42;

//carro2
var xCarro2 = 500;
var yCarro2 = 97;

//carro3
var xCarro3 = 500;
var yCarro3 = 150;

//carro4
var xCarro4 = 0;
var yCarro4 = 212;

//carro5
var xCarro5 = 0;
var yCarro5 = 263;

//carro6
var xCarro6 = 0;
var yCarro6 = 318;

//eixos vaca
var yVaca = 366;
var xVaca = 150;

//placar
var pontoVaca = 0;
var pontoCarro = 0;

function preload(){

  fundoEstrada = loadImage('imagens/estrada.png');
  vaca = loadImage('imagens/ator-1.png');
  carro1 = loadImage('imagens/carro-1.png');
  carro2 = loadImage('imagens/carro-2.png');
  carro3 = loadImage('imagens/carro-3.png');
  carro4 = loadImage('imagens/carroInvertido.png');
  carro5 = loadImage('imagens/invertido2.png');
  carro6 = loadImage('imagens/invertido3.png');
  marvin = loadImage('imagens/Marvin.png');
  trilha = loadSound('sons/trilha.mp3');
  colisao = loadSound('sons/colidiu.mp3');
  ponto = loadSound('sons/pontos.wav');
}

function setup() {
  createCanvas(500, 400);
  trilha.loop();
}

function draw() {
  background(fundoEstrada);
  moveCarro1();
  moveCarro2();
  moveCarro3();
  moveCarro4();
  moveCarro5();
  moveCarro6();
  image(vaca, xVaca, yVaca, 30, 30);
  image(carro1, xCarro1, 42, 50, 40);
  image(carro2, xCarro2 , 97, 50, 40);
  image(carro3, xCarro3, 150, 50, 40);
  image(carro4, xCarro4, 212, 50, 40);
  image(carro5, xCarro5, 263, 50, 40);
  image(carro6, xCarro6, 318, 50, 40)
  moveVaca();
  verificaColisao(xCarro1, yCarro1);
  verificaColisao(xCarro2, yCarro2);
  verificaColisao(xCarro3, yCarro3);
  verificaColisao(xCarro4, yCarro4);
  verificaColisao(xCarro5, yCarro5);
  verificaColisao(xCarro6, yCarro6);
  DesenhaPlacar();
  marvinEgg();
}


function moveCarro1(){

  if(xCarro1 < 501 && xCarro1 > -49){
    xCarro1-= 5;

  } else if (xCarro1 < - 48){
    xCarro1 = 500;
  }
}


function moveCarro2(){

  if(xCarro2 < 501 && xCarro2 > -49){
    xCarro2-= 7;

  } else if (xCarro2 < - 48){
    xCarro2 = 500;
  }
}

function moveCarro3(){

  if(xCarro3 < 501 && xCarro3 > -49){
    xCarro3-= 3;

  } else if (xCarro3 < - 48){
    xCarro3 = 500;
  }
}

function moveCarro4(){

  if(xCarro4 > -21 && xCarro4 < 500){

    xCarro4 +=4 

  } else if( xCarro4 > 499){
    xCarro4 = -20    
  }
}

function moveCarro5(){

  if(xCarro5 > -21 && xCarro5 < 500){
    xCarro5 +=8

  } else if( xCarro5 > 499){
    xCarro5 = -20 
  }
}

function moveCarro6(){

  if(xCarro6 > -21 && xCarro6 < 500){
    xCarro6 +=2

  } else if( xCarro6 > 499){
    xCarro6 = -20
  }
}

function moveVaca(){

  if(keyIsDown(UP_ARROW)){
    yVaca -= 5

  } else if(keyIsDown(DOWN_ARROW)){ 
    yVaca += 5
  }

  if( yVaca < 5){

    yVaca = 366;
    pontoVaca++;
    ponto.play();
  }
}

function verificaColisao(x, y){

  if(xVaca + 30 > x   && xVaca < x + 50 && yVaca + 30 > y && yVaca < y + 40 ){

    yVaca = 366;
    pontoCarro++;
    colisao.play();
  }
}

function DesenhaPlacar(){

  fill('green');
  stroke(0)
  textSize(20)
  text(pontoVaca, 270, 25)
  fill('red');
  stroke(0);
  textSize(20)
  text(pontoCarro, 370, 25)

}

function marvinEgg(){

  var soma = pontoVaca + pontoCarro

  if(soma == 42){
    image(marvin, 250, 200);
  }
}

Tentei reduzir as 6 funções de mover carro pra no máximo 2(uma para a parte superior e outra para a parte inferior), mas n consegui. Independentemente, to bem feliz com o resultado

1 resposta

Ola Diego, eu consegui mover carros em direcoes opostas com "2" funcoes, uma pra cada grupo de 3 carros. Porem precisei dublicar as outas funcoes relacioadas com esses dois grupos de carros. Se quiser dar uma olhada no meu codigo: https://editor.p5js.org/ssouza.fernandoh/sketches/nFhWI_Edh Espero ter ajudado.