3
respostas

Bug no jogo quando não movimento minha raquete

Estava testanto o jogo para verificar a probabilidade de marcar pontos no oponente e não movi minha raquete. O que observei é que, quando não faço nenhum movimento desde o inicio do jogo, na quarta vez que a bolinha vem para meu lado ela entra por baixo e fica fora de vista, até somar 98 pontos ao oponente e voltar ao jogo! Seria algo que coloquei erroneamente no jogo ou não tem correção, foi apenas um bug que sim, pode mesmo acontecer, não tendo como evitar?

//variáveis bolinha
let xBolinha = 300;
let yBolinha = 200;
let diametro = 15;
let raio = diametro / 2;

// variáveis velocidade bolinha
let velocidadeXBolinha = 5;
let velocidadeYBolinha = 5;

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

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

//Ler pontos
let meusPontos = 0;
let pontosDoOponente = 0;

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

function draw() {
  background(0);
  mostraBolinha();
  movimentaBolinha();
  verificaColisãoBorda();
  mostraRaquete(xRaquete, yRaquete);
  movimentaMinhaRaquete();
  verificaColisaoRaquete();
  movimentaRaqueteOponente();
  mostraRaquete(xRaqueteOponente, yRaqueteOponente);
  verificaColisaoRaqueteOponente();
  incluiPlacar();
  marcaPonto();
}

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

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

function verificaColisãoBorda(){
   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, 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 movimentaRaqueteOponente() {
    velocidadeYOponente = yBolinha - yRaqueteOponente - raqueteComprimento / 2 - 30;
    yRaqueteOponente += velocidadeYOponente
}

function verificaColisaoRaqueteOponente() {
    if (xBolinha + raio > xRaqueteOponente
        && yBolinha - raio < yRaqueteOponente + raqueteAltura
        && yBolinha + raio > yRaqueteOponente) {
        velocidadeXBolinha *= -1;
    }
}

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

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

Olá, Paula! Tudo bem contigo?

Na verdade não é para ter esse comportamento não!

Vou pedir para conferir e testar alguns pontos.

Podemos testar a largura dessa raquete, a distância entre a raquete e a margem e também o tamanho dessa bolinha. ;-)

Acredito que conseguimos resolver esse bug fazendo alterações em algum desses pontos.

Teste e nos dê um retorno, Paula!

Caso queira, poste o link do seu projeto para que possamos testar também!

Um abraço e aguardo seu retorno!

Boa noite Cássio!

Alterando o tamanho da raquete já foi suficiente para não ter mais esse comportamento! Muito obrigada pela atenção! Gostei muito de criar esse jogo, engatinhando nas aulas de programação :)

https://editor.p5js.org/blita_sbia/sketches/P_bKmTXPl

Olá, Paula!!!

Bacana!!

Não tem porque agradecer nada não! Será sempre um prazer ;-)

Eu notei que a raquete do oponente não está rebatendo a bolinha, Paula!

Não sei se foi proposital!!!

Um abraço e conte conosco para qualquer dúvida que tiver!!!