ΣΚΟΠΟΣ: Τρεις κύκλοι πέφτουν από το πάνω άκρο του παραθύρου. Στόχος του παίκτη είναι να προλάβει να πατήσει μέσα στους κύκλους πριν φτάσουν στο κάτω άκρο.
- Αν κάποιος κύκλος προλάβει να φτάσει κάτω, τότε ο παίκτης χάνει μία ζωή και ο κύκλος μεταφέρεται ξανά στην αρχή.
- Κάθε φορά που ο παίκτης πατάει μέσα σε έναν κύκλο, κερδίζει σκορ και ο κύκλος μεταφέρεται ξανά στην αρχή.
- Ο παίκτης ξεκινάει με 5 ζωές.
- Όσο αυξάνεται το σκόρ τόσο πιο γρήγορα πέφτουν οι κύκλοι.
- Όταν μηδενιστούν οι ζωές, το παιχνίδι σταματάει (game over).
- Το παιχνίδι γίνεται ξεκινάει εκ νέου (restart) με κλικ του ποντικιού.
// Μεταβλητές για τον 1ο κύκλο
float x1, y1, diam1, speed1;
// Μεταβλητές για τον 2ο κύκλο
// .....
// Μεταβλητές για τον 3ο κύκλο
// .....
// Μεταβλητές για σκορ κ ζωές
int score, lives;
// Μεταβλητή που δείχνει αν ο παίκτης έχασε
boolean lost;
// Μέσα στη setup δίνουμε όλες τις αρχικές ρυθμίσεις
void setup()
{
// Το παιχνίδι να παίζει fullscreen
fullScreen();
// Αρχικές τιμές για σκορ και ζωές
score = 0;
lives = 5;
// Αρχική τιμή false για το lost
lost = false;
// Χαρακτηριστικά του 1ου κύκλου
diam1 = 90;
x1 = width/4;
y1 = diam1/2;
speed1 = 3;
// Χαρακτηριστικά του 2ου κύκλου
// .....
// Χαρακτηριστικά του 3ου κύκλου
// .....
// Μέγεθος γραμμάτων
textSize(30);
// Τα σχήματα να μην έχουν περίγραμμα
noStroke();
} // εδώ κλείνει η setup
void draw()
{
// Ζωγραφίζεται το φόντο
background(#539090);
// Ζωγραφίζεται ο 1ος κύκλος
fill(#6AFA0D);
circle(x1, y1, diam1);
// Υπολογίζεται η νέα θέση του 1ου κύκλου
y1 = y1 + speed1;
// Αν ο 1ος κύκλος έχει φτάσει κάτω κάτω, χάνεται μία ζωή
// και διορθώνουμε τη νέα θέση ώστε να εμφανιστεί ξανά πάνω πάνω
if (y1 >= height - diam1/2)
{
y1 = diam1/2;
lives--;
}
// Ζωγραφίζεται ο 2ος κύκλος
// ....
// Υπολογίζεται η νέα θέση του 2ου κύκλου
// ....
// Αν ο 2ος κύκλος έχει φτάσει κάτω κάτω, χάνεται μία ζωή
// και διορθώνουμε τη νέα θέση ώστε να εμφανιστεί ξανά πάνω πάνω
// ....
// Ζωγραφίζεται ο 3ος κύκλος
// ....
// Υπολογίζεται η νέα θέση του 3ου κύκλου
// ....
// Αν ο 3ος κύκλος έχει φτάσει κάτω κάτω, χάνεται μία ζωή
// και διορθώνουμε τη νέα θέση ώστε να εμφανιστεί ξανά πάνω πάνω
// ....
// Εμφανίζουμε σκορ και ζωές
text("SCORE: " + score, 100, 50);
text("LIVES: " + lives, width-300, 50);
// Αν οι ζωές είναι μηδέν, το παιχνίδι σταματάει με noLoop()
// και η μεταβλητή lost γίνεται true (για να θυμάται το πρόγραμμα ότι ο παίκτης έχασε)
if (lives == 0)
{
noLoop();
lost = true;
}
} // εδώ κλείνει η draw
void mousePressed()
{
// Αν ο παίκτης έκανε κλικ μέσα στον 1ο κύκλο
// κερδίζει σκορ και ο κύκλος πηγαίνει ξανά στην αρχή (πάνω πάνω)
if (dist(x1, y1, mouseX, mouseY) < diam1/2)
{
y1 = diam1/2;
score++;
}
// Αν ο παίκτης έκανε κλικ μέσα στον 2ο κύκλο
// κερδίζει σκορ και ο κύκλος πηγαίνει ξανά στην αρχή (πάνω πάνω)
// ......
// Αν ο παίκτης έκανε κλικ μέσα στον 3ο κύκλο
// κερδίζει σκορ και ο κύκλος πηγαίνει ξανά στην αρχή (πάνω πάνω)
// .....
// Αν ο παίκτης έχει χάσει, θέλουμε με κλικ να γίνεται restart
if (lost == true)
{
// όλες οι μεταβλητές παίρνουν πάλι τις αρχικές τους τιμές
// ......
// η draw ξεκινάει πάλι
loop();
}
// Αν το σκορ είναι 5 ή 10, οι ταχύτητες να αυξάνονται
if (score == 5 || score == 10)
{
// .......
}
} // εδώ κλείνει η mousePressed