1
resposta

[Dúvida] Não consigo fazer o oponente errar

Ja testei as soluções que encontrei no forum e nenhuma surtiu efeito,a bolinha continua batendo exatamente no centro da raquete do oponente.

//variáveis da bolinha
let xBolinha=350;
let yBolinha=230;
let diametroBolinha=30;
let raio=diametroBolinha/2;

//velocidade da bolinha
let velocidadeXBolinha=7;
let velocidadeYBolinha=7;

//placar do jogo
let meusPontos=0;
let pontosDoOponente=0;

//variáveis da raquete
let xRaquete=5;
let yRaquete=160;
let comprimentoRaquete=15;
let alturaRaquete=130;

//variáveis da raquete do oponente
let xRaqueteOponente=680;
let yRaqueteOponente=160;
let velocidadeYOponente;

//colisãoGitHub
let colidiu=false;

//sons do jogo
let raquetada
let trilha
let pontos

//chance de errar
let chanceDeErrar = 0

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

function setup() {
  createCanvas(700, 460);
 trilha.loop()
}



function draw() {
  background(0);
  mostraBolinha();
  movimentaBolinha();
  verificarBordas();
  mostraRaquete(xRaquete,yRaquete);
  movimentaRaquete();
  //verificaColisaoRaquete();
  verificarColisaoRaquetes(xRaquete,yRaquete);
  mostraRaquete(xRaqueteOponente,yRaqueteOponente);
  movimentaRaqueteOponente();
  verificarColisaoRaquetes(xRaqueteOponente,yRaqueteOponente);
  mostrarPontos();
  marcarPontos();

}
function mostraBolinha(){circle(xBolinha,yBolinha,diametroBolinha);}

function movimentaBolinha(){
  xBolinha+=velocidadeXBolinha;
  yBolinha+=velocidadeYBolinha;
}

function verificarBordas(){

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

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

function mostraRaquete(x,y){ rect(x,y,comprimentoRaquete,alturaRaquete);}

function movimentaRaquete()
{if(keyIsDown(UP_ARROW)){yRaquete -=10};

 if(keyIsDown(DOWN_ARROW)){yRaquete +=10};}

function verificaColisaoRaquete(){
  if(xBolinha-raio<xRaquete+comprimentoRaquete&&
    yBolinha-raio<yRaquete+alturaRaquete&&yBolinha+raio>yRaquete)
     {velocidadeXBolinha*=-1;
     raquetada.play()}
};

function verificarColisaoRaquetes(x,y){
 colidiu= collideRectCircle(x, y, comprimentoRaquete, alturaRaquete, xBolinha, yBolinha, diametroBolinha)
  if (colidiu){velocidadeXBolinha*=-1;
              raquetada.play()};
}

 function movimentaRaqueteOponente()
 {velocidadeYOponente=yBolinha-yRaqueteOponente-alturaRaquete/2
 yRaqueteOponente+=velocidadeYOponente;
  calculaChanceDeErrar;}

  //function movimentaRaqueteOponente()
  //{if(keyIsDown(87)){yRaqueteOponente -=10};
  //if(keyIsDown(83)){yRaqueteOponente +=10};}

function calculaChanceDeErrar() {
  if (pontosDoOponente >= meusPontos) {
    chanceDeErrar += 1
    if (chanceDeErrar >= 39){
    chanceDeErrar = 40
    }
  } else {
    chanceDeErrar -= 1
    if (chanceDeErrar <= 35){
    chanceDeErrar = 35
    }
  }
}

function mostrarPontos(){
  strokeWeight(1.5)
  stroke(255)
  textAlign(CENTER)
  textSize(30);
  fill(color(255,215,0))
   rect(230,15,40,30)
   fill(255);
  text(meusPontos,250,40);
  fill(color(255,215,0))
   rect(450,15,40,30)
   fill(255);
  text(pontosDoOponente,470,40);}


function marcarPontos(){
  if(xBolinha+raio>699){
    meusPontos+= +1;
  ponto.play()};
  if(xBolinha-raio<1){
    pontosDoOponente+=+1;
    ponto.play()
  };

}







1 resposta

Olá Felipe!!

Onde diz : ... alturaRaquete/2 coloque uma subtração que comece por 30 , e verifique se acontece o erro, pode ser que ao invés de subtrair, tenha que somar, por causa das confusões que fazem as medidas de comprimento e altura!! E disseste que testou tudo, agora acho que terá que somar nmesmo!! Bons estudos!!!

function movimentaRaqueteOponente( ) {
  velocidadeYOponente=yBolinha-yRaqueteOponente-alturaRaquete/2 -30 
   yRaqueteOponente+=velocidadeYOponente;
    calculaChanceDeErrar;
  }