Oi, pessoal! Tudo bem? Observei que com o cálculo do erro proposto a raquete do oponente sempre erra ficando abaixo da bolinha. Estava pensando se seria possível tornar esse erro aleatório, ou pelo menos variável. Ou seja, ora a raquete do oponente erre para mais ora para menos. Pensei em fazer utilizando o número de pontos e, caso o número de pontos seja um número par, a raquete erre para mais e, caso contrário erre para menos, porém não obtive sucesso. Alguém poderia me dar uma luz? Segue o código:
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();
verificaColisaoComBorda();
mostraRaquete(xMinhaRaquete, yMinhaRaquete);
mostraRaquete(xRaqueteDoOponente, yRaqueteDoOponente);
verificaColisaoRaquete(xMinhaRaquete, yMinhaRaquete);
verificaColisaoRaquete(xRaqueteDoOponente, yRaqueteDoOponente);
movimentaMinhaRaquete();
movimentaRaqueteDoOponente();
mostraPontos();
mudaPlacar();
}
//variáveis de sons;
let ponto;
let raquetada;
let trilha;
//variáveis da bolinha;
let xBolinha = 300;
let yBolinha = 200;
let diametroBolinha = 13;
let raio = diametroBolinha / 2;
let velocidadeXBolinha = 6;
let velocidadeYBolinha = 6;
function mostraBolinha(){
circle(xBolinha, yBolinha, diametroBolinha);
}
function movimentaBolinha(){
xBolinha += velocidadeXBolinha;
yBolinha += velocidadeYBolinha;
}
function verificaColisaoComBorda(){
if(xBolinha + raio > width || xBolinha - raio < 0){
velocidadeXBolinha *= -1;
}
if(yBolinha + raio > height || yBolinha - raio < 0){
velocidadeYBolinha *= -1;
}
}
//variáveis da minha raquete;
let alturaMinhaRaquete = 90;
let comprimentoMinhaRaquete = 10;
let xMinhaRaquete = 5;
let yMinhaRaquete = 150;
//variáveis da raquete do oponente;
let alturaRaqueteDoOponente = 90;
let comprimentoRaqueteDoOponente = 10;
let xRaqueteDoOponente = 585;
let yRaqueteDoOponente = 150;
let chanceDeErrar = 0;
let velodidadeYRaqueteOponente;
let colidiu = false;
function mostraRaquete(x, y){
rect(x, y, comprimentoMinhaRaquete,alturaMinhaRaquete);
}
function movimentaMinhaRaquete(){
if(keyIsDown(UP_ARROW)){
yMinhaRaquete -= 10;
}
if(keyIsDown(DOWN_ARROW)){
yMinhaRaquete += 10;
}
}
function verificaColisaoRaquete(x, y){
colidiu = collideRectCircle(x, y,comprimentoMinhaRaquete,alturaMinhaRaquete,
xBolinha,yBolinha,raio);
if (colidiu){
velocidadeXBolinha *= -1;
raquetada.play();
}
}
function movimentaRaqueteDoOponente(){
velodidadeYRaqueteOponente = (yBolinha - alturaRaqueteDoOponente / 2);
yRaqueteDoOponente = velodidadeYRaqueteOponente + chanceDeErrar;
calculaChanceDeErrar();
}
//variáveis de pontuação;
let meusPontos = 0;
let pontosDoOponente = 0;
function mostraPontos(){
stroke(255);
textAlign(CENTER);
textSize(16);
fill(color(148, 0,211));
rect(150, 10, 40, 20);
fill(255);
text(meusPontos, 170, 26);
fill(color(139, 0,0));
rect(450, 10, 40, 20);
fill(255);
text(pontosDoOponente, 470, 26);
}
function mudaPlacar(){
if(xBolinha - raio <= 0){
pontosDoOponente += 1;
ponto.play();
}
if(xBolinha + raio >= width){
meusPontos += 1;
ponto.play();
}
}
function calculaChanceDeErrar(){
if (pontosDoOponente >= meusPontos) {
chanceDeErrar += 5
if (chanceDeErrar >= 75){
chanceDeErrar = 75
}
} else {
chanceDeErrar -= 5
if (chanceDeErrar <= 25){
chanceDeErrar = 25
}
}
if (meusPontos % 2 == 0){
chanceDeErrar *= -1;
}
}
//Grande abraço pra vocês!