// πίνακας αντικειμένων ball ball[] balls = new ball[3]; // μεταβλητή για διάμετρο μπάλας float d = 30; // μεταβλητή για μέγεθος ρακέτας (θα είναι το πλάτος, επειδή είναι οριζόντια) float rWidth = 150; float rHeight = 10; float rX, rY; // μεταβλητή για το πάχος των τοίχων float wallSize = 20; // μεταβλητή για το σκορ int score = 0; void setup() { size(1340, 600); // μέγεθος παραθύρου fill(0, 255, 0); // το χρώμα των σχημάτων είναι πράσινο rY = height - rHeight - 20; //(float px, float py, float pspeedx, float pspeedy, color pxroma, boolean pvisible) balls[0] = new ball(width/2, height/2, random(3,5), random(3,5), #00FF00, true, true); balls[1] = new ball(width/2, height/2, random(3,5), random(3,5), #FF0000, false, false); balls[2] = new ball(width/2, height/2, random(3,5), random(3,5), #0000FF, false, false); textSize(20); // μέγεθος γραμμάτων } // τέλος της setup void draw() { background(0); // Eμφάνιση τοίχων noStroke(); fill(#00FF00); rect(0, 0, width, wallSize); rect(0, 0, wallSize, height); rect(width - wallSize, 0, wallSize, height); // Εμφάνιση ρακέτας rX = mouseX - rWidth/2; rect(rX, rY, rWidth, rHeight); if (score%3==0 && score>0 && !balls[1].active) { balls[1].reset(width/2, height/2, random(3, 5), random(3, 5), true); } if (score%5==0 && score>0 && !balls[2].active) { balls[2].reset(width/2, height/2, random(3, 5), random(3, 5), true); } if (score%11==0 && score>0) { balls[1].showHide(false); balls[2].showHide(false); } for (int i = 0; i <3; i++) { balls[i].display(); balls[i].move(); } for (int i =0; i<3; i++) if (balls[i].visible) collisionDet(balls[i]); // Εμφάνιση του σκορ fill(#00FF00); text("SCORE: " + score, width/2 - 50, 50); if (!balls[0].visible) noLoop(); } //τέλος της draw // Με click του ποντικιού γίνεται restart void mousePressed() { // δίνονται ξανά οι αρχικές τιμές σε όλες // τις μεταβλητές της μπάλας balls[0].reset(width/2, height/2, random(3, 5), random(3, 5), true); // μηδενίζεται το σκορ score = 0 ; loop(); } //τέλος της mousePressed void collisionDet(ball b) { // σύγκρουση με ρακέτα if (b.x >= rX && b.x <= rX + rWidth && b.y + d/2 >= rY && b.y + d/2 <= rY + rHeight) // ήταν rHeight αντί 2 { b.reverseSpeed(false, true); // τυχαία αρχική ταχύτητα σε κάθε άξονα score++; } // σύγκρουση με πάνω τοίχο else if (b.y <= d/2 + wallSize) b.reverseSpeed(true, true); // σύγκρουση αριστερά ή δεξιά else if ( b.x<= d/2 + wallSize || b.x >= width - d/2 - wallSize) b.reverseSpeed(true, false); // αν περάσει κάτω από τη ρακέτα else if (b.y+d/2 >= height) b.showHide(false); }