powered by Surfing Waves

Φεστιβάλ ψηφιακής δημιουργίας 2017

Παίζοντας με τα μαθηματικά - Κυνηγητό με την έξυπνη μπάλα


Όλα ξεκίνησαν από την έννοια της  μεταβλητής, μάθαμε πως ορίζουμε μια μεταβλητή, ότι μια μεταβλητή αντιστοιχεί σε μια θέση μνήμης, επίσης  μάθαμε πως μπορούμε να έχουμε πρόσβαση στο περιεχόμενο δηλαδή στη τιμή μιας μεταβλητής, πως μπορούμε να το ορίσουμε αλλά και να το μεταβάλλουμε.  Έτσι δημιουργήσαμε μια μεταβλητή Χ2 με την οποία πειραματιστήκαμε αρκετά ώστε να εμπεδώσουμε τις έννοιες που αναφέραμε παραπάνω.  


Στη συνέχεια χρησιμοποιήσαμε την μεταβλητή Χ2 ως ένα μετρητή o οποίoς μετράει από το 1 μέχρι το 100. Αυτό το κάναμε συνδυάζοντας κατάλληλα τη μεταβλητή με μια εντολή επανάληψης. Έχοντας μάθει λοιπόν αυτά είπαμε να κάνουμε κάτι πιο ενδιαφέρον, χρησιμοποιήσαμε λοιπόν μια μπάλα baseball αντί για την γάτα στο scratch και είπαμε να την τοποθετήσουμε σε «τροχιά». Δηλαδή βάλαμε την μπάλα μας να κινείται συνεχώς και αδιαλείπτως δεξιά και αριστερά στην οθόνη του υπολογιστή. Έτσι μάθαμε πως μπορούμε να θέτουμε σε κίνηση τα διάφορα αντικείμενα που μας παρέχει το περιβάλλον εργασίας της γλώσσας προγραμματισμού scratch, χρησιμοποιώντας κατάλληλα την εντολή επανάληψης.


Ωραία και λοιπόν τι έγινε… έπρεπε να το κάνουμε λίγο πιο ενδιαφέρον έτσι σκεφτήκαμε να χρησιμοποιήσουμε μια δεύτερη μπάλα (ποδοσφαίρου αυτή τη φορά) η οποία να κυνηγάει την αρχική μπάλα του baseball, χωρίς κανένα έλεγχο από τον χρήστη μέχρι να την πιάσει. Σκεφτήκαμε δηλαδή να φτιάξουμε μια “έξυπνη” μπάλα ποδοσφαίρου με στόχο να ακουμπήσει την μπάλα του baseball, ένα είδος κυνηγητού  όπου οι πρωταγωνιστές δηλαδή οι παίκτες θα ήταν οι δύο μπάλες.


Ενώ λοιπόν αυτό ακούγεται σαν μια απλή ιδέα, στην υλοποίηση της συναντήσαμε αρκετές δυσκολίες. Πως θα καταφέρναμε να προγραμματίσουμε την μπάλα του ποδοσφαίρου με ένα τέτοιο τρόπο ώστε να κυνηγάει την αρχική μπάλα και μάλιστα χωρίς την βοήθεια του χρήστη;


Η λύση ήρθε από τα μαθηματικά… Οι δύο μπάλες που δεν είναι τίποτε άλλο από δυο σημεία σε ένα καρτεσιανό σύστημα συντεταγμένων ορίζουν μια ευθεία, αυτή η ευθεία είναι η τροχιά που θα πρέπει να ακολουθήσει η μπάλα του ποδοσφαίρου για να συναντήσει την μπάλα του baseball. Ναι αλλά πως θα καταφέρναμε να κάνουμε την μπάλα μας αρκετά «έξυπνη» έτσι ώστε να ακολουθήσει τη σωστή πορεία; Τότε σκεφτήκαμε την εξίσωση της ευθείας που είχαμε μάθει στην δευτέρα τάξη του γυμνασίου.
Η εξίσωση αυτή δίνεται από τον μαθηματικό τύπο: .

 

Όπου x1 και y1 είναι οι συντεταγμένες του αρχικού σημείου μιας ευθείας, στην δικιά μας περίπτωση αυτό το σημείο ορίζεται από την αρχική θέση της μπάλας του ποδοσφαίρου.

 

Ο συντελεστής m δίνεται από τη σχέση:

 

όπου χ1, y1 και x2, y2 είναι δύο γνωστά σημεία πάνω στην ευθεία. Στο δικό μας πρόβλημα δεν είναι τίποτε άλλο από τις συντεταγμένες των αρχικών θέσεων της μπάλας του baseball και της μπάλας του ποδοσφαίρου. Έτσι τελικά γνωρίζοντας το m και την αρχική θέση x1 και y1 της μπάλας του ποδοσφαίρου, από την εξίσωση της ευθείας μπορούμε να υπολογίσουμε την ακριβή τροχιά που θα πρέπει να ακολουθήσει η μπάλα του ποδοσφαίρου για να συναντήσει την μπάλα του baseball. Δηλαδή για μας αυτή η εξίσωση είναι ένα μαγικό κουτί στο οποίο δίνοντας σαν είσοδο ένα σημείο χ, αυτό μας υπολογίζει ένα αντίστοιχο y, όπου τελικά το σημείο με συντεταγμένες (χ, y) που προκύπτει, είναι σημείο της ευθείας που ορίζουν τα αρχικά μας σημεία, δηλαδή οι αρχικές συντεταγμένες της μπάλας του ποδοσφαίρου και της μπάλας του baseball. Έτσι μπορούμε να υπολογίσουμε με ακρίβεια  την τροχιά που πρέπει να ακολουθήσει η πρώτη μπάλα μέχρι να συναντήσει τη δεύτερη.
Στη συνέχεια έπρεπε να περάσουμε από τη θεωρία στην πράξη, δηλαδή την θεωρία που είχαμε εξηγήσει και αναλύσει στον πίνακα έπρεπε να την υλοποιήσουμε και να τις δώσουμε υπόσταση προγραμματίζοντας κατάλληλα τις δύο μπάλες στο περιβάλλον προγραμματισμού scratch.


Ξεκινήσαμε λοιπόν προγραμματίζοντας πρώτα την μπάλα του ποδοσφαίρου. Στη διαδικασία αυτή ορίσαμε και χρησιμοποιήσαμε κατάλληλα τις μεταβλητές χ,y,x1,y1,x2,y2 και m για τις οποίες αναφερθήκαμε στην ανάλυση που παρουσιάσαμε παραπάνω. Χρησιμοποιώντας κατάλληλα τις μεταβλητές αυτές σε συνδυασμό με μια διαδικασία επανάληψης η οποία σταματάει όταν η μπάλα του ποδοσφαίρου αγγίξει την μπάλα του baseball, καταφέραμε μετά από αρκετές δυσκολίες να προγραμματίσουμε σωστά την μπάλα μας ώστε να ακολουθεί την σωστή τροχιά. (Εδώ βλέπετε ένα μικρό δείγμα της προσπάθειας αυτής).


Σε αυτή την προσπάθεια η μπάλα του baseball παρέμενε σταθερή. Με έκπληξη διαπιστώσαμε στη συνέχεια ότι ο αλγόριθμός μας δουλεύει ακόμα και στην περίπτωση που η δεύτερη μπάλα δεν είναι σταθερή αλλά κινείται. (Εδώ βλέπετε ένα δείγμα του αποτελέσματος αυτού).


Θα μπορούσαμε λοιπόν να κάνουμε το παιγνίδι μας λίγο πιο ενδιαφέρον, μεταφέροντας τον έλεγχο της μπάλας του baseball, στον χρήστη του παιγνιδιού χρησιμοποιώντας κατάλληλα τα βελάκια του πληκτρολογίου. Έτσι θα υλοποιούσαμε ένα παιγνίδι κυνηγητού με δύο μπάλες όπου η μπάλα του ποδοσφαίρου που την αποκαλούμε «έξυπνη» εντός εισαγωγικών βέβαια κυνηγάει την μπάλα του baseball, ενώ ο χρήστης του παιγνιδιού  προσπαθεί να την αποφύγει χρησιμοποιώντας κατάλληλα τα βελάκια του πληκτρολογίου.


Στήσαμε λοιπόν ένα κατάλληλο σκηνικό και ένα σενάριο παιγνιδιού όπου ο παίκτης (δηλαδή ο χρήστης του παιγνιδιού) θα πρέπει να οδηγήσει την μπάλα του baseball στη μωβ γραμμή αριστερά της οθόνης χωρίς η μπάλα του ποδοσφαίρου να αγγίξει την μπάλα του παίκτη μας. Με έκπληξη επίσης διαπιστώσαμε ότι η μπάλα του ποδοσφαίρου είναι αρκετά έξυπνη ώστε ο παίκτης να μη έχει καμιά δυνατότητα νίκης. Για να κάνουμε όμως το παιγνίδι μας πιο ενδιαφέρον και για να αφήσουμε κάποιο περιθώριο νίκης υλοποιήσαμε τον αλγόριθμο με τέτοιο τρόπο ώστε να υπάρχει αδύναμο σημείο. Ο παίκτης καλείται να ανακαλύψει αυτό το αδύναμο σημείο για να καταφέρει να νικήσει.


Αυτή η εφαρμογή που παρουσιάζεται ως παιγνίδι θα μπορούσε να εφαρμοστεί για να δώσει λύσεις σε διάφορα προβλήματα σε πολλούς και διαφορετικούς τομείς. Θα μπορούσε για παράδειγμα να είναι ο αλγόριθμος που θα οδηγούσε ένα ρομπότ προς ένα αντικείμενο είτε σταθερό είτε κινούμενο. Θα μπορούσε ακόμα να είναι και ο αλγόριθμος που θα οδηγούσε ένα αυτοκίνητο προς την κατεύθυνση κάποιου αντικειμένου μέσα σε ένα γήπεδο. Ή ο οδηγός ενός ατόμου με προβλήματα όρασης μέσα σε ένα χώρο.
Μέσα από την εφαρμογή αυτή, ανακαλύψαμε ότι τα μαθηματικά δεν είναι μια επιστήμη, που απλά χρησιμοποιείται για να λύνουμε ασκήσεις στο χαρτί, αλλά μπορεί να εφαρμοστεί στην πράξη και να δώσει απτά και χρήσιμα αποτελέσματα.


Επίσης  ανακαλύψαμε την πληροφορική ως επιστήμη και όχι απλά ως μια δεξιότητα όπως τείνει να παρουσιαστεί τον τελευταίο καιρό. Καθώς και ότι πίσω από κάθε «έξυπνη» εφαρμογή που χρησιμοποιούμε μπορεί να κρύβονται πολύ απαιτητικές γνώσεις σε πολύ υψηλού επιπέδου μαθηματικά ή και άλλες επιστήμες.

 

Για μια ακόμη φορά τονίζουμε σε όλους τους τόνους ότι η πληροφορική δεν είναι απλά μια δεξιότητα αλλά μια πολύ απαιτητική σύγχρονη επιστήμη με εντυπωσιακά αποτελέσματα σε όλους τους τομείς της ανθρώπινής δραστηριότητας.

 

Μπράβο σε όλα τα παιδιά για την προσπάθεια τους, ιδιαίτερα ευχαριστούμε τους μαθητές:

 

Χρίστο Περάκη

Θεοδώρα Σαμπροβαλάκη

Ευδοκία Τσικαλουδάκη

 

για την συμμετοχή τους στην προετοιμασία και παρουσιάση της εργασίας.

 

Επιβλέπων καθηγητής

Μιχάλης Μπλαζαντωνάκης

κλάδου πληροφορικής