...
Code Block |
---|
class BouncingBall { PVector _pos; PVector _dir; float _dampV; PShape _shape; int _w; int _h; // constructor BouncingBall(int shapeWidth,int shapeHeight) { _pos = new PVector(width/2, height/2); _dir = new PVector(0,0); _dampV = 1; _w = shapeWidth; _h = shapeHeight; _shape = loadShape("ball1.svg"); } // set the new position + direction + dampening void set(PVector pos,PVector dir,float dampV) { _pos = pos.get(); _dir.add(dir); _dampV = dampV; } // update the current position void calcPos() { // curent position shifted _pos.add(_dir); // movement vector modified _dir.mult(_dampV); // test horisontal if(_pos.x + _w/2 > width) { _dir.x *= -1; _pos.x = width - _w/2; } else if(_pos.x - _w/2 < 0) { _dir.x *= -1; _pos.x = _w/2; } // test vertical if(_pos.y + _h/2 > height) { _dir.y *= -1; _pos.y = height - _w/2; } else if(_pos.y - _h/2 < 0) { _dir.y *= -1; _pos.y = _h/2; } } // draw the ball void draw() { calcPos(); shape(_shape, _pos.x,_pos.y, _w,_h); } } |
Example BallKlasse Extended
Code Block |
---|
class BallEx extends BouncingBall { BallEx(int size) { super(size,size); } void draw() { super.draw(); line(0,0,_pos.x,_pos.y); } } |
...