class ball { float x, y; float speedx, speedy; color xroma; boolean visible, active; int diam; ball(float px, float py, float pspeedx, float pspeedy, color pxroma, boolean pvisible, boolean pactive) { x = px; y = py; speedx = pspeedx; speedy = pspeedy; xroma = pxroma; visible = pvisible; diam = 30; active = pactive; } void display() { // αν είναι visible, τότε εντολές για noStroke, fill, ellipse if (!visible) return; noStroke(); fill(xroma); ellipse(x, y, diam, diam); } void move() { // αν είναι visible, ενημέρωση των x,y με βάση τις ταχύτητες if (!visible) return; x = x + speedx; y = y + speedy; } void reset(float px, float py, float pspeedx, float pspeedy, boolean pactive) { // τα χαρακτηριστικά x, y, speedx, speedy να παίρνουν τις τιμές // που δίνονται ως παράμετροι και το χαρακτηριστικό visible να // γίνεται true x = px; y = py; speedx = pspeedx; speedy = pspeedy; visible = true; active = pactive; } void reverseSpeed(boolean revX, boolean revY) { if (!visible) return; // αν είναι visible // αν και το revX και το revY είναι true, τότε πολλαπλασιάζονται οι ταχύτητες με 1.1 και η speedy αντιστρέφεται // αν είναι true μόνο το revX ή μόνο το revY, τότε αντιστρέφεται μόνο η αντίστοιχη ταχύτητα if (revX && revY) { speedx = 1.2 * speedx; speedy = - 1.2 *speedy; } else if (revX) speedx = -speedx; else speedy = -speedy; if (abs(speedx) > 6 || abs(speedy) > 6) { speedx = 3; speedy = 3; } } void showHide(boolean value) { // το χαρακτηριστικό visible παίρνει την τιμή της παραμέτρου visible = value; if (!visible) active = false; } }