Ainda estou com um problema de como resolver da raquete do oponente quando bate na borda de baixo. (quando é usado a função COM). No if "verificaColisaoRaqueteOponenteBaixo()"
Meu código:
/* VARIÁVEIS */
// fundo do jogo
let xFundo = 600;
let yFundo = 400;
// bolinha
let xBolinha = xFundo / 2;
let yBolinha = yFundo / 2;
let diametro = 15;
let raio = diametro / 2;
// minha raquete
let xRaquete = 1;
let yRaquete = 150;
// raquete do oponente
let xRaqueteOponente = 585;
let yRaqueteOponente = 150;
let velocidadeYOponente;
let chanceDeErrar = 0;
// raquetes
let colidiu = false;
let comprimentoRaquete = 10;
let alturaRaquete = 90;
// velocidade da bolinha
let velocidadeXBolinha = 6;
let velocidadeYBolinha = 6;
// placar do jogo
let meusPontos = 0;
let pontosOponente = 0;
// sons do jogo
let raquetada;
let ponto;
let trilhaSonora;
/* FUNÇÕES */
// carregar os sons do jogo
function preload() {
trilhaSonora = loadSound("trilha.mp3");
ponto = loadSound("ponto.mp3");
raquetada = loadSound("raquetada.mp3");
}
// montar o fundo do jogo
function setup() {
createCanvas(xFundo, yFundo);
trilhaSonora.loop();
}
// mostrar o jogo acontecendo
function draw() {
background(0);
mostraBolinha();
mostraRaquete(xRaquete,yRaquete);
mostraRaquete(xRaqueteOponente,yRaqueteOponente);
movimentaBolinha();
verificaColisaoBorda();
movimentaMinhaRaquete();
movimentaRaqueteOponente();
verificaColisaoRaquete(xRaquete,yRaquete);
verificaColisaoRaquete(xRaqueteOponente,yRaqueteOponente);
adicionaPlacar();
marcaPonto();
verificaColisaoRaqueteBordaCima();
verificaColisaoRaqueteBordaBaixo();
verificaColisaoRaqueteOponenteCima();
//verificaColisaoRaqueteOponenteBaixo();
}
// montar a bolinha
function mostraBolinha() {
circle(xBolinha, yBolinha, diametro);
}
// montar as raquetes
function mostraRaquete(x,y) {
rect(x, y, comprimentoRaquete, alturaRaquete);
}
// aplicar a velocidade da bolinha verticalmente e horizontalmente
function movimentaBolinha() {
xBolinha += velocidadeXBolinha;
yBolinha += velocidadeYBolinha;
}
// verificar a colisão da bolinha com a borda do jogo
function verificaColisaoBorda() {
if ((xBolinha + raio) > width || (xBolinha - raio) < 0) {
velocidadeXBolinha *= -1;
}
if ((yBolinha + raio) > height || (yBolinha - raio) < 0) {
velocidadeYBolinha *= -1;
}
}
// colisão da minha raquete com as bordas
function verificaColisaoRaqueteBordaCima(){
return yRaquete > -1;
}
function verificaColisaoRaqueteBordaBaixo(){
return yRaquete < 310;
}
// colisão da raquete do oponente com a borda de cima
function verificaColisaoRaqueteOponenteCima(){
return yRaqueteOponente > -1;
}
// raquete do oponente não ultrapassar a borda de baixo
/*function verificaColisaoRaqueteOponenteBaixo(){
return yRaqueteOponente < 310;
}*/
// movimentar a minha raquete
function movimentaMinhaRaquete(){
if (keyIsDown(UP_ARROW)){
if(verificaColisaoRaqueteBordaCima()){ // verifica se pode ou não movimentar as raquetes para cima.
yRaquete -= 10;
}
}
if (keyIsDown(DOWN_ARROW)){
if(verificaColisaoRaqueteBordaBaixo()){ // verifica se pode ou não movimentar a raquetes para baixo.
yRaquete += 10;
}
}
}
// movimentar a raquete do oponente. *Função COM*
function movimentaRaqueteOponente(){
velocidadeYOponente = yBolinha - yRaqueteOponente - comprimentoRaquete / 2 - 30;
if (verificaColisaoRaqueteOponenteCima()) {
yRaqueteOponente += velocidadeYOponente + chanceDeErrar;
calculaChanceDeErrar();
}
if (verificaColisaoRaqueteOponenteBaixo()) {
yRaqueteOponente += velocidadeYOponente + chanceDeErrar;
calculaChanceDeErrar();
}
}
// verfica se a bolinha esta colidindo com a raquete
function verificaColisaoRaquete(x,y) {
colidiu = collideRectCircle(x, y, comprimentoRaquete, alturaRaquete, xBolinha, yBolinha, raio);
if (colidiu) {
velocidadeXBolinha *= -1;
raquetada.play();
}
}
// montar o placar do jogo
function adicionaPlacar() {
stroke(255);
textAlign(CENTER);
textSize(16);
fill(color(139,0,139));
rect(150, 10, 40, 20);
fill(255);
text(meusPontos, 170, 26);
fill(color(139,0,139));
rect(450, 10, 40, 20);
fill(255);
text(pontosOponente, 470, 26);
}
// marcando os pontos
function marcaPonto() {
if (xBolinha > 590) {
meusPontos += 1;
ponto.play();
}
if (xBolinha < 10) {
pontosOponente += 1;
ponto.play();
}
}
// calculando a chance do oponente de errar
function calculaChanceDeErrar() {
if (pontosOponente >= meusPontos) {
chanceDeErrar += 1;
if (chanceDeErrar >= 39) {
chanceDeErrar = 40;
}
}
else {
chanceDeErrar -= 1;
if (chanceDeErrar <= 35) {
chanceDeErrar = 35;
}
}
}