1
resposta

Meu PONGH

Finalizando essa primeira parte do curso, está ai meu PONG no javascript. Não darei como finalizado, pois pretendo incrementa-lo conforme for aprendendo mais.aparentemente o game está bem funcional.

usei também algumas dicas aqui do forum para melhorar a questão do bug da bolinha.

https://editor.p5js.org/gutohd25/full/SIS1HniUh

CÓDIGO:

//parametros bolinha
let xBolinha = 400;
let yBolinha = 200;
let diametro = 20;
let raio = diametro/2;

// velocidade bolinha 
let vlxb = 8
let vlyb = 7



// Parametros Raquete 
let xRe = 5
let yRe = 155 
let cRq = 15
let alturaRq = 90

// Parametros Oponente
let xRd = 780
let yRd = 155 
let chanceDerrar = 0
let velocidadeYOp; 

//Placar
let jogador1 = 0 
let jogador2 = 0 

//Sound
let raquetada;
let ponto;
let trilha; 


//librarie
let collide = false 

function preload(){
  trilha = loadSound("trilha2.mp3");
  raquetada = loadSound("raquetada.mp3");
  ponto = loadSound("ponto.mp3");
}

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

function draw() {
  background(0)
  showcircle();
  movcircle();
  cborda();
  raquetes(xRe,yRe);
  raquetes(xRd, yRd);
  movRaqEsq();
  //cRaq();
  collide2d(xRe,yRe);
  collide2d(xRd,yRd);
  oponente();
  showplacar();
  pontuacao();
  desbugaBolinha ();
}

 function showcircle(){
   fill(color(102,255,178));
   circle (xBolinha,yBolinha,diametro);
   fill(255)
 } 

 function movcircle(){
  xBolinha = xBolinha + vlxb;
  yBolinha = yBolinha + vlyb;
}
 function cborda(){
   if (xBolinha + raio > width| xBolinha - raio <0)
       vlxb*=-1;

  if (yBolinha + raio > height || yBolinha - raio <0)
      vlyb *=-1;


 }

function raquetes(x,y) { 
  rect(x,y ,cRq ,alturaRq);  
} 

function movRaqEsq(){
if (keyIsDown(UP_ARROW)) {yRe -=8 ;}
if (keyIsDown(DOWN_ARROW)) {yRe +=8;}
}


 function cRaq(){
if (xBolinha - raio < xRe + cRe
& yBolinha - raio < yRe + alturaRq
& yBolinha + raio > yRe ) {
vlxb *=-1 
}}

function collide2d(x, y) {
  // calculo variavel 
   collide =  collideRectCircle(x, y, cRq, alturaRq , xBolinha, yBolinha, diametro);
  // operacao 
   if (collide){
     vlxb*=-1
     raquetada.play();

   }


}
function oponente(){
  velocidadeYOp = yBolinha - yRd - alturaRq /2;
  yRd += velocidadeYOp + chanceDerrar;
  calculochanceDerrar();

 }

function showplacar(){
  textAlign(CENTER);
  textSize(25);
  fill(color(192, 192 ,192));
  rect(185, 4 ,30,26);
  rect(585, 4 ,30,26);
  fill(color(102,255,178));
  text(jogador1, 200 , 26);
  fill(color(102,255,178));
  text(jogador2, 600 , 26);
  fill(255)
  }
function pontuacao(){
  if (xBolinha > 785 ){
    jogador1 +=1;
    ponto.play();

    }
  if (xBolinha < 12 ){
    jogador2 +=1;
    ponto.play()
    ;
  }
}

function calculochanceDerrar(){
  if (jogador2 >= jogador1){
    chanceDerrar +=1}
  else {chanceDerrar -=1}

  if (chanceDerrar>=65){chanceDerrar = 50}
  if (chanceDerrar<=30){chanceDerrar = 40 }
}

function desbugaBolinha(){
  if (xBolinha - raio < 0 ){xBolinha = 40} 
  if (xBolinha + raio > 800 ){xBolinha = 760}
  }
1 resposta

Oi, Gustavo! Tudo bem?

Seu projeto está ficando demais! Parabéns!

Continue estudando, tenho certeza que vai muito longe.

Qualquer dúvida, estamos à disposição.

Ótima semana e bons estudos!