210 7643187Τηλέφωνο Επικοινωνίας - 210 7649008Τηλέφωνο Διευθυντή

ΠΛΗΡΟΦΟΡΙΚΗ Β4

Το ζητούμενο: Να πέφτουν αντικείμενα (κυκλάκια) από το πάνω μέρος του παραθύρου. Ο παίκτης να είναι ένα αντικείμενο (μεγαλύτερος κύκλος) που να κινείται στο κάτω μέρος του παραθύρου στον άξονα x. Η κίνηση να γίνεται είτε με το ποντίκι είτε με τα βελάκια. Αν πιάνει ένα αντικείμενο, ο παίκτης κερδίζει σκορ. Αν δεν προλάβει να το πιάσει, χάνει ζωές.

Φτιάχνουμε αρχικά τον κώδικα με κύκλους.
Αργότερα, θα αντικαταστήσουμε τους κύκλους με γραφικά.

BHMA 1 - Ένα αντικείμενο που πέφτει


float x1 = 150;             // θέση 1ου κύκλου
float y1 = 25;
float d1 = 50; 
              // διάμετρος 1ου κύκλου
float speed1 = 2;           // ταχύτητα 1ου κύκλου
color color1 = #2CFA12; // χρώμα 1ου κύκλου

void setup()
{
  size(800, 600);
}

void draw()
{
  background(0, 0, 255);

 
  fill (color1);
  ellipse(x1, y1, d1, d1);
  // εμφάνιση 1ου κύκλου
 
  y1 = y1 + speed1;      // υπολογισμός επόμενης θέσης (λίγο πιο κάτω)
 
  if (y1 >= height - d1/2)  // έλεγχος αν έφτασε κάτω κάτω
    y1 = 0;                       // στέλνουμε τον κύκλο πάλι πάνω
    
}
  // εδώ κλείνει η draw


ΒΗΜΑ 2 - Πολλά αντικείμενα που πέφτουν

Προσθέτουμε παρόμοιο κώδικα για ακόμα 3 κυκλάκια.
Κάθε νέο κυκλάκι χρειάζεται τις δικές του μεταβλητές.

ΒΗΜΑ 3 - Ο παίκτης

Αν θέλουμε ο παίκτης να κινείται με το ποντίκι, αρκεί να δημιουργηθεί μέσα στη draw ένας κύκλος με συντεταγμενη x το mouseX:
fill(0);
ellipse(mouseX, 500, 80, 80);

 
Αν θέλουμε ο παίκτης να κινείται με τα βελάκια, δηλώνουμε την συντεταγμένη x του παίκτη και την ταχύτητά του ως μεταβλητές:
float playerX = 400;
float playerSpeed = 0;


Μέσα στη draw εμφανίζουμε τον παίκτη:
fill(0);
ellipse(playerX, 500, 80, 80);
playerX = playerX + playerSpeed;


Και γράφουμε κώδικα για το event keyPressed() ώστε να διαχειριστούμε τα βελάκια:
void keyPressed()
{
    if (key == CODED)
    {
        if (keyCode == RIGHT)
            playerSpeed = 2;
            
        if (keyCode == LEFT)
            playerSpeed = -2;
    }
    
}
  // εδώ κλείνει η keyPressed

Τι παρατηρούμε;

ΒΗΜΑ 4
- Ο παίκτης πρέπει να σταματάει κάποτε

Γράφουμε κώδικα για το event keyReleased():

void keyReleased()
{
  playerSpeed = 0;
}

Τι παρατηρούμε;

Θα χρησιμοποιήσουμε δύο μεταβλητές που θα δείχνουν αν ο παίκτης πατάει κάποιο από τα βελάκια:
boolean right = false;  // θα γίνει true αν πατηθεί το δεξί βέλος
boolean left = false;   // θα γίνει true αν πατηθεί το αριστερό βέλος

Τροποποιούμε τoν κώδικα keyPressed, ώστε να γίνεται true η αντίστοιχη μεταβλητή:

    if (keyCode == RIGHT)
    {
      playerSpeed = 2;
      right = true;
    }
      
    if (keyCode == LEFT)
    {
      playerSpeed = -2;
      left = true;
    }


Τροποιούμε τον κώδικα keyReleased, ώστε να αλλάζει η αντίστοιχη μεταβλητή σε false, κι αν και οι δύο είναι false, να μηδενίζεται η ταχύτητα του παίκτη:

void keyReleased()
{
  if (key == CODED)
  {
    if (keyCode == RIGHT)
      right = false;
      
    if (keyCode == LEFT)
      left = false;
  }
 
  if (left == false && right == false)
    playerSpeed = 0;
    
}
  // εδώ κλείνει η keyReleased


ΒΗΜΑ 5
- Σύγκρουση παίκτη και αντικειμένου

Μέσα στη draw ελέγχουμε την απόσταση των δύο κέντρων, παίκτη κ αντικειμένου:

if (dist(x1, y1, playerX, 500) <= 40 + d1/2)
{
    y1 = 0;
}

 
Επιστροφή στην κορυφή της σελίδας