//clase (objeto) ball class ball{ //iniciamos variables float x; float y; float speed, originalSpeed,speedIncrement; float dirX,dirY; float sz; float efecte = 35.0; //constructor ball(float _orX,float _orY,float _speed, float _speedIncrement,float _sz){ x = _orX; y = _orY; speed = originalSpeed = _speed; sz = _sz; speedIncrement = _speedIncrement; dirX=1; dirY=0; } //actualización void update(){ move(); checkPaddles(); checkBorders(); drawMe(); } void move(){ //actualitzamos las posiciones x = x+dirX*speed; y = y+dirY*speed; } void checkPaddles(){ //comprobamos contacto con las palas y actuamos en consecuencia if(x-sz/2 <= paddleLeft.getContactX()){ if(dist(x,y,paddleLeft.getContactX(), paddleLeft.getContactY()) < paddleLeft.getMyHeight()/2){ dirX=abs(dirX); speed += speedIncrement; //según si el efecto en el rebote está activo, realizamos una u otra acción if(efecteActiu){ dirY = -(paddleLeft.getContactY()-y)/efecte; } else { dirY = -dirY; } } } else if (x+sz/2 >= paddleRight.getContactX()){ println(millis()+"--"); if(dist(x,y,paddleRight.getContactX(),paddleRight.getContactY()) < paddleRight.getMyHeight()/2){ dirX=-abs(dirX); speed += speedIncrement; //////////////////// //según si el efecto en el rebote está activo, realizamos una u otra acción if(efecteActiu){ dirY = -(paddleRight.getContactY()-y)/efecte; } else { dirY = -dirY; } } } } //comprobamos si la bola llega a los bordes //Rebotamos si es el borde superior o inferior void checkBorders(){ if(y-sz/2<0 || y+sz/2>height){ dirY=-dirY; } //Si es el borde izquierdo o derecho (pasó la pala), es gol! if(x-sz/2<0){ println("rightCScores)"); scorer.playerRightScored(); restartBall("toLeft"); } else if (x+sz/2>width){ println("leftScores"); scorer.playerLeftScored(); restartBall("toRight"); } } //reiniciamos la bola, hacia el lado que toca i diferente si jugamos //con o sin efecto void restartBall(String _s){ speed = originalSpeed; if(_s=="toLeft"){ dirX=-1; if(efecteActiu){ dirY=0;//random(100)%2; } else { dirY=random(100)%2; } x=width/2; y=height/2; } else{ dirX=1; if(efecteActiu){ dirY=0;//random(100)%2; } else { dirY=random(100)%2; } x=width/2; y=height/2; } } //dibujamos la bola void drawMe(){ noStroke(); fill(screenColor); ellipse(x,y,sz,sz); } }//fin de la clase ball