1
resposta

Quase Finalizado coloquei o segundo Play

falta algumas coisa que eu queria organizar mais .... mas por enquanto vai ficar assim

meu código https://editor.p5js.org/wesleydelima2016/sketches/nXIdG2hqv

1 resposta

Olá, Wesley! Tudo certo por aí?

Antes de tudo, peço desculpas pela demora em retornar!

Parabéns pelo desenvolvimento do jogo Freeway no p5.js! Gostei do fato que você adicionou um segundo jogador!

Para tornar a experiência dos jogadores ainda mais divertida, deixo como dica inverter as teclas associadas à movimentação dos atores para que elas possam corresponder com o lado em que cada um dos personagens se encontra.

Já que as teclas “W” (87), “S” (83), “A” (65) e “D” (68) ficam, geralmente, na parte esquerda do teclado, podemos associá-las à movimentação da primeira vaquinha (a qual está no lado esquerdo da tela). Fazendo isso, seu código ficará desta forma:

function movimentarAtor(){
  if(keyIsDown(87)){
    atorY -= 3
  }
  if(keyIsDown(83)){
    if(naoSairDoJogoParaBaixo()){
      atorY += 3
    }
  }
  if(keyIsDown(65)){
    if(atorX > 0){
      atorX -= 3
    }
  }
  if(keyIsDown(68)){
    if(atorX < 470){
      atorX += 3
    }
  }
}

Uma vez que os botões de “seta para cima”, “seta para baixo”, “seta para a direita” e “seta para a esquerda” encontram-se, na maioria das vezes, na porção direita do teclado, fica mais interessante atribuí-las ao deslocamento do segundo ator.

Fazendo as devidas alterações, a função que move a segunda vaquinha ficará assim:

function movimentarAtor2(){
  if(keyIsDown(UP_ARROW)){
    atorY2 -= 3
  }
  if(keyIsDown(DOWN_ARROW)){
    if(atorY2 < 366){
      atorY2 += 3
    }
  }
  if(keyIsDown(LEFT_ARROW)){
    if(atorX2 > 0){
      atorX2 -= 3
    }
  }
  if(keyIsDown(RIGHT_ARROW)){
    if(atorX2 < 470){
      atorX2 += 3
    }
  }
}

Com isso, as teclas mais próximas do lado esquerdo do teclado serão utilizadas para movimentar a vaquinha da esquerda, enquanto as mais próximas do lado direito ficarão encarregadas da segunda vaquinha.

Ao fim, o resultado do seu programa, após as alterações acima, será:

//Código Ator
let atorX = 97;
let atorY = 366;
let atorX2 = 400;
let atorY2 = 366;
let colidi = false;
let colidi2 = false;
let pontos = 0;
let pontos2 = 0;

function mostraAtor(){
  image(ator,atorX,atorY, 30,30)
  image(ator2,atorX2,atorY2,30,30)
}

function movimentarAtor(){
  if(keyIsDown(87)){
    atorY -= 3
  }
  if(keyIsDown(83)){
    if(naoSairDoJogoParaBaixo()){
      atorY += 3
    }
  }
  if(keyIsDown(65)){
    if(atorX > 0){
      atorX -= 3
    }
  }
  if(keyIsDown(68)){
    if(atorX < 470){
      atorX += 3
    }
  }
}

function movimentarAtor2(){
  if(keyIsDown(UP_ARROW)){
    atorY2 -= 3
  }
  if(keyIsDown(DOWN_ARROW)){
    if(atorY2 < 366){
      atorY2 += 3
    }
  }
  if(keyIsDown(LEFT_ARROW)){
    if(atorX2 > 0){
      atorX2 -= 3
    }
  }
  if(keyIsDown(RIGHT_ARROW)){
    if(atorX2 < 470){
      atorX2 += 3
    }
  }
}

function verificaColisao(){
  for (let i = 0; i < carros.length; i++){
    colidi = collideRectCircle(carrosX[i], carrosY[i], comprimentoCarros, alturaCarros, atorX, atorY, 15);
    colidi2 = collideRectCircle(carrosX[i], carrosY[i], comprimentoCarros, alturaCarros, atorX2, atorY2, 15)
    if(colidi){
      somColidiu.play()
      voltarBase()
      if(meuPontosMenorZero()){
        pontos -= 1
      }
    }
    if(colidi2){
      somColidiu.play()
      voltarBase()
      if(pontos2 > 0){
        pontos2 -= 1 
      }
    }
  }
}

function voltarBase(){
  atorY = 366
  atorX = 90
  atorX2 = 400
  atorY2 = 366
}

function placar(){
  fill(255)
  textSize(25)
  text(pontos,100, 27)

  fill(color(255,103,0))
  text(pontos2,400,27)
}

function marcaPonto(){
  if(atorY < 20){
    somPontos.play()
    pontos += 1
    voltarBase()
  }
  if(atorY2 < 20){
    somPontos.play()
    pontos2 += 1
    voltarBase()
  }
}

function meuPontosMenorZero(){
  return pontos > 0
}

function naoSairDoJogoParaBaixo(){
  return atorY < 366
}

Fico à disposição para te ajudar caso surjam dúvidas ao longo dos seus estudos na plataforma!

Grande abraço, Wesley!