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

Código sem erros mas pontos não são computados

Não consigo identificar no meu código o porquê dos pontos não estarem sendo computados pelo placar. Deixei inclusive o jogo rodando para tentar entender e enquanto isso vi que, após um tempo, o placar estava marcando +10. Não sei se é um atraso na conta ou o que poderia ser.

//variáveis que determinam tamanho e localização da bolinha

let xBolinha = 300; //metade da largura - faz centralizar
let yBolinha = 200; //metade da altura - faz centralizar
let diametro = 25;
let raio = diametro / 2

//velocidade da bolinha
let velocidadeXBolinha = 6; // vai pro lado
let velocidadeYBolinha = 6; // vai pra baixo

//variáveis da minha raquete
let xRaquete = 5;
let yRaquete = 150;
let raqueteComprimento = 10;
let raqueteAltura = 90;

//variáveis da raquete Oponente
let xRaqueteOposta = 585;
let yRaqueteOposta = 150;
let raqueteOpostaComprimento = 10;
let raqueteOpostaAltura = 90;
let velocidadeYOposta;

let colidiu= false;

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

function setup() {
  createCanvas(600, 400); //largura, altura
}

function draw() {
  background(0);
  mostraBolinha(); //chama a função "mostrar bolinha" para dentro da função Draw
  movimentaBolinha(); // chama a função que define o movimento da bolinha
  verificaColisaoBorda(); //chama a função que determina como/a partir de onde a bolinha vai colidir com a borda
  mostraRaquete (xRaquete, yRaquete);
  mostraRaquete (xRaqueteOposta, yRaqueteOposta);
  movimentaMinhaRaquete();
  movimentaRaqueteOposta();
  //movimentaRaqueteOpostaPlayer2();
  //verificaColisaoRaquete();
  //verificaColisaoRaqueteOposta();
  colisaoRaqueteBiblioteca(xRaquete, yRaquete);
  colisaoRaqueteBiblioteca(xRaqueteOposta, yRaqueteOposta);
  incluiPlacar();
  marcaPonto();

}

function mostraBolinha(){
  circle(xBolinha,yBolinha,diametro); //parametros da bolinha: cordX, cordY, diâmetro (2x o raio)
}

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

function verificaColisaoBorda(){
   if (xBolinha + raio > width || //somar ou subtrair o raio faz com que a colisão seja na borda da bolinha e não a partir do centro dela
     xBolinha - raio < 0){
    velocidadeXBolinha *= -1;
    }

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

}

function mostraRaquete (x, y){
  rect (x, y, raqueteComprimento, 
  raqueteAltura); // posição x, y, largura e altura

}

function movimentaMinhaRaquete(){
  if (keyIsDown(UP_ARROW)){
    yRaquete -= 10;
  }
  if (keyIsDown(DOWN_ARROW)){
    yRaquete += 10;
  }

}


function movimentaRaqueteOpostaPlayer2(){
  if (keyIsDown(81)){
    yRaqueteOposta -= 10;
  }
  if (keyIsDown(65)){
    yRaqueteOposta += 10;
  }

}

function movimentaRaqueteOposta(){
  velocidadeYOposta = yBolinha - yRaqueteOposta - raqueteComprimento /2 - 30
  yRaqueteOposta += velocidadeYOposta

}

function verificaColisaoRaquete(){
  if (xBolinha - raio < xRaquete + raqueteComprimento && yBolinha - raio < yRaquete + raqueteAltura && yBolinha + raio > yRaquete)
{
  velocidadeXBolinha *= -1;

  }
}

function verificaColisaoRaqueteOposta(){
  if (xBolinha + raio > xRaqueteOposta && yBolinha + raio < yRaqueteOposta + raqueteOpostaAltura && yBolinha - raio > yRaqueteOposta)
{
  velocidadeXBolinha *= -1;

  }
}


function colisaoRaqueteBiblioteca(x,y){
  colidiu = 
  collideRectCircle(x,y,raqueteComprimento,raqueteAltura, xBolinha,   yBolinha, raio);  // os 4 parametros são referentes ao retângulo - raquete, x, y, , comprimento (weight), altura (height) ou seja
  if (colidiu) {
  velocidadeXBolinha *= -1}
}

function incluiPlacar(){
  fill(255);
  text(meusPontos, 278, 26);
  text(pontosOpostos, 321, 26)
}

function marcaPonto(){
  if (xBolinha > 590){
    meusPontos += 1;
  }
  if (xBolinha < 10){
    pontosOpostos += 1;
  }
}







// Criamos uma função para desenhar a raquete

////function mostraRaquete(){
//rect(xRaquete, yRaquete, raqueteComprimento, raqueteAltura
//}
//Movimentamos a raquete através das setas para cima e para baixo do teclado, através dos código keyIsDown(UP_ARROW) e keyIsDown(DOWN_ARROW) respectivamente

//Implementamos a colisão da bolinha com a minha raquete, verificando a posição x e y de cada um deles

//importamos uma biblioteca do Github que verifica a colisão

3 respostas

Fala ai Maria, tudo bem? Consegue compartilhar o projeto do P5 Web Editor? Ficaria mais fácil para simular.

Tentei rodar seu código mas deu erro em algumas funções, provavelmente porque deve estar usando bibliotecas de terceiro.

Fico no aguardo.

solução!

Oi, Matheus, td bem? Obrigada pela rápida resposta.

Estava usando bibliotecas de terceiros mesmo. No final, copiei o código, abri o p5.js em outra aba, colei o código e ele rodou. Vai entender! De qualquer forma, o importante é que está funcionando. Abraço!

Boa Maria, fico feliz que tenha resolvido o problema.

Sempre que precisar não deixe de criar suas dúvidas.

Abraços e bons estudos.