Fiz meu código um pouco diferente do original, mas tentando seguir a mesma lógica, porém seguindo o proposto, não consigo fazer a bolinha variar o ponto de colisão na raquete do oponente, impossibilitando marcar pontos independente do tempo jogado.
Mesmo aumentando a diferença do y da Bolinha pro y da raquete do oponente, continua colidindo no mesmo ponto.
Segue o código:
//variáveis da bolinha
let xBolinha = 350;
let yBolinha = 250;
let sizeBolinha = 20;
let raio = sizeBolinha / 2;
//velocidade da bolinha
let speedXBolinha = 8;
let speedYBolinha = 8;
//variáveis da raquete
let xRaquete = 2;
let yRaquete = 200;
let widthRaquete = 10;
let heightRaquete = 90;
//variáveis da raquete oponente
let xEnemyRaquete = 688;
let yEnemyRaquete = 200;
let speedEnemyRaquete;
//variáveis do placar
let myPoints = 0;
let enemyPoints = 0;
function setup() {
createCanvas(700, 500);
}
function draw() {
background(0);
showBolinha();
speedBolinha();
rebateBolinha();
showRaquete(xRaquete, yRaquete);
showRaquete(xEnemyRaquete, yEnemyRaquete);
moveRaquete();
collisionRaquete();
moveEnemyRaquete();
collisionEnemyRaquete();
showScore();
pointsDone();
}
function showBolinha() {
circle(xBolinha, yBolinha, sizeBolinha);
}
function speedBolinha() {
xBolinha += speedXBolinha;
yBolinha += speedYBolinha;
}
function rebateBolinha() {
if (xBolinha+raio > width || xBolinha-raio < 0) {
speedXBolinha *= -1
}
if (yBolinha+raio > height || yBolinha-raio < 0) {
speedYBolinha *= -1
}
}
function showRaquete(x,y) {
rect(x , y, widthRaquete, heightRaquete);
}
function moveRaquete() {
if (keyIsDown(UP_ARROW)) {
yRaquete -= 10;
}
if (keyIsDown(DOWN_ARROW)) {
yRaquete += 10;
}
}
function collisionRaquete() {
if (xBolinha - raio < xRaquete + widthRaquete &&
yBolinha - raio < yRaquete + heightRaquete &&
yBolinha + raio > yRaquete) {
speedXBolinha *= -1
}
}
function collisionEnemyRaquete() {
if (xBolinha + raio > xEnemyRaquete &&
yBolinha + raio > yEnemyRaquete &&
yBolinha - raio < yEnemyRaquete + heightRaquete) {
speedXBolinha *= -1
}
}
function moveEnemyRaquete() {
speedEnemyRaquete = yBolinha - yEnemyRaquete - heightRaquete / 2 - 40;
yEnemyRaquete += speedEnemyRaquete
}
function showScore() {
fill (255)
text (myPoints, 320, 20)
text (enemyPoints, 360, 20)
}
function pointsDone () {
if (xBolinha < 10) {
enemyPoints += 1
}
if (xBolinha > 690) {
myPoints += 1
}
}