Olá pessoal, boa noite
Finalizei o Projeto Jogo Pong, porém o Bot está invencível, tentei de algumas formas ajustar, porém não tive sucesso.
Se alguém tiver alguma dica eu agradeço!
https://editor.p5js.org/glingenover/full/O0CxYleiS
//variáveis da bolinha
let xBolinha = 300;
let yBolinha = 200;
let diametro = 20;
let raio = diametro / 2;
//variáveis da velocidade da bolinha
let velocidadeXBolinha = 8;
let velocidadeYBolinha = 8;
let larguraRaquete = 10;
let alturaRaquete = 80;
//variáveis da raquete
let xRaquete = 10;
let yRaquete = 160;
//variáveis do adversário
let xRaqueteAdv = 580;
let yRaqueteAdv = 160;
let velocidadeYAdv;
let velocidadeYAdv2 = 1;
let colidiu = false;
//Placar do Jogo
let meusPontos = 0;
let pontosAdv = 0;
//Sons do Jogo
let raquetada;
let ponto;
let trilha;
let chanceDeErrar = 0;
function preload(){
trilha = loadSound('trilha.mp3');
ponto = loadSound('ponto.mp3');
raquetada = loadSound('raquetada.mp3');
}
function setup() {
createCanvas(600, 400);
//trilha.loop();
}
function draw() {
background(110,0,0);
desenhaQuadra();
raqueteBorda();
mostraRaquete(xRaquete, yRaquete);
mostraRaquete(xRaqueteAdv, yRaqueteAdv);
movimentaBolinha();
verificaColisaoBorda();
movimentaMinhaRaquete();
movimentaRaqueteAdv();
//verificaColisaoRaquete(xRaquete, yRaquete);
//verificaColisaoRaquete(xRaqueteAdv, yRaqueteAdv);
verificaColisaoRaqueteBiblioteca(xRaquete, yRaquete);
verificaColisaoRaqueteBiblioteca(xRaqueteAdv, yRaqueteAdv);
incluiPlacar();
marcaPontos();
mostraBolinha();
}
function desenhaQuadra(){
stroke(255);
fill(color(110,0,0));
//escanteios
circle(0, 0, 25); //esquerda cima
circle(0, 400, 25); //esquerda baixo
circle(600, 0, 25); //direita cima
circle(600, 400, 25); //direita baixo
//lado esquerdo
line(0,0,0,400); //atrás do "gol" da esquerda
circle(60, 200, 100); //meia lua
rect(0, 100, 85, 200); //grande área
rect(0, 140, 50, 120); //pequena área
//lado direito
circle(540, 200, 100); //meia lua
rect(515, 100, 600, 200); //grande área
rect(550, 140, 600, 120); //pequena área
line(600,0,600,400); //atrás do "gol" da direita
//laterais
line(0,0,600,0); //lateral cima
line(0,400,600,400); //lateral baixo
fill(color(110,0,0));
circle(300, 200, 100); //circulo central
fill(color(255,255,255));
circle(300, 200, 10); //circulo central
line(300,0,300,400); //linha do meio campo
fill(color(255,255,255));
rect(300, 400, 5, 10);
}
function mostraRaquete(x, y){
rect(x, y, larguraRaquete, alturaRaquete);
}
function movimentaMinhaRaquete(){
if(keyIsDown(UP_ARROW)){
yRaquete -= 10;
}
if(keyIsDown(DOWN_ARROW)){
yRaquete += 10;
}
}
function movimentaRaqueteAdv(){
velocidadeYAdv = yBolinha - yRaqueteAdv - alturaRaquete / 2 - 30;
yRaqueteAdv += velocidadeYAdv;
}
function raqueteBorda(){
if(yRaquete > 320){
yRaquete = 320
}
if(yRaquete < 0){
yRaquete = 0
}
if(yRaqueteAdv > 320){
yRaqueteAdv = 320
}
if(yRaqueteAdv < 0){
yRaqueteAdv = 0
}
}
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 verificaColisaoRaquete(x, y){
if(xBolinha - raio < xRaquete + larguraRaquete
&& yBolinha - raio < yRaquete + alturaRaquete
&& yBolinha - raio > yRaquete){
velocidadeXBolinha *= -1;
raquetada.play();
}
}
function verificaColisaoRaqueteBiblioteca(x, y){
colidiu = collideRectCircle(x,y,larguraRaquete,alturaRaquete,xBolinha, yBolinha, raio)
if(colidiu){
velocidadeXBolinha *= -1;
raquetada.play();
}
}
function incluiPlacar(){
stroke(255)
textAlign(CENTER);
textSize(16);
fill(color(139,0,0));
rect(130, 10, 40, 30);
rect(430, 10, 40, 30);
fill(color(255,255,255));
text(meusPontos, 150, 30);
text(pontosAdv, 450, 30);
}
function marcaPontos(){
if(xBolinha > 590){
meusPontos ++;
ponto.play();
}
if(xBolinha < 10 ){
pontosAdv ++;
ponto.play();
}
}