Σενάριο 17: Παιχνίδι μνήμης με εικόνες Ταυτότητα Σεναρίου Τίτλος: Παιχνίδι μνήμης με εικόνες Γνωστικό Αντικείμενο: Εφαρμογές Πληροφορικής-Υπολογιστών Διδακτική εργασίες. Ενότητα: Δημιουργικές προγραμματιστικών Διερευνώ - Δημιουργώ-Ανακαλύπτω, δραστηριότητες εργαλείων, με υπηρεσιών χρήση του πακέτων Internet, Συνθετικές λογισμικού, εκπαιδευτικού λογισμικού. Τάξη: Β' Λυκείου Εκτιμώμενη Διάρκεια: 5 ώρες Σύντομη ανασκόπηση σεναρίου Ιδέα που διέπει το σενάριο Στο πλαίσιο της εργασίας, οι μαθητές καλούνται να κατασκευάσουν ένα γνωστό παιχνίδι μνήμης. Η οθόνη δράσης περιλαμβάνει έναν πίνακα χωρισμένο σε 16 κελιά. Τα κελιά αυτά περιέχουν εικόνες από διάφορα κοχύλια. Κάθε κοχύλι επαναλαμβάνεται δύο φορές, σε τυχαία σημεία. Οι απεικονίσεις είναι καλυμμένες αρχικά (Εικόνα 16-1) και μόνο όταν ο χρήστης κάνει κλικ με το ποντίκι σε κάποιο κελί αποκαλύπτει την κρυμμένη εικόνα. Σελίδα 1
Σκοπός είναι με δύο συνεχείς «αποκαλύψεις» να εμφανιστούν δύο ίδιες εικόνες, οπότε και παραμένουν ανοιχτές (Εικόνα 16-2). Αν δεν επιτευχθεί αυτό, τα κελιά κλείνουν και πάλι. Ο χρήστης, πρέπει να θυμάται τις θέσεις των εικόνων που έχει ανοίξει ώστε κάθε φορά που ανοίγει κάποια να αναζητά το ζευγάρι της. Αν η μνήμη του είναι δυνατή, σύντομα θα καταφέρει να ανακαλύψει όλα τα ζεύγη και να τερματίσει έτσι το παιχνίδι (Εικόνα 16-3). Σελίδα 2
Τεχνολογικά εργαλεία που προτείνονται προς χρήση Σελίδα 3
, Ζωγραφική. Συσχέτιση γνωστικού αντικειμένου και σεναρίου Η υλοποίηση των συνθετικών εργασιών της ενότητας Διερευνώ-ΔημιουργώΑνακαλύπτω από τους μαθητές, στοχεύει στην εξοικείωσή τους με τα σύγχρονα προγραμματιστικά εργαλεία, μέσα από μια προσπάθεια εύρεσης ορθού και αποτελεσματικού τρόπου επίλυσης ενός δεδομένου προβλήματος. Στη συγκεκριμένη εργασία, οι μαθητές καλούνται να υλοποιήσουν ένα παιχνίδι που τους είναι ήδη γνωστό αφού κυκλοφορούν διάφορες υλοποιήσεις του στο εμπορίο. Ωστόσο, το πιθανότερο είναι να μην το έχουν δει ποτέ με μια «κατασκευαστική» ματιά. Στόχος λοιπόν είναι να περάσουν οι μαθητές από την πλευρά του χρήστηπαίκτη στην πλευρά του κατασκευαστή, να αναζητήσουν την ορθολογικότερη λύση και σε τελική φάση να αντιληφθούν πώς με καλά δομημένη λογική και με πλήρη αξιοποίηση των εργαλείων που διαθέτουν μπορούν να επιτύχουν την επιθυμητή λειτουργικότητα ευκολότερα από όσο φαντάζονταν αρχικά. Οι μαθητές λοιπόν προσπαθούν να δουν «πίσω από την εικόνα» και να αποφασίσουν πώς το πρόγραμμα θα ελέγχει τις κινήσεις του χρήστη και πώς θα αντιδρά σε αυτές. Προβληματίζονται δηλαδή για τους πράκτορες, τις απεικονίσεις και τις συμπεριφορές τους, αποφασίζουν για τις δομές ελέγχου και τις μεταβλητές και και τελικά συνδυάζουν όλα τα παραπάνω για να προγραμματίσουν τον κατάλληλο αλγόριθμο που οδηγεί στην λύση του προβλήματος. Ο εκπαιδευτικός πρέπει σε κάθε φάση να αφήσει ελεύθερους τους μαθητές να εκφράσουν τις απόψεις τους και έπειτα από αποτυχημένες προσπάθειες και συζήτηση να καταλήξουν στη λύση. Πρέπει να γίνουν αντιληπτά από τους μαθητές τα διακριτά στάδια ανάπτυξης ενός έργου λογισμικού (Σχεδίαση-Ανάλυση-Υλοποίηση-Έλεγχος). Εκπαιδευτικές δραστηριότητες Δραστηριότητα 1: «Παιχνίδι μνήμης με εικόνες» Γενικοί διδακτικοί στόχοι: Σελίδα 4
Να εξοικειωθούν με το προγραμματιστικό περιβάλλον. Να αποκτήσουν ορθολογική σκέψη στην προσπάθειά τους να επιλύσουν προγραμματιστικά κάποιο δοθέν πρόβλημα και να μπορούν να το αποδομήσουν κατάλληλα σε επιμέρους εργασίες. Να αντιληφθούν ότι φαινομενικά δύσκολα προβλήματα μπορούν να λυθούν με απλό και αποτελεσματικό τρόπο. Ειδικοί διδακτικοί στόχοι: Να μπορούν να ορίσουν τους απαραίτητους για ένα πρόβλημα πράκτορες και να αντιληφθούν την έννοια των διάφορων απεικονίσεων. Να κατανοήσουν την έννοια της συμπεριφοράς ενός πράκτορα και να την ταυτίσουν εννοιολογικά με το σύνολο των μεθόδων του. Να κατανοήσουν την έννοια των ιδιοτήτων ενός πράκτορα και να τις ταυτίσουν εννοιολογικά με τις μεταβλητές του πράκτορα. Να ξεκαθαρίσουν τους τρόπους κλήσης μίας μεθόδου και τον τρόπο που αντιδρά ο αντίστοιχος πράκτορας σε αυτή. Να αντιληφθούν τον τρόπο αλληλεπίδρασης της εφαρμογής με τον χρήστη μέσω συμβάντων του ποντικιού. Να ξεκαθαρίσουν την έννοια της μεταβλητής προσομοίωσης και της μεταβλητής πράκτορα. Προαπαιτούμενα: Για την υλοποίηση της συγκεκριμένης συνθετικής εργασίας πρέπει ο εκπαιδευτικός να έχει αποκτήσει εμπειρία στη δημιουργία προσομοιώσεων με το προγραμματιστικό περιβάλλον Αgentsheets και να έχει υλοποιήσει τουλάχιστον την προσομοίωση Virus Attack. Το ίδιο ισχύει και για τους μαθητές. Χρονισμός εφαρμογής: Η εκτιμώμενη διάρκεια υλοποίησης της εργασίας είναι 5 διδακτικές ώρες που πρέπει να γίνουν απαραίτητα στο σύνολό τους στο εργαστήριο πληροφορικής. Η Σελίδα 5
δομή της δραστηριότητας είναι έτσι ώστε να μπορεί να υλοποιηθεί σε δίωρα ή ακόμα και σε μονόωρα ανάλογα με τις εκάστοτε συνθήκες και την ανταπόκριση των μαθητών. Προετοιμασία: Για την υλοποίηση της δραστηριότητας θα πρέπει να υπάρχει στο σχολικό εργαστήριο εγκατεστημένο το. Επίσης, η χρήση του βιντεοπροβολέα για την επίδειξη της υλοποιημένης λύσης του κάθε προβλήματος από τον εκπαιδευτικό, θα βοηθούσε στην αποτελεσματικότερη ροή της δραστηριότητας μέσα στα πλαίσια της μιας διδακτικής ώρας. Ανάλογα με το δυναμικό της τάξης, ο εκπαιδευτικός μπορεί να αποφασίσει εάν οι μαθητές θα δουλέψουν στο με ήδη δημιουργημένες τις οντότητες (πράκτορες) ή αν θα τις δημιουργήσουν μόνοι τους χρησιμοποιώντας τα σχεδιαστικά εργαλεία του περιβάλλοντος. Τέλος, το βοηθητικό υλικό για την υλοποίηση της δραστηριότητας από τους μαθητές βρίσκεται στο φάκελο Σενάριο_17_Μαθητής που θα πρέπει να αντιγράψει ο εκπαιδευτικός στον κατάλογο «Τα Έγγραφα μου» κάθε υπολογιστή που θα χρησιμοποιήσουν οι μαθητές. Το αντίστοιχο βοηθητικό υλικό για τον εκπαιδευτικό βρίσκεται στο φάκελο Σενάριο_17_Εκπαιδευτικός, που θα πρέπει να αντιγράψει ο εκπαιδευτικός στον κατάλογο «Τα Έγγραφα μου» στον υπολογιστή τον οποίο θα χρησιμοποιεί σε συνδυασμό με τον βιντεοπροβολέα. Ροή της δραστηριότητας: Βήμα 1ο (Διάρκεια: 1 διδακτική ώρα) Σε πρώτη φάση ο διδάσκων θα πρέπει να εισάγει τους μαθητές στο νόημα της εργασίας. Θα διατυπώσει το πρόβλημα αναλυτικά και θα το επιδείξει με τη βοήθεια του βιντεοπροβολέα, ώστε να γίνει πλήρως αντιληπτή από τους μαθητές η επιθυμητή λειτουργικότητα (Εικόνες 17-1, 2 και 3). Οι μαθητές πρέπει να έχουν πλήρη γνώση της ακριβούς συμπεριφοράς του παιχνιδιού προκειμένου να συμμετέχουν ενεργά στην υλοποίησή του στα επόμενα βήματα. Να γίνει έπειτα αναφορά των διαφόρων αντικειμένων που θα υπάρχουν στο πεδίο δράσης. Τα αντικείμενα αυτά να ονομαστούν πράκτορες και να γίνει επεξήγηση της έννοιας των διαφορετικών απεικονίσεων. Έπειτα να οριστούν οι απαραίτητοι Σελίδα 6
πράκτορες, τα ονόματα, οι απεικονίσεις τους, και να συζητηθεί η συμπεριφορά του καθενός. Οι προτεινόμενοι Πράκτορες: Πράκτορας Εικόνα: Πρόκειται για τον πράκτορα των διαφόρων εικονιδίων (κοχύλια) που βρίσκονται στα κελιά του πίνακα του παιχνιδιού και αρχικά είναι καλυμμένα. Το πλήθος των απεικονίσεών του ισούται με το πλήθος θέσεων του πίνακα διά δύο, αφού κάθε εικόνα εμφανίζεται δύο φορές στο παιχνίδι. Πράκτορας Κάλυμμα: Τα αντικείμενα τύπου Κάλυμμα τοποθετούνται πάνω από τα αντικείμενα τύπου Εικόνα προκειμένου να κρύψουν την απεικόνιση των τελευταίων. Ο πράκτορας Κάλυμμα έχει μόνο μία απεικόνιση. Οι μαθητές ενεργοποιούν έπειτα το πρόγραμμα Agentsheets προκειμένου να δημιουργήσουν τους παραπάνω πράκτορες. Επιλέγουν Αρχείο->Νέο Έργο. Καθορίζουν το όνομα έργου και τις διαστάσεις των πρακτόρων. Σημειώνεται ότι όλοι οι πράκτορες ενός έργου έχουν τις ίδιες διαστάσεις και αυτές δεν είναι δυνατό να αλλάξουν μετά την δημιουργία του. Γίνεται εστίαση στην Εικονοθήκη του έργου ( 4), που στη φάση αυτή είναι κενή και εξετάζονται οι επιλογές πάνω σε αυτή. Για την δημιουργία νέου πράκτορα επιλέγεται το αντίστοιχο κουμπί Νέος Πράκτορας, ενώ για τις διάφορες απεικονίσεις Νέα Απεικόνιση, έχοντας πάντα Σελίδα 7
επιλεγμένο τον πράκτορα για τον οποίο προορίζεται η απεικόνιση. Με διπλό κλικ επάνω σε μια απεικόνιση ή με την επιλογή Επεξεργασία απεικόνισης, την τροποποιούμε με δύο τρόπους: είτε κάνοντας χρήση των σχεδιαστικών εργαλείων που προσφέρονται, είτε εισάγοντας εικόνα από εξωτερικό αρχείο με Αρχείο>Εισαγωγή Εικόνας ( 5). Για τις απεικονίσεις του πράκτορα Εικόνα οι μαθητές μπορούν να εισάγουν τις δοθείσες εικόνες. Εναλλακτικά μπορούν να σχεδιάσουν μόνοι τους τις απεικονίσεις με τα σχεδιαστικά εργαλεία που προσφέρονται ή ακόμη και να δημιουργήσουν εικόνες στη Ζωγραφική και έπειτα να τις εισάγουν. Με τον τελευταίο τρόπο μπορούν ακόμη και να γράψουν τα ονόματά τους (με το εργαλείο κειμένου της Ζωγραφικής), να τα εισάγουν ως εικόνες στις απεικονίσεις και να δώσουν έτσι ένα διαφορετικό ύφος στο παιχνίδι. Για την απεικόνιση του πράκτορα Κάλυμμα ισχύουν τα ίδια. Οι πράκτορες είναι τώρα έτοιμοι ( 6). Σελίδα 8
Βήμα 2ο (Διάρκεια: 1 διδακτική ώρα) Στο στάδιο αυτό θα δημιουργηθεί το Πεδίο Εργασίας του παιχνιδιού. Οι μαθητές επιλέγουν Αρχείο->Νέο Πεδίο Εργασίας και ανοίγει ένα κενό πεδίο. Με Αρχείο>Φόρτωμα Φόντου εισάγουν το φόντο από τον φάκελο με τις Εικόνες. Έχοντας επιλεγμένο τον προς τοποθέτηση πράκτορα και με χρήση του εργαλείου εισαγωγής (Εικόνα17-7), τοποθετούνται στο πεδίο πρώτα οι απεικονίσεις και έπειτα από πάνω τα καλύμματα(εικόνες 17-8,9). Σελίδα 9
Με Αρχείο->Αποθήκευση αποθηκεύεται το έτοιμο πλέον Πεδίο Εργασίας. Ξεκινά ένας προβληματισμός για τον τρόπο «αποκάλυψης» των εικόνων κατά την εκτέλεση του παιχνιδιού. Στο σημείο αυτό γίνεται εκτενής αναφορά στις έννοιες μέθοδος και ενεργοποιητής. Αναφέρεται ότι ο κώδικας ενός προγράμματος δεν είναι ένα σύνολο εντολών που εκτελούνται σειριακά αλλά δομείται σε μεθόδους που αντιστοιχούν σε πράκτορες και εκτελούνται έπειτα από άκουσμα μηνυμάτων. Τα μηνύματα αυτά μπορεί να απευθύνονται σε συγκεκριμένο πράκτορα ή σε ομάδα πρακτόρων. Ακόμα, μπορεί να υπάρχουν μέθοδοι που εκτελούνται καθ' όλη τη διάρκεια λειτουργίας του προγράμματος και άλλες που εκτελούνται αυτόματα μόλις δημιουργηθεί κάποιος πράκτορας. Σελίδα 10
Κάθε πράκτορας αντιδρά στην κλήση συγκεκριμένων μεθόδων οι οποίες είναι ορισμένες στην συμπεριφορά του. Σε κάθε μέθοδο αποδίδεται ένα όνομα με το οποίο καλείται και μία σειρά δράσεων τις οποίες και εκτελεί. Δεν μπορεί ένας πράκτορας να αντιδράσει σε κλήση μεθόδου που δεν δηλώθηκε στον ίδιο. Δύο διαφορετικές μέθοδοι με το ίδιο όνομα, είναι δυνατό να οριστούν σε διαφορετικούς πράκτορες αλλά όχι στον ίδιο. Σελίδα 11
Να γίνει στο σημείο αυτό σύνδεση των παραπάνω με τους προκαθορισμένους Ενεργοποιητές ( 10) και αναφορά στη λειτουργία του καθένα. Να γίνει διάκριση του Ενεργοποιητή Στο άκουσμα και να διευκρινιστεί ότι είναι ο μόνος που καθορίζεται από τον χρήστη, και εκτελεί μία μέθοδο έπειτα από την ρητή της κλήση από άλλο αντικείμενο, ενώ οι υπόλοιποι καλούνται αυτόματα κάτω από ορισμένες συνθήκες. Για τον ακριβή τρόπο λειτουργίας των παραπάνω Ενεργοποιητών ο εκπαιδευτικός μπορεί να ανατρέξει στο εγχειρίδιο αναφορών του Agentsheets. Επανερχόμενοι στο θέμα της αποκάλυψης των εικόνων εισάγουμε τους μαθητές στην έννοια του συμβάντος ενεργοποίησης. Το ορίζουμε ως αποτέλεσμα κάποιας πράξης του χρήστη που όταν λαμβάνει χώρα, ο πράκτορας που το δέχεται εκτελεί κάποια ορισμένη λειτουργία. Προφανώς, στην περίπτωσή μας το συμβάν αυτό είναι το κλικ του ποντικιού. Ο πράκτορας που θα «ακούει» το συμβάν αυτό, λέγεται ακροατής και είναι ο πράκτορας Κάλυμμα. Σε πρώτη φάση το μόνο που θέλουμε να γίνεται είναι με κλικ επάνω σε πράκτορα Κάλυμμα να εμφανίζεται η εικόνα που κρύβει από κάτω. Αφού γίνουν σαφή τα παραπάνω περνάμε στην φάση προγραμματισμού αυτής της συμπεριφοράς του πράκτορα Κάλυμμα. Οι μαθητές τον επιλέγουν στην Εικονοθήκη και είτε κάνουν διπλό κλικ, είτε δεξί κλικ και Επεξεργασία Συμπεριφοράς και ανοίγουν έτσι το παράθυρο Συμπεριφοράς του ( 11). Σελίδα 12
Παρατηρούμε ότι ο Ενεργοποιητής της υπάρχουσας (κενής) μεθόδου είναι ο «Κατά τη λειτουργία». Ρωτάμε τα παιδιά αν είναι κατάλληλος για τη συμπεριφορά που θέλουμε να ορίσουμε και αποφασίζουμε να τον αλλάξουμε σε «Ποντίκι». Για το σκοπό αυτό κάνουμε δεξί κλικ στην ετικέτα της μεθόδου και Αλλαγή Ενεργοποιητή->Ποντίκι. Εξετάζουμε τους τροποποιητές (Modifiers) στη λίστα που εμφανίζεται και κάνουμε μικρό σχολιασμό. Εδώ προτείνεται να χρησιμοποιηθεί κάποιος από αυτούς (π.χ right), γιατί στο περιβάλλον Agentsheets τα συμβάντα του ποντικιού αναγνωρίζονται ακόμη και όταν η προσομοίωση δεν είναι σε κατάσταση εκτέλεσης, γεγονός που μπορεί να προκαλέσει σύγχυση. Μπορούμε αφού υλοποιηθεί η προσομοίωση να απομακρύνουμε τον τροποποιητή αυτό. Ακολουθεί η απόφαση για τη δράση που θα λαμβάνει χώρα κάθε φορά που θα γίνεται κλικ σε πράκτορα Κάλυμμα. Οι μαθητές επιλέγουν Εργαλεία->Συλλογή Δράσεων ( 12) και εξετάζουν τις δράσεις που προσφέρονται. Για να αποκαλυφθεί η κρυμμένη εικόνα πρέπει να υποχωρήσει το Κάλυμμα που δέχεται το κλικ. Επιλέγεται λοιπόν η δράση «Εξαφανίζω», γίνεται αναφορά στη λειτουργία της, και προστίθεται στη μέθοδο ( 13). Σελίδα 13
Γίνεται έπειτα έλεγχος της λειτουργικότητας, κατά τη διάρκεια του οποίου αναφέρονται επιγραμματικά οι συμπεριφορές που πρέπει να προγραμματιστούν την επόμενη ώρα. Θα πρέπει όποτε ανοίγουν δύο συνεχόμενα καλύμματα να γίνεται σύγκριση των εικόνων και αν είναι διαφορετικές να κλείνουν και πάλι. Βήμα 3ο (Διάρκεια: 1 διδακτική ώρα) Ζητάμε από τους μαθητές να προβληματιστούν για τον τρόπο σύγκρισης δύο ανοιχτών εικόνων. Αναφέρεται ότι δεν υπάρχει προκαθορισμένη συνθήκη για σύγκριση απεικονίσεων, παρά μόνο αριθμητικών τιμών. Προτείνεται λοιπόν η απόδοση μίας μοναδικής αριθμητικής τιμής σε κάθε απεικόνιση του πράκτορα Εικόνα, που να εξυπηρετεί το σκοπό μας. Η απόδοση των τιμών αυτών πρέπει να γίνεται στην αρχή του Σελίδα 14
παιχνιδιού. Στο στάδιο αυτό θα οριστεί στη συμπεριφορά του πράκτορα Εικόνα που κάνει αυτή ακριβώς τη δουλειά. Με Εργαλεία->Συλλογή Συνθηκών και Εργαλεία->Συλλογή Δράσεων εξετάζονται για άλλη μια φορά οι δράσεις και οι συνθήκες και πιο συγκεκριμένα η συνθήκη Δω και η δράση Θέτω την ιδιότητα ίσο με. Ο εκπαιδευτικός μπορεί να ανατρέξει στο εγχειρίδιο αναφορών του Agentsheets προκειμένου να επεξηγήσει τη λειτουργία τους. Ακολουθεί η υλοποίηση της μεθόδου ( 14). Η ιδιότητα value είναι η μοναδική τιμή που περιγράφηκε παραπάνω. Να γίνει ταύτιση της έννοιας ιδιότητα και μεταβλητή. Όπως η συμπεριφορά ενός πράκτορα περιγράφεται από τις μεθόδους του, έτσι οι ιδιότητές του περιγράφονται από τις μεταβλητές. Η μεταβλητή value λοιπόν είναι μεταβλητή πράκτορα. Κάθε Σελίδα 15
πράκτορας τύπου Εικόνα δηλαδή, θα έχει μία μεταβλητή value που τον χαρακτηρίζει. Στο σημείο αυτό έχει οριστεί η μέθοδος ανάθεσης των τιμών, αλλά ακόμη κι αν εκτελεστεί τώρα η προσομοίωση κανένας πράκτορας Εικόνα δεν θα αποκτήσει τιμή value γιατί η μέθοδος initialize δεν καλείται πουθενά. Το ερώτημα τώρα είναι πώς και πού θα καλείται η μέθοδος αυτή. Μπορεί να κληθεί «κατά τη λειτουργία» του πράκτορα Εικόνα; Η απάντηση είναι ναι, όμως υπό συνθήκη. Αν εισάγουμε κλήση της μεθόδου initialize σε μέθοδο που εκτελείται «κατά τη λειτουργία», η ανάθεση των τιμών θα γίνεται συνεχώς και δεν θα σταματήσει ποτέ μέχρι τον τερματισμό της προσομοίωσης. Αυτό που χρειάζεται είναι να εκτελείται μία μόνο φορά για κάθε πράκτορα. Αυτό επιτυγχάνεται με μία νέα μεταβλητή πράκτορα, τη set (15). Αν η μεταβλητή set είναι 0, που σημαίνει ότι ο πράκτορας Εικόνα δεν έχει πάρει τιμή για την value, τότε εκτελεί τη μέθοδο της ανάθεσης (initialize) και έπειτα θέτει τη set ίση με 1, ώστε να μην επαναληφθεί η απόδοση τιμής. Γίνεται έλεγχος της παραπάνω υλοποίησης. Οι μαθητές επιλέγουν run, εξαφανίζουν με το ποντίκι κάποιο κάλυμμα για να αποκτήσουν πρόσβαση σε πράκτορα Εικόνα, έπειτα επιλέγουν τον τελευταίο και Εργαλεία->Ιδιότητες Πράκτορα για να ελέγξουν τη τιμή της μεταβλητής value ( 16). Σελίδα 16
Έχει αρχίσει τώρα να γίνεται περισσότερο ξεκάθαρος ο τρόπος που θα λειτουργεί το παιχνίδι: Στο πρώτο κλικ σε κάλυμμα, θα δεσμεύεται η τιμή της Εικόνας που αποκαλύπτεται και θα φυλάγεται σε μια μεταβλητή προσομοίωσης. Στο δεύτερο κλικ θα δεσμεύεται η τιμή της δεύτερης Εικόνας και θα γίνεται η σύγκριση. Πώς όμως θα γίνεται η προσπέλαση της ανοιχτής Εικόνας, ώστε να πάρουμε την τιμή της; Μελετάμε τη συνθήκη «Αν είμαι στοιβαγμένο κάτω από ένα». Από τη στιγμή που δεν υπάρχει συνθήκη με άρνηση, δηλαδή της μορφής «αν δεν είμαι στοιβαγμένο κάτω από», πρέπει να σκαρφιστούμε άλλο τρόπο. Θα θεωρούμε όλες τις εικόνες ανοιχτές και έπειτα με χρήση της συνθήκης «Αν είμαι στοιβαγμένο κάτω από ένα», θα ξεχωρίζουμε αυτές που είναι κλειστές και έτσι με έμμεσο τρόπο θα έχουμε πρόσβαση στην ανοιχτή Εικόνα. Πρέπει να αποδώσουμε στους πράκτορες Εικόνα μια μεταβλητή πράκτορα που να δηλώνει την κατάστασή τους. Η μεταβλητή αυτή θα ονομαστεί open. Αν ένας πράκτορας Εικόνα είναι καλυμμένος, η open θα έχει τιμή 0. Αν ανοίξει για να ελεγχθεί θα έχει τιμή open=1. Αν έχει παραμείνει ανοιχτός επειδή έχει ήδη ελεγχθεί και βρέθηκε με το ζευγάρι του έχει open=2. Σελίδα 17
Θα αλλάξουμε τη μέθοδο του πράκτορα Κάλυμμα που ενεργοποιείται με το κλικ του ποντικιού ( 17) με τρόπο ώστε: στο πρώτο κλικ να θέτει σε όλες τις εικόνες open=1 (μέθοδος open), έπειτα να θέτει στις κλειστές open=0 (μέθοδος check_for_closed), τέλος να αποδίδει σε μια μεταβλητή προσομοίωσης (@value1) την τιμή της Εικόνας που άνοιξε (μέθοδος check1). Στο δεύτερο κλικ, να θέτει σε όλες τις εικόνες open=1, έπειτα να θέτει στις κλειστές open=0, να αποδίδει σε μια δεύτερη μεταβλητή προσομοίωσης (@value2) την τιμή της Εικόνας που άνοιξε (μέθοδος check2) και τέλος να κάνει τη σύγκριση (μέθοδος compare). Σελίδα 18
Για να γίνεται διάκριση μεταξύ πρώτου και δεύτερου κλικ, χρησιμοποιείται η μεταβλητή προσομοίωσης @turn. Αν turn=0, είναι το πρώτο κλικ, αν turn=1 πρόκειται για το δεύτερο. Αφού γίνουν τα παραπάνω ξεκάθαρα στους μαθητές μελετούν τις δράσεις Εκπέμπω και Κάνω. Επεξηγείται η λειτουργία τους. Και οι δύο δράσεις προκαλούν κλήση μεθόδου. Στην περίπτωση του Εκπέμπω αποδέκτες είναι όλοι οι πράκτορες που υπάρχουν στο πεδίο και ανήκουν σε συγκεκριμένο τύπο που αναφέρεται ως παράμετρος στην δράση. Στην περίπτωση του Κάνω, ένας μοναδικός πράκτορας δέχεται την κλήση της μεθόδου, η οποία και είναι ορισμένη στην συμπεριφορά του. Υλοποιείται η μέθοδος όπως φαίνεται στην 17 και την επόμενη ώρα θα προγραμματιστούν οι νέες μέθοδοι που καλούνται από αυτή. Βήμα 4ο (Διάρκεια: 1 διδακτική ώρα) Στο στάδιο αυτό συζητάμε με τους μαθητές τις συμπεριφορές που πρέπει να προστεθούν στους πράκτορες Εικόνα και Κάλυμμα. Ξαναβλέπουμε τη μέθοδο που ορίστηκε στο Κάλυμμα και λέμε ότι πρέπει να υλοποιήσουμε συγκεκριμένα στον πράκτορα Εικόνα τις μεθόδους Open, check_for_closed, check1 και check2 και στον πράκτορα Κάλυμμα τη μέθοδο compare. Υπενθυνίζουμε ότι η μέθοδος Open σε συνδυασμό με την check_for_closed ( 18) προκαλεί έμμεση προσπέλαση της ανοιχτής κάθε φορά Εικόνας. Υπενθυμίζουμε επίσης το ρόλο της μεταβλητής open (0-κλειστό,1-ανοιχτό προς έλεγχο, 2-ανοιχτό και ήδη ελεγμένο). Υλοποιούνται οι δύο αυτές μέθοδοι. Σελίδα 19
Εικόνα 17 Περνάμε στις μεθόδους που δεσμεύουν τις τιμές των ανοιχτών εικόνων, check1 και check2 ( 19). Εικόνα 17 Οι μέθοδοι αυτές εκτελούνται από όλες τις Εικόνες αφού καλούνται μέσω της δράσης Εκπέμπω με το κλικ σε κάλυμμα. Η συνθήκη open=1, όμως λειτουργεί σαν Σελίδα 20
φίλτρο και μόνο για την ανοιχτή εικόνα γίνεται η απόδοση της τιμής. Εμφανίζεται και μία νέα μεταβλητή, η checked. Αυτή χρησιμοποιείται γιατί στο δεύτερο άνοιγμα, υπάρχει ήδη ανοιχτή μία Εικόνα (οpen=1), αλλά θέλουμε την τιμή της δεύτερης. Έτσι όποτε γίνεται δέσμευση της τιμής μιας ανοιχτής Εικόνας αυτή «τσεκάρεται» (checked=1), ώστε να μην ελεγχθεί ξανά. Απομένει να υλοποιηθεί ο έλεγχος με την μέθοδο compare ( 20). Αν οι μεταβλητές value1 και value2 έχουν ίδιες τιμές, γεγονός που σημαίνει ότι άνοιξαν δύο ίδιες εικόνες, αυτές πρέπει να παραμείνουν ανοιχτές, διαφορετικά πρέπει να κλείσουν και πάλι μετά από μικρή αναμονή. Περνάμε στην υλοποίηση των μεθόδων correct και close ( 21). Αν ο παίκτης ανοίξει δύο διαφορετικές Εικόνες (close), αυτές εντοπίζονται με την συνθήκη open=1 και έπειτα κλείνουν και πάλι. Να μελετηθεί εδώ η δράση δημιουργώ. Έπειτα οι ιδιότητες open και checked επανέρχονται στην τιμή μηδέν, ώστε στην επόμενη προσπάθεια του παίκτη να είναι δυνατός ο έλεγχος. Αν έχουμε επιτυχία (correct), το ζεύγος των Εικόνων που άνοιξαν αποκτά τιμή 2 για την ιδιότητα open, για να μην ελεγχθεί ξανά σε επόμενη προσπάθεια. Σελίδα 21
Οι μαθητές μπορούν να ελέγξουν τώρα το παιχνίδι. Βήμα 5ο (Διάρκεια: 1 διδακτική ώρα) Η τελευταία ώρα της εργασίας προσφέρεται για να γίνουν βελτιώσεις στη λειτουργία του παιχνιδιού. Η περισσότερο προφανής αδυναμία στην υπάρχουσα υλοποίηση είναι η στατικότητα, με την έννοια ότι ο χρήστης παίζει συνεχώς στο ίδιο ταμπλό. Αυτό που θέλουμε να επιτύχουμε μέχρι το τέλος αυτού του βήματος είναι η δυνατότητα νέου παιχνιδιού. Θα προστεθεί δηλαδή ένα κουμπί με τίτλο «Νέο παιχνίδι», το οποίο θα αλλάζει τυχαία τις θέσεις των εικόνων, θα τις εμφανίζει για πολύ μικρό διάστημα και θα τις καλύπτει ξανά, ώστε να ετοιμάζει τον πίνακα για εκκίνηση νέου παιχνιδιού. Σελίδα 22
Ξεκινάμε μια αναζήτηση τρόπου τυχαίας αλλαγής των θέσεων των Εικόνων. Οι μαθητές ανοίγουν τη Συλλογή Δράσεων και εντοπίζουν τη δράση «Μετακινούμαι τυχαία πάνω σε». Ο πράκτορας που ακούει σε αυτό το μήνυμα μετακινείται τυχαία σε μια από τις άμεσα γειτονικές του θέσεις, μόνο αν αυτή έχει την απεικόνιση που ορίζεται ως παράμετρος στην κλήση της δράσης. Εντοπίζουμε την ανάγκη δημιουργίας νέου πράκτορα που θα μπει κάτω από τις εικόνες και θα χρησιμοποιηθεί ως παράμετρος στην κλήση των Εικόνων να μετακινηθούν τυχαία. Ο πράκτορας αυτός θα ονομαστεί Φόντο και η απεικόνισή του μπορεί να είναι απλώς ένα γεμάτο ορθογώνιο ( 22). Δημιουργούμε έναν ακόμη πράκτορα για το κουμπί νέου παιχνιδιού. Τον ονομάζουμε Επανεκκίνηση και για την απεικόνισή του είτε εισάγουμε τη διαθέσιμη εικόνα, είτε προτρέπουμε τα παιδιά να τη σχεδιάσουν μόνα τους ( 23). Σελίδα 23
Αν τώρα αφήσουμε τον πίνακα με τις 16 θέσεις ως έχει και βάλουμε πίσω από κάθε Εικόνα έναν πράκτορα Φόντο, η κλήση της δράσης Μετακινούμαι Τυχαία δεν θα έχει κανένα αποτέλεσμα, γιατί δεν υπάρχει «χώρος» για μετακίνηση. Κάθε εικόνα βλέπει στις γειτονικές της θέσεις πράκτορες τύπου Εικόνα, οπότε δεν μετακινείται. Πρέπει κάποια θέση του πίνακα να καταληφθεί μόνο από έναν πράκτορα Φόντο. Αυτό όμως κάνει τις διαθέσιμες για εικόνες θέσεις 15 που είναι περιττός αριθμός και δεν εξυπηρετεί. Θα αλλάξουμε τη διάσταση του πίνακα σε 5x5 και θα προσθέσουμε στον πράκτορα Εικόνα 4 απεικονίσεις ακόμη (Να είναι συνολικά 12). Σελίδα 24
Δημιουργούμε Νέο πεδίο Εργασίας, στο οποίο και τοποθετούμε το κουμπί, 25 πράκτορες τύπου Φόντο ( 24), 24 πράκτορες τύπου Εικόνα (Εικόνα 17-25) και πάνω από κάθε Εικόνα άλλους 24 πράκτορες Κάλυμμα ( 26). Σελίδα 25
Αποθηκεύουμε το δεύτερο αυτό πεδίο εργασίας. Προσθέτουμε στη συμπεριφορά του πράκτορα Εικόνα τη μέθοδο που θα αλλάζει θέσεις στις Εικόνες (Εικόνα 17 27). Εικόνα 17 Μεταφερόμαστε έπειτα στη συμπεριφορά του πράκτορα Επανεκκίνηση. Προσθέτουμε μέθοδο που ενεργοποιείται με το ποντίκι ( 28). Σελίδα 26
Υπενθυμίζουμε ότι πρέπει οι νέες θέσεις των Εικόνων να εμφανιστούν για λίγο προτού ξεκινήσει το νέο παιχνίδι, οπότε πρέπει να ανοίξουν τα καλύμματα, και έπειτα να κληθεί η randomize που προκαλεί την αλλαγή των θέσεων. Η μέθοδος open του πράκτορα Κάλυμμα φαίνεται στην 29. Να σημειωθεί εδώ πως η μέθοδος αυτή έχει ίδιο όνομα με την open του πράκτορα Εικόνα, αλλά δεν προκαλείται καμία σύγχυση αφού ορίζονται σε διαφορετικούς πράκτορες. Σελίδα 27
Εικόνα 17 Μελετάμε έπειτα τη μέθοδο randomize. Η μέθοδος αυτή εκπέμπει move_rand στον πράκτορα Εικόνα. Αν γίνει εκπομπή της move_rand μία φορά, μόνο μια εικόνα θα αλλάξει θέση, καθώς μία είναι αυτή που έχει σε γειτονική θέση Φόντο. Για να επιτύχουμε το σκοπό μας, θα αναγκάσουμε την randomize να εκτελείται 100 φορές. Αυτό επιτυγχάνεται με την μεταβλητή προσομοίωσης @rand_times, η οποία αυξάνεται κατά ένα όποτε γίνεται μία κλήση των Εικόνων για μετακίνηση και αν είναι μικρότερη από 100, ξανακαλεί τη randomize (αναδρομή). Όταν η rand_times γίνει 100 έχουν εκτελεστεί 100 μετακινήσεις, επαληθεύεται μόνο ο δεύτερος κανόνας της randomize και η rand_times μηδενίζεται για να είναι «καθαρή» για την επόμενο «Νέο παιχνίδι». Τέλος, πρέπει εδώ να κλείσουν και πάλι τα καλύμματα και αυτό γίνεται με την close_icons που ορίζεται στον πράκτορα Εικόνα ( 30). Η close_icons δημιουργεί Κάλυμμα πάνω από κάθε Εικόνα και επαναθέτει τις ιδιότητες open και checked ίσες με μηδέν, για να ξεκινήσει το νέο παιχνίδι. Σελίδα 28
Με Αρχείο->Άνοιγμα πεδίου Εργασίας οι μαθητές μπορούν να επιλέξουν όποια έκδοση του παιχνιδιού θέλουν και να τη δοκιμάσουν. Προτάσεις για επεκτάσεις ή διαφοροποιήσεις Στο φάκελο «Σενάριο 17_Παιχνίδι μνήμης με εικόνες \ Σενάριο_17_Εκπαιδευτικός \ Προσομοίωση_Παιχνίδι Μνήμης» παρατίθεται η προσομοίωση σε μορφή πηγαίου προγράμματος. Ο εκπαιδευτικός μπορεί να επέμβει δημιουργώντας τις δικές του παραλλαγές επεκτάσεις στην παρούσα δραστηριότητα. Σελίδα 29