Eai pessoal, gostaria de compartilhar um bug com vcs, e saber se tem solução. Quando tinha finalizado a colisão da bolinha com a minha raquete percebi que quando subia a raquete a bolinha nn encostava totalmente no canto da minha tela, isso acontece tmb quando quando descia a raquete. Porém é claro que eu vi a aula do professor é corrigi esses bugs. Após ja ter finalizado a raquete do oponente (colisão e movimento) fui fazer os testes para ver se estava tudo certinho. E ai vem o bug, notei que o erro da bolinha nn encostar no final da tela quando a raquete estava ou pra cima, ou para baixo, só resolvia quando minha raquete estava bem acima, ou bem abaixo da bolinha, mas quando a bolinha passava muito perto da raquete ela ainda nn encostava no final da tela. Como se aquela solução do professor só funcionasse para quando a raquete estivesse longe da bolinha, porque se estivesse perto continuava nn encostando no final...
Meu código:
let xBolinha = 300; let yBolinha = 200; let diametro = 20; let raio = diametro / 2;
let velocidadeXBolinha = 2; let velocidadeYBolinha = 6;
let xRaquete = 5 let yRaquete = 150 let comprimentoRaquete = 10 let alturaRaquete = 80
let xRaqueteOponente = 585 let yRaqueteOponente = 150 let comprimentoRaqueteOponente = 10 let alturaRaqueteOponente = 80 let velocidadeYRaqueteOponente;
let meusPontos = 0 let pontosOponente = 0
/* let esquerdaBolinha = xBolinha - raio let superiorBolinha = yBolinha - raio let inferiorBolinha = yBolinha + raio
let direitaRaquete = xRaquete + comprimentoRaquete let superiorRaquete = yRaquete - alturaRaquete let inferiorRaquete = yRaquete + alturaRaquete */
function setup() { createCanvas(600, 400) }
function draw() { background(0); velocidadeBolinha(); mostraBolinha(); mostraRaquete(); movimentaRaquete(); verificaColisaoRaquete(); verificaColisaoRaqueteOponente() mostrarRaqueteOponente(); movimentaRaqueteOponente() mostrarPlacar() pontos()
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 velocidadeBolinha(){ xBolinha += velocidadeXBolinha; yBolinha += velocidadeYBolinha;
}
function mostraRaquete(){ rect (xRaquete,yRaquete,comprimentoRaquete, alturaRaquete)
} function mostrarRaqueteOponente(){ rect (xRaqueteOponente, yRaqueteOponente, comprimentoRaqueteOponente, alturaRaqueteOponente) }
function movimentaRaquete(){ if (keyIsDown(UP_ARROW)){ yRaquete -= 10 } if (keyIsDown(DOWN_ARROW)) yRaquete += 10
yRaquete = constrain (yRaquete, 0, 320) yRaqueteOponente = constrain (yRaqueteOponente, 0, 320) }
function movimentaRaqueteOponente(){ velocidadeYRaqueteOponente = yBolinha - yRaqueteOponente - comprimentoRaqueteOponente /2 - 30 yRaqueteOponente += velocidadeYRaqueteOponente}
function verificaColisaoRaquete(){ if ( xBolinha - raio < xRaquete + comprimentoRaquete & yBolinha - raio < yRaquete + alturaRaquete & yBolinha + raio > yRaquete - alturaRaquete ){ velocidadeXBolinha *= -1 }
}
function verificaColisaoRaqueteOponente (){ if (xBolinha + raio > xRaqueteOponente + comprimentoRaqueteOponente & yBolinha - raio < yRaqueteOponente + alturaRaqueteOponente & yBolinha + raio > yRaqueteOponente - alturaRaqueteOponente ){ velocidadeXBolinha *= -1 } }
function mostrarPlacar(){ fill (255) text (meusPontos,278, 26) text (pontosOponente,321, 26 ) }
function pontos(){ if (xBolinha > 590){ meusPontos += 1
} if (xBolinha < 10){ pontosOponente += 1 } }