2
respostas

meu placar contabiliza de 2 em 2, nas duas raquetes

Olá, preciso de ajuda ! Já tentei todas mudar o código algumas vezes, até mesmo com ajuda de questões no fórum, mas não consigo consertar o erro e o meu código está exatamente como o da aula.

//variaveis da bolinha
let xBolinha =300;
let yBolinha = 200;
let diametro = 15;
let raio = diametro / 2

//velocidade da bolinha
let velocidadexBolinha = 6;
let velocidadeYBolinha= 6;
let raquetecomprimento =10;
let raquetealtura =90;

//variaveis da raquete
let  xRaquete = 5;
let yRaquete = 150;

//variáveis do oponente
let xRaqueteOponente = 585;
let yRaqueteOponente = 150;
let velocidadeYOponente;
let colidiu = false;

//placar do jogo
let meuspontos = 0;
let pontosdooponente = 0;


function setup() {
  createCanvas(600, 400);
}

function draw() {
  background(0);
  mostraBolinha()
  movimentaBolinha()
  verificaColisaoBorda()
  mostraRaquete (xRaquete, yRaquete)
  movimentaMinharaquete()
  verificaColisaoRaquete (xRaquete, yRaquete)
  mostraRaqueteOponente(xRaqueteOponente, yRaqueteOponente)
  //movimentaRaqueteOponente()
  verificacolisaoraquetes(xRaqueteOponente, yRaqueteOponente)
  incluiplacar()
  marcaPonto()

  circle(xBolinha, yBolinha, diametro);
  xBolinha += velocidadexBolinha;
  yBolinha += velocidadeYBolinha;

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

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

}
function mostraBolinha(){
   circle(xBolinha, yBolinha, diametro);
 }
function movimentaBolinha(){
  xBolinha += velocidadexBolinha;
  yBolinha += velocidadeYBolinha;

}
function verificaColisaoBorda(){

}

function mostraRaquete(x,y){
  rect(x,y, raquetecomprimento, raquetealtura);
}
function mostraRaqueteOponente(x,y) {
    rect(xRaqueteOponente, yRaqueteOponente, raquetecomprimento, raquetealtura);
}

function movimentaMinharaquete() {
    if (keyIsDown(UP_ARROW)) {
        yRaquete -= 10;
    }
    if (keyIsDown(DOWN_ARROW)) {
        yRaquete += 10;
    }
}
function verificaColisaoRaquete() {
    if (xBolinha-raio < xRaquete + raquetecomprimento
        && yBolinha - raio < yRaquete + raquetealtura
        && yBolinha + raio > yRaquete) {
        velocidadexBolinha *= -1;
    }
}
function verificacolisaoraquetes(x,y) {
    colidiu = collideRectCircle(x,y , raquetecomprimento, raquetealtura, xBolinha, yBolinha, raio);
    if (colidiu) {
        velocidadexBolinha *=-1;
    }
}
function movimentaRaqueteOponente() {
    velocidadeYOponente = yBolinha - yRaqueteOponente - raquetecomprimento / 2 - 30;
    yRaqueteOponente += velocidadeYOponente
}
function incluiplacar(){
  fill(255)
  text(meuspontos,278,26);
  text(pontosdooponente,321,26);

}
function marcaPonto(){
  if (xBolinha > 590){
    meuspontos +=1;
  }

  if(xBolinha <10)
    pontosdooponente +=1;

}
2 respostas

Olá, Gabriel, tudo bem?

Analisei o seu código e tenho alguns pontos de melhorias.

Note que na função draw(), você inclui um trecho de código referente a função mostraBolinha(). Ainda nessa função draw() você coloca trecho de código referente a função verificaColisãoBorda(). Portanto, você deve apagar esses códigos na funçãodraw() . Note que a sua função verificaColisaoBorda está vazia. Portanto, você deve pegar o código correspondente a essa função (que está na função draw) e colar na função verificaColisaoBorda.

Portanto, a sua função draw() ficará assim:

function draw() {
  background(0);
  mostraBolinha();
  movimentaBolinha();
  verificaColisaoBorda();
  mostraRaquete (xRaquete, yRaquete);
  mostraRaqueteOponente(xRaqueteOponente, yRaqueteOponente);
  movimentaMinharaquete();
  movimentaRaqueteOponente()
  verificaColisaoRaquete (xRaquete, yRaquete);

  verificacolisaoraquetes(xRaqueteOponente, yRaqueteOponente);
  incluiplacar();
  marcaPonto();

  }

E a função verificaColisaoBorda ficará assim:


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

Espero ter ajudado.

Caso surja alguma dúvida, fico à disposição.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Obrigado Monalisa!!!