2
respostas

Erro na Function Draw - verificaColisaoRaquete

Meu jogo funciona normal como nas orientações da aula com a função (verificaColisaoRaquete) comentada. Quando tiro o comentário da função (verificaColisãoRaquete) a bolinha fica "tremendo" e apenas subindo e descendo em linha reta. O que pode estar errado no meu código?

Pelo P5js eu consigo compartilhar meu código como no Scratch, para que possam verificar o funcionamento do meu código?

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas

Você tá com a verificaColisaoRaquete duplicada, talvez seja isso ou talvez tenha mudado outros valores... Copia e cola todo seu código aqui, fica mais fácil pra gente dar uma olhada

Segue meu código:

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

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

//variaveis da raquete let xRaquete = 5; let yRaquete = 150; let raqueteComprimento = 10; let raqueteAltura = 90;

//variaveis da raquete oponente let xRaqueteOponente = 585; let yRaqueteOponente = 150; let velocidadeYOponente; let chanceDeErrar = 0;

let colidiu = false

//variaveis do placar do jogo let meusPontos = 0; let pontosDoOponete = 0;

//sons do jogo let ponto; let raquetada; let trilha;

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

function setup() { createCanvas(600, 400); trilha.loop(); }

function draw() { background(0); mostraBolinha(); movimentaBolinha(); verificaColisaoBorda(); mostraRaquete(xRaquete, yRaquete); movimentaMinhaRaquete(); //verificaColisaoRaquete(); verificaColisaoRaquete(xRaquete, yRaquete); mostraRaquete(xRaqueteOponente, yRaqueteOponente); movimentaRaqueteOponente(); verificaColisaoRaquete(xRaqueteOponente, yRaqueteOponente); incluiPlacar(); marcaPonto(); calculaChanceDeErrar();

}

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

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

function verificaColisaoBorda(){ 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 mostraRaqueteOponente(){ 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; raquetada.play(); } }

function verificaColisaoRaquete(x,y){ colidiu = collideRectCircle(x, y, raqueteComprimento, raqueteAltura, xBolinha, yBolinha, raio); if (colidiu){ velocidadeXBolinha *= -1; raquetada.play(); } }

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

function incluiPlacar(){ stroke(255); textAlign(CENTER); textSize(16); fill(color(255, 140, 0)); rect(150, 10,40, 20); fill(255); text(meusPontos, 170, 26); fill(color(255, 140, 0)); rect(450, 10, 40, 20); fill(255); text(pontosDoOponete, 470, 26); }

function marcaPonto(){ if (xBolinha > 590){ meusPontos += 1; ponto.play(); } if(xBolinha < 10){ pontosDoOponete += 1; ponto.play(); }

}

function calculaChanceDeErrar(){ if (pontosDoOponete >= meusPontos){ chanceDeErrar += 1

if (chanceDeErrar >= 39){
chanceDeErrar = 40

}else { chanceDeErrar -= 1 if (chanceDeErrar <= 35){ chanceDeErrar = 35 }} } }