Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Sugestão para conseguir fazer pontos e uma correção do bug da bolinha "flickar" atrás das raquetes.

Uma sugestão para fazer o oponente errar, é uma alternativa que faz o oponente errar com o passar do tempo, porem ele acaba por dar uma leve "flickada" na tela de vez em quando por conta do codigo, porem isso é bem sutil (isso nao é um erro, é proposital, faz parte do processo de erro do oponente).

//FUNÇÃO PARA ALEATORIZAR 
function aleatoriza(){
  interferenciaAleatoria = Math.floor(Math.random()*60);
}

//TIMER PARA ALEATORIZAR A BARRA.
setInterval(aleatoriza,1000);

//RAQUETE DO INIMIGO
function raqueteBot(){
yBarraInimigo = yBolinha+interferenciaAleatoria;

 if(yBarraInimigo < 50){
    yBarraInimigo = 50;
  }
 if(yBarraInimigo > 350){
    yBarraInimigo = 350;
  }

 rect(xBarraInimigo, yBarraInimigo-50, 10,quadradoAlturaInimigo)
}

e tambem uma sugestão pra arrumar o problema de flickar a bolinha atras da raquete. foi o melhor que eu consegui pensar em fazer pra arrumar.

https://giphy.com/gifs/GcWYPybQN99x0Pbm2N

//DECLARAR A VARIAVEL  resetBug e resetBugInimigo no inicio ambos = 0

function verificaColisao(){
  //COLISÃO PLAYER 1
  if(xBolinha-raio < xBarra + 10 
     && yBolinha - raio < yBarra + (quadradoAltura/2) 
     && yBolinha - raio > yBarra - (quadradoAltura/2)-10 ) {
    velocidadeXBolinha *= -1;
    //SOM
    raquetada.play();

   //CORREÇÃO DE BUGS
    resetBug += 1;
    resetBugInimigo = 0;

    if (resetBug == 10){
      xBolinha = 300;
      pontos = 0;
      pontosInimigo = 0;

      resetBug = 0;

      xTexto = 315
    }
    //FIM DA CORREÇÃO
  }

  //COLISÃO DO BOT

  if(xBolinha - raio > xBarraInimigo - 15
     && yBolinha - raio < yBarraInimigo + (quadradoAlturaInimigo/2) 
     && yBolinha - raio > yBarraInimigo - (quadradoAlturaInimigo/2)-8 ) {
    velocidadeXBolinha *= -1; 
    //SOM
    raquetada.play();
    //CORREÇÃO DE BUGS
    resetBugInimigo += 1;
    resetBug = 0;
    if (resetBugInimigo == 10){
      xBolinha = 300;
      pontos = 0;
      pontosInimigo = 0;

      resetBugInimigo = 0;

      xTexto = 315
  }
}
}

a bolinha vai resetar no centro da tela em direção do inimigo para o player 1 ter tempo de reação, apos isso o placar ira resetar devido ao bug.

https://giphy.com/gifs/ofRPdpD7hJOB7RgkP9

3 respostas

Codigo completo:

//VARIAVEIS DA BOLINHA
let xBolinha = 300;
let yBolinha = 200;
let velocidadeXBolinha = 6;
let velocidadeYBolinha = 7;
let diametro = 15;
let raio = diametro / 2;
//VARIAVEIS DA MINHA RAQUETE
let xBarra = 10;
let yBarra = 200;
let quadradoAltura = 100;
//VARIAVEL DA RAQUETE DO INIMIGO
let xBarraInimigo = 575;
let yBarraInimigo = 200;
let quadradoAlturaInimigo = 100;
let interferenciaAleatoria = 0;
//VARIAVEL DE AJUSTES DE ALGUNS BUGS
let resetBug = 0;
let resetBugInimigo = 0;
let xTexto = 313;
//VARIAVEL DE PONTOS
let pontos = 0;
let pontosInimigo = 0;
//VARIAVEL DE SONS
let raquetada;
let ponto;
let trilhaSonora;

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

function setup() {
  createCanvas(600, 400);
  trilhaSonora.setVolume(0.2);
  trilhaSonora.loop();
}

function draw() {

  background(0);
  placar();
  mostraBolinha();
 movimentaBolinha();
  vericaBorda();

  raquete();
  raqueteBot();

  verificaColisao();

  verificaPlacar();

}


function mostraBolinha(){
  circle(xBolinha,yBolinha,diametro)
}

function movimentaBolinha(){

  xBolinha += velocidadeXBolinha;
  yBolinha += velocidadeYBolinha;
}

function vericaBorda(){

  if(xBolinha > width-raio || xBolinha < 0+raio){
    velocidadeXBolinha *= -1;
  }
  if(yBolinha > height-raio || yBolinha < 0+raio){
    velocidadeYBolinha *= -1;
  }
}

function raquete(){
  //movimento da raquete
  if(keyCode == UP_ARROW && keyIsPressed == true && yBarra > 50){
    yBarra -= 11;
  }
  if(keyCode == DOWN_ARROW && keyIsPressed == true && yBarra < 350){
    yBarra += 11;
  }
  //

  rect(xBarra, yBarra-50, 10,quadradoAltura)
}

function aleatoriza(){
  interferenciaAleatoria = Math.floor(Math.random()*60);
}
setInterval(aleatoriza,1000);

function raqueteBot(){
  //teste BOT
 /* 
  if(keyCode == UP_ARROW && keyIsPressed == true){
    yBarraInimigo -= 10;
  }
  if(keyCode == DOWN_ARROW && keyIsPressed == true){
    yBarraInimigo += 10;
  }
  */

  yBarraInimigo = yBolinha+interferenciaAleatoria;

  if(yBarraInimigo < 50){
    yBarraInimigo = 50;
  }
  if(yBarraInimigo > 350){
    yBarraInimigo = 350;
  }

  rect(xBarraInimigo, yBarraInimigo-50, 10,quadradoAlturaInimigo)
}

function verificaColisao(){
  //COLISÃO PLAYER 1
  if(xBolinha-raio < xBarra + 10 
     && yBolinha - raio < yBarra + (quadradoAltura/2) 
     && yBolinha - raio > yBarra - (quadradoAltura/2)-10 ) {
    velocidadeXBolinha *= -1;
    //SOM
    raquetada.play();
   //CORREÇÃO DE BUGS
    resetBug += 1;
    resetBugInimigo = 0;

    if (resetBug == 10){
      xBolinha = 300;
      pontos = 0;
      pontosInimigo = 0;

      resetBug = 0;

      xTexto = 315
    }
  }

  //COLISÃO DO BOT

  if(xBolinha - raio > xBarraInimigo - 15
     && yBolinha - raio < yBarraInimigo + (quadradoAlturaInimigo/2) 
     && yBolinha - raio > yBarraInimigo - (quadradoAlturaInimigo/2)-8 ) {
    velocidadeXBolinha *= -1; 
    //SOM
    raquetada.play();
    //CORREÇÃO DE BUGS
    resetBugInimigo += 1;
    resetBug = 0;
    if (resetBugInimigo == 10){
      xBolinha = 300;
      pontos = 0;
      pontosInimigo = 0;

      resetBugInimigo = 0;

      xTexto = 315
  }
}
}

function verificaPlacar(){
  ponto.setVolume(0.1)
  if(xBolinha < xBarra){
    pontosInimigo += 1;
    ponto.play();
  }
  if(xBolinha > xBarraInimigo + 15){
    pontos += 1;
    ponto.play();
  }
}

function placar(){
  stroke("black")
  rect(270,12,32,20);
  text(pontos,282,26);
  if(pontosInimigo == 10){
    xTexto = 308;
  }
  rect(300,12,32,20);
  text(pontosInimigo,xTexto,26);
  rect(300-2,0,4,1000);
}
solução!

Link para testar o meu projeto. ( não esta perfeito, pois estou aprendendo ainda :) )

Link: https://preview.p5js.org/SirIllumiGot/present/0Exd4MP0H

Link com o codigo editavel: https://editor.p5js.org/SirIllumiGot/sketches/0Exd4MP0H

Oi oi Matheus!!

Muitíssimo obrigada por compartilhar seu código e solução conosco! Além de você aprender mais e reforçar seu conhecimento, você contribui para o crescimento da comunidade!

Um abraço e bons estudos!