xxxxxxxxxx
99
//let pal;
let maximavelocidad;
let movbolaxinicio = 5;
let movbolayinicio = 1;
let movbolax = 5;
let movbolay = 2;
let anchobola = 5;
let altobola = 5;
//let alturainiciobola = 198;
let distx;
let distx2;
let distancefromtop;
let medidapala;
let angulo;
let incognita;
let numimpactos = 0;
class Bolas {
constructor(max) {
this.x = (width / 2);
this.y = (height/2);
maximavelocidad = max;
}
mostrarbola() {
rectMode(CENTER);
rect(this.x, this.y, width*5/600 * 2, width*5/600 * 2);
}
moverbola() {
this.x += movbolax;
this.y += movbolay;
}
contactoizquierda(pal) {
distx = ((this.x-anchobola) - (pal.xx+pal.ancho));
if ((this.y > pal.yy - pal.alto) && (this.y < (pal.yy + pal.alto)) &&
(distx < abs(movbolax) && distx >= 0)
) {
distancefromtop = (this.y - (pal.yy - pal.alto));
medidapala = pal.alto * 2;
incognita = (PI / 4 + PI / 4);
angulo = (-PI / 4 + (distancefromtop / medidapala) * incognita);
//Si la bola esta en la punta de arriba, //distancefromtop/medidapala valdrá 0, así que el angulo = -PI/4 (-45º)
//Si la bola esta en la punta de abajo, //distancefromtop/medidapala valdrá 1, así que el angulo = PI/4 (45º)
movbolax = (numimpactos+5) * cos(angulo) ;
movbolay = (numimpactos+5) * sin(angulo) ;
numimpactos++;
numimpactos = constrain(numimpactos,0,maximavelocidad);
}
}
contactoderecha(pal2) {
distx2 = ((pal2.xx - pal2.ancho) - (this.x + anchobola));
if (this.y > (pal2.yy - pal2.alto) && this.y < (pal2.yy + pal2.alto) &&
distx2 < movbolax && distx2 >= 0) {
distancefromtop = (this.y - (pal2.yy - pal2.alto));
medidapala = pal2.alto * 2;
incognita = ((6 * PI / 8) - (5 * PI / 4));
angulo = (5 * PI / 4 + (distancefromtop / medidapala) * incognita);
//incognita = (12*PI/8);
//angulo = (-6*PI/8 + (1/2) * incognita);
//Esta version (la de 135 y -135) no funciona, funciona //la de 135, 225
movbolax = (numimpactos+5) * cos(angulo);
movbolay = (numimpactos+5) * sin(angulo);
}
}
esquinas() {
if (this.y - altobola < 0 || this.y + altobola >= height) {
movbolay *= -1;
}
}
reset() {
if (this.x < 0 || this.x > width) {
this.x = (width / 2);
this.y = (height/2);
movbolax = movbolaxinicio;
movbolay = movbolayinicio;
numimpactos = 0;
}
}
}