Κεφάλαιο 12

=12. Μπορείς να το κάνεις όσο.. (Για πάντα-εάν / περίμενε ώσπου / επανέλαβε ώσπου / αισθητήρες-τελεστές)=

__**Ομάδα Διαδικτυακών πόρων**__
===**Προτεινόμενοι σύνδεσμοι :**===

1.[] Αυτό το link περιέχει το ενδιαφέρον παράδειγμα (ελικοπτεράκι), το οποίο περιέχει πολλές εντολές (forever-if)

2.[] Περιέχει το παράδειγμα Interactive logo που περιλαμβάνει την εντολή (forever-if) σε συνδυασμό με τις εντολές των αισθητήρων

3.[]l Παραδείγματα και επεξηγήσεις για ολες τις εντολές της παλέτας έλεγχος(Μπορείτε εύκολα να ξεχωρίσετε τις εντολές Για πάντα-εάν/περίμενε ώσπου/επανέλαβε ώσπου).

4.[] Σε αυτόν τον σύνδεσμο περιλαμβάνονται μεταξύ άλλων το παράδειγμα bouncing basketball που συνδυάζει την έννοια της επανάληψης και του broadcast.

5. [] Σε αυτό το σύνδεσμο υπάρχουν σχετικά άρθρα σχετικά με το Scratch, ένας ελληνικός οδηγός για το Scratch, καθώς και 2 σενάρια μαθήματος:1 για τις ακολουθιακές δομές, τις δομές επανάληψης και τους εμφωλευμένους βρόγχους

6.[|http://pages.cs.wisc.edu/~dusseau/catapult.html] Ένας σύνδεσμος με ενδιφέρουσες δραστηριότητες στο Scratch.Το catch those letters (προσπαθούμε να πιάσουμε τα γράμματα του ονόματος μας που κινούνται στη σκηνή)-(περιέχει κυρίως ενολές αλλαγής της σκηνής, κίνησης, τυχαιότητας και εντολές αισθητήρων). Οι εντολές τυχαιότητες μπορούν να προστεθούν στη συνέχεια από το αντίστοιχο κεφάλαιο.

//__12. Μπορείς να το κάνεις όσο.. (Για πάντα-εάν / περίμενε ώσπου / επανέλαβε ώσπου / αισθητήρες-τελεστές)__// // Μαθησιακοί στόχοι // Να κατανοούν τη χρησιμότητα των υπο-συνθήκη εντολών επανάληψης Να μπορούν να αναγνωρίσουν παραδείγματα των υπο-συνθήκη εντολών επανάληψης σε προγράμματα καθημερινής χρήσης (π.χ. παιχνίδια). Να κατανοούν τις διαφορετικές κατηγορίες συνθηκών που μπορούν να οριστούν στο Scratch (επανάληψη και επέκταση του προηγούμενου κεφαλαίου) Να κατανοούν την αξία και να διακρίνουν τις διαφορές της προελεγχόμενης και της μεταελεγχόμενης επανάληψης Να αναγνωρίζουν τη λειτουργία των εντολών // **"** // Για πάντα-εάν / περίμενε ώσπου / επανέλαβε ώσ που **"**. Να κατανοούν και να αξιοποιούν ποικιλία λόγων διακοπής μιας επανάληψης με τους όρους του Scratch (από τις διαφορετικές παλέτες και σε διαφορετικές εφαρμογές). Να είναι σε θέση να συνθέτουν εντολές επανάληψης αυτής της μορφής//.// Να εντοπίζουν τη διαφορά των επαναληπτικών δομών // **"** // Για πάντα-εάν / περίμενε ώσπου / επανέλαβε ώσ που **" // και //****//"Για πάντα//// ... ////Επανέλαβε"//**// και **"Επανέλαβε τόσες φορές"** που διδάχτηκαν στο κεφάλαιο 10. // //Χαρακτηριστικά// Υπο συνθήκη επαναλήψεις, προελεγχόμενη και μεταελεγχόμενη επανάληψη Παραδείγματα από καθημερινότητα Δυνατότητες συνθηκών στο Scratch Μελέτη πραγματικών περιπτώσεων υπο-συνθήκη επαναλήψεων στο Scratch Εκμάθηση των εντολών **"** ** Για πάντα-εάν / περίμενε ώσπου / επανέλαβε ώσπου ** **"** της παλέτας Έλεγχος//.// Εκμάθηση της χρήσης των τελεστών από την παλέτα Τελεστές μέσα στις εντολές **"**// Για πάντα-εάν / περίμενε ώσπου / επανέλαβε ώσ που**" - (περιορισμένη χρήση).** //Παραδείγματα// Ένα απλό παράδειγμα που να συνδυάζει τις εντολές // **"** // Για πάντα-εάν / περίμενε ώσπου / επανέλαβε ώσ που **"// και //****//"Για πάντα//// ... ////Επανέλαβε"//**// και **"Επανέλαβε τόσες φορές"** που διδάχτηκαν στο κεφάλαιο 10. // Το απρόβλεπτο τραμπολίνο (Γραμμική εξέλιξη του παραδείγματος «χορεύοντας στο τραμπολίνο» του κεφαλαίου 8 όπου ο χαρακτήρας κινείται πάνω σε μία ευθεία, επαναληπτικά, κι αν συναντήσει κάποιο συγκεκριμένο χρώμα πχ (κόκκινο) αλλάζει κατεύθυνση κατά 180 μοίρες) // Ξαναπέστο μέχρι να κουραστείς (Γραμμική εξέλιξη του παραδείγματος "Συγχρονίσου με το συνομιλητή σου" από το κεφάλαιο 9 όπου ο χαρακτήρας εμφανίζει το μήνυμα που θέλει να πει στον συνομιλητή του, μέχρι να περάσει κάποιο συγκεκριμένο χρονικό διάστημα στο οποίο θεωρούμε ότι αυτός κουράζεται). Μπορείτε να στηριχτείτε σε νέα παραδείγματα και να προτρέψουμε τους μαθητές να βελτιώσουν τα προηγούμενα παραδείγματα μόνοι τους //
 * Εκμάθηση της χρήσης των αισθητήρων από την παλέτα Τελεστές μέσα στις εντολές **" //** Για πάντα-εάν / περίμενε ώσπου / επανέλαβε ώσ που**".
 * (Σχόλιο: Το χρονόμετρο από τους Αισθητήρες θα διδαχθεί παρακάτω στο κεφάλαιο 14 των μεταβλητών.) **

=**// Διάρθρωση Κεφαλαίου 12 //**=

__Πρόλογος__

Στο καφάλαιο αυτό σκοπός μας είναι να εισάγουμε τις εντολές επανάληψης "Για πάντα...εάν", "Περίμενε ώσπου" και "Επανέλαβε ώσπου". Όπως αναφέρθηκε και στο κεφάλαιο 10 η έννοια της **επανάληψης** παίζει κυρίαρχο ρόλο στην καθημερινότητά μας, τις περισσότερες φορές χωρίς να το συνειδητοποιούμε. Υπάρχουν ενέργειες που θα κάνουμε **για πάντα** όπως το να τρεφόμαστε και να πίνουμε νερό, **εάν** θέλουμε να επιβιώσουμε, και ενέργειες που 8α επαναλαμβάνουμε ώσπου να ικανοποιήσουμε κάποιες ανάγκες ή επιθυμίες. Για παράδειγμα, όταν βρίσκεστε στο σχολείο, πόσες φορές ενώ παρακολουθείτε ένα βαρετό μάθημα **περιμένετε ώσπου** να χτυπήσει το κουδούνι για να βγείτε διάλειμμα; Πόσες φορές ως μέλη της χορωδίας έχετε **τραγουδήσει** ενα συγκεκριμένο κομμάτι **ξανά και ξανά** **ώσπου** οι φωνές να ακούγονται σαν μία; Όλα τα παραπάνω αποδεικνύουν ότι η επανάληψη αποτελεί αναπόσπαστο κομμάτι για την ύπαρξή μας και την οργάνωση της καθημερινότητάς μας.

12.1. Υπό συνθήκη εντολές επανάληψης Σ'αυτή την ενότητα θα εισάγουμε τις εντολές επανάληψης "Για πάντα...εάν","Περίμενε ώσπου","Επανέλαβε ώσπου",θα εξηγήσουμε τον τρόπο λειτουργίας τους μέσω παραδειγμάτων που ανταποκρίνονται στην καθημερινότητα των μαθητών και θα τον συγκρίνουμε και με τον τρόπο λειτουργίας των δομών επανάληψης που μελετήσαμε στο κεφάλαιο 10. 1.Εντολή "Για πάντα...εάν" 2.Εντολή "Περίμενε ώσπου" 3.Εντολή "Επανέλαβε ώσπου" 4.Σύγκριση με τις εντολές "Για πάντα...επανέλαβε" και "Επανέλαβε τόσες φορές" 12.2. Αισθητήρες στις δομές επανάληψης Σ'αυτή την ενότητα θα μάθουμε να χ ρησιμοποιούμε τους αισθητήρες από την παλέτα Αισθητήρες στις δομές επανάληψης που μελετήσαμε παραπάνω 12.3. Τελεστές στις δομές επανάληψης Σ'αυτή την ενότητα θα μάθουμε να χ ρησιμοποιούμε τους τελεστές από την παλέτα Τελεστές στις δομές επανάληψης πο μελετήσαμε παραπάνω 12.4. Δραστηριότητες

=**Διαμόρφωση Κεφαλαίου**=

__Πρόλογος__

Στο καφάλαιο αυτό σκοπός μας είναι να εισάγουμε τις εντολές επανάληψης "Για πάντα...εάν", "Περίμενε ώσπου" και "Επανέλαβε ώσπου". Όπως αναφέρθηκε και στο κεφάλαιο 10 η έννοια της **επανάληψης** παίζει κυρίαρχο ρόλο στην καθημερινότητά μας, τις περισσότερες φορές χωρίς να το συνειδητοποιούμε. Υπάρχουν ενέργειες που θα κάνουμε **για πάντα** όπως το να τρεφόμαστε και να πίνουμε νερό, **εάν** θέλουμε να επιβιώσουμε, και ενέργειες που 8α επαναλαμβάνουμε ώσπου να ικανοποιήσουμε κάποιες ανάγκες ή επιθυμίες. Για παράδειγμα, όταν βρίσκεστε στο σχολείο, πόσες φορές ενώ παρακολουθείτε ένα βαρετό μάθημα **περιμένετε ώσπου** να χτυπήσει το κουδούνι για να βγείτε διάλειμμα; Πόσες φορές ως μέλη της χορωδίας έχετε **τραγουδήσει** ενα συγκεκριμένο κομμάτι **ξανά και ξανά** **ώσπου** οι φωνές να ακούγονται σαν μία; Όλα τα παραπάνω αποδεικνύουν ότι η επανάληψη αποτελεί αναπόσπαστο κομμάτι για την ύπαρξή μας και την οργάνωση της καθημερινότητάς μας.

"Whatever we repeat, sets us."
Αριστοτέλης

__**12.1.1.Εντολή "Για πάντα...εάν"**__
Όλοι μας έχουμε μία αγαπημένη συνήθεια κάθε Κυριακή! Άλλος πάντα παίζει ποδόσφαιρο, άλλος πάντα βλέπει μία ταινία στο dvd του, άλλος πάντα τρώει το αγαπημένο του φαγητό και άλλος πάντα απλά προτιμάει να μη κάνει τίποτα! Εικόνα 12.1.1.1

Επομένως, υπάρχει κάτι, για τον καθένα ξεχωριστά, που **πάντα** το κάνει, **αν** η μέρα της εβδομάδας είναι Κυριακή.

Τη δυνατότητα αυτή, δηλαδή να μπορούμε να κάνουμε μία πράξη επ' άπειρον αν αληθεύει ένα γεγονός, μας την προσφέρει το Scratch! Πάμε όμως καλύτερα να γνωρίσουμε αυτή τη δυνατότητα μέσω ενός παραδείγματος: __**ΠΑΡΑΔΕΙΓΑ 1ο**__: ( http://scratch.mit.edu/projects/thkonsta/1050112 ) Φοβάστε τα έντομα; Αν ναι, πάμε να τα πατήσουμε! Τί χρειαζόμαστε για να πετύχουμε κάτι τέτοιο; Σίγουρα χρειαζόμαστε έντομα! Έστω ότι επιλέγουμε 4 έντομα τα οποία υπάρχουν στο Scratch. Επομένως, πατώντας το κουμπί και πηγαίνoντας στον φάκελο Animals βρίσκουμε τα έντομα που ψάχνουμε. Έστω ότι επιλέγουμε τα εξής: Εικόνα 12.1.1.2

Αφού βρήκαμε τους “κακούς” της υπόθεσης πάμε να δούμε ποια άλλα αντικείμενα χρειαζόμαστε. Όλοι πρέπει να συμφωνούμε ότι χρειαζόμαστε κάποιον να πατάει αυτά τα έντομα (αλλιώς ποιό το νόημα;). Πάμε, λοιπόν, να ζωγραφίσουμε τον ήρωά μας! Όπως έχουμε ήδη μάθει, πατώντας το κουμπί μπορούμε να δημιουργήσουμε το δικό μας αντικείμενο μέσω της ζωγραφικής. Ζωγραφίζουμε ένα απλό κλασσικό ανθρωπάκι με γραμμές για πόδια, χέρια και σώμα και το αποθηκεύουμε. Στο τέλος έχουμε κάτι τέτοιο: Εικόνα 12.1.1.3 Τέλος, ένα άλλο αντικείμενο που μας χρειάζεται είναι ουσιαστικά αυτό που θα μας δίνει οδηγίες για το πώς θα συντρίψουμε τα έντομα και θα τα βάλουμε πίσω στη θέση τους! Στο παράδειγμά μας επιλέγουμε το ρόλο αυτόν να τον παίξει ο κ. Κάβουρας. Είστε όμως ελεύθεροι να επιλέξετε όποιο αντικείμενο εσάς σας αρέσει. Το τελευταίο, λοιπόν, αντικείμενο είναι: Εικόνα 12.1.1.4

Αφού διακρίναμε ποια θα είναι τα αντικείμενα που θα χρειαστούμε πάμε να δούμε ποιο θα είναι το σκηνικό στο οποίο θα διαδραματίζεται το μικρό παιχνίδι που θα φτιάξουμε. Μπορείτε να επιλέξετε όποιο σκηνικό σας αρέσει και όποιο εσείς θεωρείτε καταλληλότερο! Έστω και πάλι ότι επιλέγουμε το εξής σκηνικό: Εικόνα 12.1.1.5

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

Ξεκινάμε! __**Έντομα**__ Τοποθετούμε αρχικά τα έντομα στην επάνω δεξιά γωνία έτσι ώστε να σχηματίζουνε ένα τετράγωνο. Συμφωνούμε ότι με κάποιο τρόπο πρέπει να επιλέγουμε ένα έντομο κάθε φορά. Αυτή τη δυνατότητα μας την προσφέρει η εντολή Εικόνα 12.1.1.6

από την παλέτα αισθητήρες. Την εντολή αυτή θα την αναλύσουμε εκτενέστερα παρακάτω. Σε αυτή τη φάση αρκεί να ξέρουμε ότι κάθε γράμμα που θα βάλουμε σε αυτή την εντολή, αντιστοιχεί και σε ένα έντομο. Έτσι, έστω ότι στο πρώτο έντομο αντιστοιχούμε το γράμμα a, στο δεύτερο το γράμμα b, στο τρίτο το c και στο τέταρτο το d. Αυτό που θέλουμε να κάνει το καθένα από αυτά είναι πως αν επιλεχτεί από τον παίχτη να πάει στη θέση x=20 και y=-70. Αν τον φτάσει ο βασικός μας ήρωας, να πάει πίσω στην αρχική του θέση και να πει ότι έχασε. Το σενάριο τοθ πρώτου εντόμου με βάση όλα αυτά που είπαμε θα είναι το εξής: Εικόνα 12.1.1.7

Μπορούμε εύκολα να διαπιστώσουμε ότι ο κώδικας των άλλων εντόμων θα είναι πανομοιότυπος. Το μόνο που θα αλλάξουμε είναι το πλήκτρο που πρέπει να πατηθεί και ποια είναι η αρχική του θέση, δηλαδή σε ποια θέση να πάει σε περίπτωση που το φτάσει ο βασικός μας ήρωας. __**κ. Κάβουρας**__ Ο κ. Κάβουρας ουσιαστικά να είναι ο αφηγητής μας. Άρα στο σενάριό του θα υπάρχουν οι οδηγίες που χρειάζονατι σε κάποιον για να παίξει το παιχνίδι. Το σενάριό του θα είναι το εξής: Εικόνα 12.1.1.8

__**Σκηνικό**__ Το σκηνικό όταν πατηθεί η σημαία θα αλλάξει στην ενδυμασία desert: Εικόνα 12.1.1.9

__**Κεντρικός ήρωας**__ Τί ακριβώς θέλουμε να κάνει ο κεντρικός μας ήρωας; Να περπατάει συνέχεια εάν μπροστά του δεν υπάρχει κανένα έντομο. Όταν εμφανιστεί μπροστά του κάποιο από τα έντομά μας, τότε ουσιαστικά το στέλνει πίσω στη θέση του. Επειδή ο ήρωας μας ουσιαστικά είναι ένα σκίτσο, για να το κάνουμε να φαίνεται πως περπατάει κανονικά, θα ζωγραφίσουμε άλλα 2 σκίτσα που αν συνδυαστούν να φαίνεται ότι περπατάει. Τα 3 συνολικά λοιπόν σκίτσα θα είναι κάπως έτσι: Εικόνα 12.1.1.10

Επομένως αν τα εναλλάσσουμε συνέχεια θα δίνουμε την αίσθηση της πραγματικής κίνησης!

!__Ερώτηση :__ Πιστεύετε πως εδώ αρκεί μία εντολή <<“εάν δεν έχεις αγγίξει κάποιο από τα έντομα” κάνε τις εντολές μέσα στο σώμα της εντολής εάν, δηλαδή κινήσου>>;

__Απάντηση:__ Όχι δεν αρκεί! Δοκιμάστε να φτιάξετε αυτό το σενάριο. Θα δείτε ότι της κάνει τις κινήσεις που του βάλατε να κάνει μόνο για μία φορά και θα σταματήσει. Καταλαβαίνουμε πως κάτι τέτοιο δεν είναι το ζητούμενο. Εμείς θέλουμε ο ήρωας μας να περπατάει συνέχεια και να σταματήσει μόνο όταν συναντήσει κάποιο έντομο. Επομένως το σίγουρο είναι ότι θα χρειαστούμε επανάληψη. Ήρθε, λοιπόν, η στιγμή της γνωριμίας μας με την εντολή “Για πάντα-εάν”.

Εικόνα 12.1.1.11

Τί κάνει όμως αυτή η εντολή; Με την εντολή “Για πάντα -εάν” καταφέρνεις να εκτελείς συνεχόμενα ένα σώμα εντολών, αν η συνθήκη που έχεις βάλει στο ρόμβο ισχύει. Όπως και στο παράδειγμά μας! Εμείς θέλουμε ο ήρωας να περπατάει συνέχεια, αν δεν έχει κανένα έντομο μπροστά του. Αλλά αν βρει κάποιο, τότε σταματάει. Εικόνα 12.1.1.12

Εικόνα 12.1.1.13

Η εντολή “Για πάντα-εάν” μας προσφέρει ακριβώς αυτό το πράγμα: οικονομία χώρου! Φανταστείτε ένα σενάριο χιλιάδων γραμμών. Δεν θα ήταν ευκολότερη η ανάγνωσή του αν ήταν πιο μικρό; Πάμε τώρα να δούμε τις διαφορές της “Για πάντα” και της “Για πάντα-εάν”. Εικόνα 12.1.1.14

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

Τώρα μέσα στο σώμα της Για πάντα-εάν τοποθετούμε τις εντολές κίνησης. Ο τελικός μας κώδικας θα έχει την εξής μορφή: Εικόνα 12.1.1.16

Και η εικόνα που θα εμφανίζεται στην αρχή του παιχνιδιού θα είναι: Εικόνα 12.1.1.17

__**ΠΡΟΚΛΗΣΗ 1!**__

Πώς θα φτιάχνατε τον παραπάνω κώδικα χρησιμοποιώντας την Για πάντα και την εάν; Υπάρχουν πάνω από ένας τρόπος;

__**ΠΡΟΚΛΗΣΗ 2!**__

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

Ας δούμε ένα ακόμα παράδειγμα! __**ΠΑΡΑΔΕΙΓΜΑ 2ο**__ ( http://scratch.mit.edu/projects/thkonsta/1050565 )

Όλοι κάποια στιγμή της ζωής μας έτυχε να παίξουμε με εφαρμογές κινητού. Μία αρκετά γνωστή εφαρμογή είναι η FaceWarp. Αυτή η εφαρμογή δίνει τη δυνατότητα στον χρήστη να παραμορφώνει ουσιαστικά είτε μία φωτογραφία που έχει στους φακέλους του είτε μία φωτογραφία που θα τραβήξει εκείνη τη στιγμή. Μεγαλώνει και μικραίνει τη μύτη και το χαμόγελο, αλλάζει το σχήμα του προσώπου και γενικά αλλάζει όλη τη φωτογραφία προκαλώντας πολύ γέλιο στην παρέα. Τί σχέση όμως έχουν όλα αυτά με το Scratch; Στο κεφάλαιο 7 μάθαμε την παλέτα Όψη και στο κεφάλαιο 5 την παλέτα Κίνηση. Τί θα λέγατε αν συνδυάζαμε αυτές τις δύο παλέτες με την εντολή επανάληψης Για πάντα-εάν και να φτιάχναμε μία εφαρμογή παρόμοια με αυτή των κινητών; Πιστεύετε ότι κάτι τέτοιο είναι αδύνατο; Για πάμε να δούμε!

Σαν αντικείμενο που θα αλλάξουμε εμείς επιλέγουμε το αντικείμενο squareface Εικόνα 12.1.1.18

Αυτή η επιλογή δεν είναι δεσμευτική, καθώς μπορείτε εσείς να βαλετε μία δικιά σας φωτογραφία ή μία φωτογραφία κάποιου φίλου σας. Ορίζουμε αυτή ως φόντο,αφού πρώτα την μεγεθύνουμε για να καλύπτει όλη την οθόνη. Στη συνέχεια παίρνουμε το ίδιο αντικείμενο άλλες 4 φορές σε μικρότερο μέγεθος. Αυτά θα είναι και τα αντικείμενα που θα τροποποιήσουμε. Με την εντολή τοποθετούμε τα 4 αντικείμενά μας στις 4 γωνίες του σκηνικού(Θέσεις για x: -195, 174, -195, 174 και θέσεις y: 120, 120, -120, -120 αντίστοιχα) και μέσω της εντολής τα τοποθετούμε στο κέντρο του σκηνικού (στις θέσεις x: -76, 76, -78, 78 και y: 68, 68, -78, -78 αντίστοιχα) και κάνουμε μία πιο φαντασμαγορική αρχη! Αφού τα τοποθετήσαμε σωστά, πάμτε να κάνουμε στο καθένα και μία μικρή αλλαγή! Θέλουμε κάθε φορά που πατάμε το ποντίκι το κάθε αντικείμενο να κάνει μία αλλαγή στη μορφή του. Έστω ότι το πρώτο στροβυλίζεται κατά 20 μοίρες, το δεύτερο χρησιμοποιεί το εφέ στροβίλισε, το τρίτο το εφέ ψηφιδωτό και άλλαξε χρώμα και το τέταρτο αλλάζει το μέγεθός του. Και τώρα αναρρωτιόμαστε: -Θέλουμε αυτή η αλλαγή να γίνει μία φορα; -Όχι!Θέλουμε κάθε φορά που κάνουμε κλίκ να γίνονται οι αλλαγές! Άρα, σίγουρα χρειαζόμαστε επανάληψη! Επίσης: -Θέλουμε να ξεκινάνε οι αλλαγές κάθε φορά που πατάμε την πράσινη σημαία ή **εαν** κάνουμε κλικ με το ποντίκι; -Να ξεκινάνε με το κλικ του ποντικιού! -Θέλουμε κάποια άλλη συνθήκη; -Όχι! -Μπορούμε λοιπόν να χρησιμοποιήσουμε την Για πάντα-εάν; -ΝΑΙ!!!!

Χρησιμοποιώντασ λοιπόν τη Για πάντα-εάν πετυχαίνουμε το επιθυμητό αποτέλεσμα!

Το σκηνικό μας αρχικά έχει την εξής μορφή: Εικόνα 12.1.1.19

Ένα στιγμιότυπο αυτού είναι: Εικόνα 12.1.1.20

ενώ οι κώδικες για το κάθε αντικείμενο είναι: Εικόνα 12.1.1.21

για το πρώτο, το δεύτερο, το τρίτο και το τέταρτο αντικείμενο αντίστοιχα

__**ΠΡΟΚΛΗΣΗ 1**__ Μπορείς εδώ να το φτιάξεις με μία εντολή Για πάντα και μία Εάν; Γιατί;

__**ΠΡΟΚΛΗΣΗ 2**__ Δοκίμασε να παραμορφώσεις τις φωτογραφίες σου με άλλους τρόπους!

Είναι 11 η ώρα το πρωί και δεν έχετε σχολείο. Αποφασίζετε λοιπόν να κοιμηθείτε λίγο παραπάνω! Ξαφνικά ακούτε από μέσα μία φωνή πολύ γνωστή που να λέει: «Ξύπνα! Πρέπει να σηκωθείς για να συμμαζέψεις το δωμάτιο σου!».Και ναι! Είναι η φωνή της μητέρας. Τί σχέση όμως μπορεί να έχει αυτό με το μάθημά μας; Πάμε λίγο να το αναλύσουμε! Το σίγουρο λοιπόν είναι ότι θα συνεχίσει να φωνάζει μέχρι εσείς να ξυπνήσετε και να σηκωθείτε από το κρεβάτι. Δηλαδή μέχρι η συνθήκη να γίνει αληθής!!! Στην παλέτα "Έλεγχος" υπάρχει η επιλογή " Επανέλαβε-ώσπου ".Μέσω αυτής της επιλογής μπορούμε να εξασφαλίσουμε τη συνεχή επανάληψη των κινήσεων που επιθυμούμε ώσπου η συνθήκη που θα βάλουμε να ισχύσει. Η εντολή αυτή δεν έχει συγκεκριμένο αριθμό φορών επανάληψης όπως η Επανέλαβε χ φορές. Μπορεί να εκτελέσει το σώμα εντολών της 100 φορές αλλά μπορεί και καμία! Και σε τί μπορεί να μας φανεί χρήσιμη μία τέτοια εντολή; Πάμε να δούμε ένα παράδειγμα. __**ΠΑΡΑΔΕΙΓΜΑ**__ ( http://scratch.mit.edu/projects/thkonsta/1061020 )
 * __Επανάληψη:__ ** Η μαμά θα συνεχίσει να φωνάζει ότι πρέπει να σηκωθείτε για να συμμαζέψετε το δωμάτιο.
 * __Συνθήκη:__ ** Εσείς ξυπνάτε και σηκώνεστε

Το σενάριο που θέλουμε να κατασκευάσουμε για το συγκεκριμένο παράδειγμα είναι το εξής: Θέλουμε να μαζέψουμε όλα τα επικίνδυνα κοχύλια που δεν σταματάνε να κουνιούνται μέσα σε έναν κουβά για να καθαρίσουμε την παραλία! Τί χρειαζόμαστε; Χρειαζόμαστε σίγουρα κάποιον να...κάνει τη βρώμικη δουλειά! Έστω ότι επιλέγουμε το αντικείμενοΕικόνα 12.1.2.1 Επίσης πρέπει να έχουμε έναν κουβά για να μαζεύουμε τα κοχύλια. Ας τον δημιουργήσουμε εμείς! Πατώντας την επιλογή Ζωγράφισε νέα μορφή, φτιάχνουμε ένα απλό τραπέζιο σε μορφή κουβά και το χρωματίζουμε στο χρώμα της αρεσκείας μας. Εδώ επιλέγουμε το ροζ κι έτσι έχουμε: Εικόνα 12.1.2.2

Και τέλος χρειαζόμαστε τα κοχύλια τα οποία επιλέγουμε να είναι τα

Εικόνα 12.1.2.3 Φυσικά για σκηνικό επιλέγουμε μία εξωτική παραλία! Επομένως, αρχικά θα έχουμε το παρακάτω στιγμιότυπο: Εικόνα 12.1.2.4

Πάμε όμως να δούμε τι θέλουμε να κάνει το κάθε αντικείμενο ξεχωριστά.

__**Ο...συλλέκτης!**__

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

__**Τα κοχύλια**__

Θέλουμε να δώσουμε στα κοχύλια μία συνεχόμενη κίνηση μπρος-πίσω για να τα κάνουμε να μοιάζουν λίγο επικίνδυνα! Αυτή η κίνηση σταματάει μόλις ο συλλέκτης τα πιάσει και αυτά αμέσως τοποθετούνται στον ροζ κουβά μας! Πώς όμως θα το πετύχουμε αυτό; Ας δούμε τί ακριβώς έχουμε: θέλουμε να κινούνται τα κοχύλια επαναληπτικά, ώσπου ο συλλέκτης να τα πιάσει. Αυτή τη δουλειά μπορεί να την κάνει όπως άλλωστε φαίνεται και από το όνομά της η Επανέλαβε-ώσπου. Επομένως, αφού δημιουργήσουμε 5 κοχύλια, στο σενάριο του καθενός αρχικά θα τα τοποθετήσουμε σε κάποιες θέσεις ούτως ώστε κάθε φορά που θα ξεκινάμε από την αρχή να είναι σκορπισμένα στην παραλία. Στη συνέχεια χρησιμοποιώντας την εντολή Επανέλαβε-ώσπου τα κάνουμε να κινούνται δεξιά και αριστερά με τη χρήση της εντολής

Η συνθήκη που θα βάλουμε θα είναι “ώσπου να τα αγγίξει ο συλλέκτης”. Όταν τα πιάσει τότε τοποθετούνται στον κουβά. Τα σενάριο όλων των κοχυλιών είναι ίδια και οι μόνες που αλλάζουν είναι κάθε φορά οι αρχικές και οι τελικές θέσεις. Ένα από τα 5 πανομοιότυπα σενάρια είναι το εξής: Εικόνα 12.1.2.6

Εδώ είναι το σημείο που πρέπει να παρατηρήσουμε κάτι πολύ σημαντικό: μέσω της εντολής Επανέλαβε-ώσπου έχουμε τη δυνατότητα να εκτελούμε επαναληπτικά κάποιες εντολές χωρίς προκαθορισμένο αριθμό επαναλήψεων και μετά το πέρας αυτής της επανάληψης να βάζουμε επιπλέον εντολές! Αυτό είναι πολύ σημαντικό γιατί μέχρι τώρα με την Για πάντα και με την Για πάντα-εάν δε μας δινόταν αυτή η δυνατότητα. Πάμε να δούμε, όμως, λίγο καλύτερα τις διαφορές και τις ομοιότητές της εντολής Επανέλαβε-ώσπου και της εντολής που μάθαμε στην προηγούμενη ενότητα, Για πάντα-εάν. Εικόνα 12.1.2.7

__**ΠΡΟΚΛΗΣΗ 1**__

Δοκιμάστε στις κινήσεις του συλλέκτη να αλλάξετε αυτήν που τον κάνει να κινείται δεξιά. Δοκιμάστε πρώτα να χρησιμοποιήσετε την Για πάντα-εάν και μετά την Επανέλαβε-ώσπου και να είστε σίγουροι ότι θα καταλάβετε όλες τις διαφορές τους!

__**ΠΡΟΚΛΗΣΗ 2**__

Προσπαθήστε να χρησιμοποιήσετε την Για πάντα-εάν και τη Για πάντα αντί για την Επανέλαβε -ώσπου.

Άλλα μικρά παραδείγματα της χρήσης της Επανέλαβε-ώσπου:

-__Στη μουσική:__ Μπορείτε να συνθέσετε τη δική σας μουσική παίζοντας όποια όργανα θέλετε, με όποια σειρά θέλετε και να το σταματήσετε εσείς όποτε πατήσετε ένα κουμπί stop που έχετε φτιάξει. Επιπλέον, μπορείτε να βάλετε πάνω από ένα κομμάτι και να τα πηγαίνετε με τη σειρά με το δεξί βελάκι. Και όλα αυτά με το Scratch! -__Στη ζωγραφική:__ Μπορείτε να δημιουργήσετε αφηρημένα έργα με διάφορα χρώματα και σχέδια! Αρκεί να βάλετε για παράδειγμα το πρώτο σχέδιο να κινείται σε μία ευθεία γραμμή και να αφήνει τη στάμπα του ώσπου να ακουμπήσει στα όρια και μετά να ξεκινήσουν οι εντολές από κάτω με το δεύτερο σχέδιο που να επαναλαμβάνεται μέχρι να ακουμπήσει το πρώτο σχέδιο κ.ο.κ. -__Στην κίνηση:__ Κάντε τα αντικείμενά σας να χορεύουν μέχρι να σταματήσει η μουσική ή μέχρι να ξημερώσει! Βάλε και τον εαυτό σας και τους φίλους σας στο σκηνικό! Είστε στη θάλασσα και κολυμπάτε μέχρι να τους φτάσετε! Επίσης, κάνετε αγώνες δρόμου και τρέχετε μέχρι να φτάσετε στο τέρμα!

Όλα αυτά τα καταφέρνουμε χρησιμοποιώντας την Επανέλαβε-ώσπου!!!!

__** 12.1.3.Εντολή "Περίμενε ώσπου" **__
Χτυπάει το κουδούνι για το μεγάλο διάλειμμα!Η μυρωδια του κρουασάν που ψήθηκε είναι ακαταμάχητη! Η μόνη λύση είναι να πάτε να το αγοράσετε από το κυλικείο του σχολείου σας.ήΜε ένα μεγάλο όμως τίμημα: θα πρέπει να περιμένετε ώσπου να έρθει η σειρά σας... Η έννοια της αναμονής είναι ένα επίσης αναπόσπαστο κομμάτι της καθημερινότητας μας: η αναμονη στο super-market μέχρι να πληρώσετε, η αναμονή σε ένα τηλεφώνημα που κάνετε μέχρι ο συνομιλητής σας να σηκώσει το τηλέφωνο ακόμα και όταν περιμένετε να ξεκινήσετε να παίζετε ένα παιχνίδι ώσπου να επιλέξετε τον ήρωα σας! Επομένως σε αυτήν την υποενότητα δε θα μάθουμε καινούριες έννοιες, αλλά το πώς μπορούμε να χρησιμοποιήσουμε τις ήδη οικείες έννοιες μέσω της επιλογής **Περίμενε-ώσπου** της παλέτας «Έλεγχος». Εκεί υπάρχει η επιλογή "Περίμενε- ώσπου" όπως φαίνεται και στην εικόνα που ακολουθεί(picture). Ας ξεκινήσουμε όμως και πάλι με ένα παράδειγμα.

__**ΠΑΡΑΔΕΙΓΜΑ**__ ( http://scratch.mit.edu/projects/thkonsta/1061020 )

Πώς θα σας φαινόταν η ιδέα να ζούσαμε σε έναν ιδανικό κόσμο όπου τα φανάρια θα κοκκίνιζαν για τους οδηγούς και θα πρασίνιζαν για τους πεζούς με το πάτημα ενός μόνο κουμπιού; Έχουμε το σενάριο λοιπόν! Πάμε να το φτιάξουμε στο Scratch!

Αρχικά χρειαζόμαστε το σκηνικό να είναι κάποιος δρόμος. Έστω ότι επιλέγουμε το : Εικόνα 12.1.3.1

Μέσω της ζωγραφικής, φτιάχνουμε διάβαση για τους πεζούς και την μπροστινή πλευρά ενός αμαξιού. Το αποτέλεσμα είναι κάπως έτσι: Εικόνα 12.1.3.2

Στη συνέχεια και πάλι με τη βοήθεια της ζωγραφικής, Φτιάχνουμε σα ξεχωριστά αντικείμενα το φανάρι, το κόκκινο και το πράσινο, όπως φαίνεται στις 3 εικόνες που ακολουθούν Εικόνα 12.1.3.3 Εικόνα 12.1.3.4 Εικόνα 12.1.3.5 Τέλος μένει να επιλέξουμε αυτόν που θα περάσει το δρόμο καθώς και να φτιάξουμε το κουμπί. Τυχαία επιλέξαμε το και για να του δώσουμε και την αίσθηση της κίνησης του προσθέτουμε άλλες 3 ενδυμασίες ( Εικόνα 12.1.3.6)

Εικόνα 12.1.1.3.6

Το κουμπί το φτιάχνουμε πολύ απλά και πάλι μέσω της ζωγραφικής, φτιάχνοντας ένα μήνυμα και από κάτω ένα κουμπί. Το αρχικό σκηνικό μας θα είναι: Εικόνα 12.1.3.7

Το πράσινο φανάρι για τα αυτοκίνητα είναι πάντα αναμμένο πράσινο εκτός από τη στιγμή που κάποιος πεζός πατήσει το κουμπί, Τότε αυτόματα κοκκινίζει το φανάρι και ο πεζός έχει 10 δευτερόλεπτα για να περάσει απέναντι. Σημειώνουμε ότι ο πεζός πρέπει να περιμένει μέχρι το φανάρι των αυτοκινήτων να γίνει κόκκινο και δεν μπορεί να κάνει καμία κίνηση. Πάμε να το δούμε αναλυτικότερα:

__**Κόκκινο και Πράσινο**__

Το πράσινο είναι αναμμένο και σταματάει για 10 δευτερόλεπτα αν ο πεζός πατήσει το κουμπί και το κόκκινο το αντίθετο. Οι κώδικες δίνονται στις παρακάτω εικόνες: Εικόνα 12.1.3.8 Εικόνα 12.1.3.9

__**Ο πεζός**__

Ο πεζός θα προχωράει με την εναλλαγή ενδυμασιών κάθε φορά που θα πατάμε το δεξί βελάκι, αλλά πρώτα τη θα πρέπει να περιμένει να πατήσει το κουμπί, γιατί δεν μπορεί να περάσει. Πώς όμως θα το πετύχουμε αυτό; Υπάρχει κάποια εντολή που να το κάνει; Η απάντηση είναι ΝΑΙ!! Υπάρχει η εντολή Περίμενε-ώσπου η οποία αναγκάζει το αντικείμενο να περιμένει, χωρίς να εκτελεί καμία εντολή μέχρι η συνθήκη του να γίνει αληθής οπότε και θα συνεχίσει κανονικά τη ροή του. Στο συγκεκριμένο παράδειγμα, η συνθήκη είναι αν πατήθηκε το ποντίκι οπότε το σενάριο θα είναι το παρακάτω: Εικόνα 12.1.3.10

Ποια η διαφορά όμως της καινούριας αυτής εντολής από τις υπόλοιπες; Πάμε να διελευκάνουμε την υπόθεση!! Εικόνα 12.1. 3.11

Φανταστείτε τη χρήση της στον προγραμματισμό παιχνιδιών! Αλλά και στο παράδειγμα με τη λίστα κομματιών που θα έχετε φτιάξει εσείς ή είναι έτοιμα. Αν θέλατε να πατάτε ένα κουμπί και να γίνεται pause δεν θα μπορούσατε να το πετύχετε αυτό με τη χρήση της Περίμενε-ώσπου;

Για σκεφτείτε το!! Υπάρχουν κάποια παραδείγματα στο τέλος του κεφαλαίου που θα σας βοηθήσουν να καταλάβετε πόσα πολλά πράγματα μπορούμε να κάνουμε με τις εντολές που μάθαμε!

__**ΠΡΟΚΛΗΣΗ**__

Κάντε ένα πάρτυ και φροντίστε όλοι να περιμένετε να έρθουν όλοι οι καλεσμένοι και μετά να μπει η μουσική και να αρχίσετε να χορεύετε!

Εικόνα 12.1.3.12 __**ΠΑΡΑΔΕΙΓΜΑ: Παίζοντας μουσική με τα άλογα**__

Η υπόθεση έχει ως εξής: Οι κεντρικοί ήρωες είναι κάποια άλογα, έστω τέσσερα. Καθένα από αυτά παίζουν κάποιες νότες. Εμείς θέλουμε να μπορούμε να επιλέγουμε όποιο από τα άλογα θέλουμε, να μπορεί αυτό να συνδυάζει τη μουσική του με τα υπόλοιπα και να σταματάει όταν εμείς το θελήσουμε! Πάμε όμως να το δούμε πιο αναλυτικά για να καταλάβουμε πώς θα πετύχουμε το ζητούμενο. Αρχικά, ψάνουμε και βρίσκουμε τα άλογα-μουσικούς. Επιλέξαμε τυχαία τα εξής: Εικόνα 12.1.3.13 Εικόνα 12.1.3.14 Εικόνα 12.1.3.15 Εικόνα 12.1.3.16

Το κάθε άλογο, από τη στιμή που τηα γίνει κλικ με το ποντίκι, είναι έτοιμο να παίξει τις νότες του. Περιμένει όμως μέχρι να το επιλέξουμε. Καταλαβαίνουμε λοιπόν ότι σε αυτό το σημείο θα χρησιμοποιήσουμε την εντολή περίμενε ώσπου, βάζοντας για συνθήκη τον αισθητήρα “πατήθηκε πλήκτρο a, b, c, d” αναλόγως το άλογο που θέλουμε να επιλέξουμε. Όταν η συνθήκη γίνει αληθής, τότε επαναλαμβάνει το καθένα τις νότες του μέχρι να το αγγίξει το ποντίκι, οπότε και σταματάει.! Ο κώδικας που ακολουθεί δείχνει το σενάριο ενός από τα άλογα. Τα σενάρια των υπολοίπων είναι παρεμφερή.

Εικόνα 12.1.3.17

Είδαμε λοιπόν πως μπορούμε να χρησιμοποιήσουμε και τις 3 εντολές σε ένα μόνο πρόγραμμα!

__**ΠΡΟΚΛΗΣΗ**__

Δημιουργήστε κι εσείς τη δική σας μπάντα και γίνετε εσείς ο μαέστρος αυτής παίζοντας τισ νότες με όποια σειρά θέλετε!

Πατήστε λοιπόν την πράσινη σημαιούλα και δείτε τι γίνεται μέχρι να κάνετε ένα απλό κλίκ...  Εικόνα 12.1.3.18 Εικόνα 12.1.3.19


 * 4.Σύγκριση με τις εντολές "Για πάντα...επανέλαβε" και "Επανέλαβε τόσες φορές"**

Στην παρούσα υποενότητα, θα προσπαθήσουμε να κάνουμε απόλυτα διακριτή τη λειτουργία των εντολών επανάληψης που μελετήθηκαν παραπάνω, καθώς και των εντολών που περιγράφηκαν στο κεφάλαιο 10, μέσα από συνδυαστικά παραδείγματα.


 * Παράδειγμα 1: Η ζωγραφική μέσα από την επανάληψη **

Ακολουθούν δύο παραδείγματα στα οποία παρατίθενται οι εντολές «**επανέλαβε** **ώσπου»** και « **επανέλαβε τόσες φορές**» προκειμένου να γίνει αισθητή η διαφορά τους.

Χρήση της εντολής «επανέλαβε τόσες φορές».
 * α)Υπέροχο Λουλούδι ** ( [] )

Το παράδειγμα αυτό επικεντρώνεται στο σχεδιασμό ενός πολύχρωμου και ιδιόμορφου λουλουδιού, από δύο αντικείμενα που πρέπει να τα δημιουργήσουμε εμείς σε σχήμα σταυρού, που βρίσκονται στο κέντρο ενός μαύρου φόντου και έχουν το πραγματικό τους μέγεθος(Βλ. εικόνα 12.1.4.1). Η κίνηση που διαγράφουν συνεχώς είναι: 1. να στρέφονται δεξιά κατά 2 μοίρες 2. να αφήνουν αποτύπωμα 3. και να αλλάζουν το χρώμα του εφέ κατά 50 Επιπλέον θέλουμε κάθε φορά που τρέχουμε τον κώδικα να ζωγραφίζεται το λουλούδι από την αρχή, οπότε φροντίζουμε να καθαρίζουμε το σκηνικό πριν ξεκινήσει οποιαδήποτε κίνηση. Το αποτέλεσμα που δίνουν οι παραπάνω κινήσεις αποτυπώνεται στην εικόνα 12.1.4.2. Τέλος, όσον αφορά τη δημιουργία των πετάλων αυτή επιτυγχάνεται, επαναλαμβάνοντας 80 φορές, αύξηση του κάθε αντικειμένου κατά 3 και στη συνέχεια μείωση κατά 3. Το τελικό αποτέλεσμα φαίνεται στην εικόνα 12.1.4.3.

Eικόνα 12.1.4.1

Eικόνα 12.1.4.2

Eικόνα 12.1.4.3

Από την περιγραφή του προβλήματος, συμπεραίνουμε ότι :
 * Είναι απαραίτητη η χρήση της ζωγραφικής για τη δημιουργία των αντικειμένων και του σκηνικού, εφόσον το χρώμα του είναι μαύρο.
 * Επιπλέον, πρέπει να υλοποιήσουμε δύο ξεχωριστές κινήσεις για κάθε αντικείμενο. Η πρώτη, το αποτέλεσμα της οποίας φαίνεται στην εικόνα 12.1.4.2 πρέπει να εκτελείται συνέχεια, οπότε θα χρειαστούμε τη δομή επανάληψης «για πάντα». Η δεύτερη, από τη στιγμή που εκτελείται ένα συγκεκριμένο αριθμό φορών (80) θα υλοποιηθεί με τη δομή επανάληψης «επανέλαβε τόσες φορές». Αφού θέλουμε **πρώτα** να αυξάνεται το μέγεθος του αντικειμένου κατά 3, 80 φορές και **μετά** να μειώνεται κατά 3, 80 φορές, θα χρειαστούμε δύο δομές «επανέλαβε τόσες φορές».
 * Η συμπεριφορά των αντικειμένων είναι ίδια οπότε και ο κώδικάς τους θα είναι ο ίδιος.

Ας δούμε τώρα πιο αναλυτικά τη λύση του παραπάνω προβλήματος. Αρχικά θα πρέπει να ζωγραφίσουμε τα αντικείμενα, εφόσον δεν υπάρχουν έτοιμα στο scratch όπως φαίνεται στη εικόνα 12.1.4.4. Επίσης ζωγραφίζουμε το σκηνικό με μαύρο χρώμα, ώστε να είναι ορατές οι χρωματικές αλλαγές των αντικειμένων. Αρχικά τοποθετούμε κάθε αντικείμενο στη θέση (0,0), ορίζουμε το μέγεθός τους στο 100% και καθαρίζουμε το σκηνικό πριν ξεκινήσει οποιαδήποτε κίνηση. Συνεχίζουμε με την υλοποίηση της πρώτης κίνησης όπως περιγράφηκε παραπάνω, ο κώδικας της οποία απεικονίζεται στην εικόνα 12.1.4.5. Ολοκληρώνουμε με τη δημιουργία των πετάλων (δεύτερη κίνηση) με τον κώδικα της εικόνας 12.1.4.6.

Eικόνα 12.1.4.4

Eικόνα 12.1.4.5

Eικόνα 12.1.4.6


 * __Παρατηρήσεις__**

> > =**β)Ένα απλό λουλούδι (** []) = Χρήση της εντολής «επανέλαβε ώσπου».
 * 1) Αν αφαιρέσουμε την εντολή «καθάρισε» από τον κώδικα του ενός από τα δύο αντικείμενα, το αποτέλεσμα δεν επηρεάζεται. Γιατί πιστεύετε ότι συμβαίνει αυτό;
 * 2) Αν αντικαταστήσουμε τη δομή «για πάντα» με τη δομή «επανέλαβε 80 φορές», ποιο θα είναι το αποτέλεσμα; Θα παραμείνει ίδιο με πριν ή θα αλλάξει;
 * 3) Οι αυξομειώσεις για τη δημιουργία των πετάλων εκτελούνται 80 φορές. Τι θα γίνει αν αυξήσουμε ή μειώσουμε τον αριθμό των επαναλήψεων;

Αυτό το παράδειγμα έχει ως στόχο τη δημιουργία του άνθους ενός λουλουδιού σε ένα μπλε φόντο όπου υπάρχει ήδη ο μίσχος του (δεν υπάρχει έτοιμο στο scratch), ενώ παράλληλα ακούγεται το τραγούδι Suspense συνέχεια(το τραγούδι το επιλέγουμε από το φάκελο Instruments του scratch). Ο μίσχος θέλουμε να είναι τοποθετημένος στο κέντρο του παραθύρου. Η δημιουργία του άνθους βασίζεται σε ένα αντικείμενο το οποίο είναι το περίγραμμα ενός παραλληλογράμμου με 7 διαφορετικές μορφές και τρία διαφορετικά χρώματα, μαύρο, κίτρινο, πορτοκαλί και κόκκινο. Πιο συγκεκριμένα χρειαζόμαστε ένα μαύρο τετράγωνο διαστάσεων 16x15, δύο κίτρινα διαστάσεων 23x21 και 27x25, δύο πορτοκαλί διαστάσεων 38x36 και 54x51 και δύο κόκκινα διαστάσεων 77x73 και 110x105. Η δημιουργία του άνθους θα ξεκινάει πάντα από το μαύρο τετράγωνο και από καθαρό σκηνικό. Η κίνηση που θα εκτελεί το αντικείμενο είναι να πηγαίνει στην επόμενη ενδυμασία, να στρίβει δεξιά κατά 10 μοίρες και να αφήνει το αποτύπωμά του και θέλουμε να επαναλαμβάνεται μέχρις ότου το αντικείμενο να αποκτήσει τη μορφή 8. Το τελικό αποτέλεσμα φαίνεται στην εικόνα 12.1.4.7. .

Eικόνα 12.1.4.7

Από την περιγραφή του προβλήματος οδηγούμαστε στα παρακάτω συμπεράσματα : · Εφόσον το φόντο δεν υπάρχει έτοιμο, το δημιουργούμε με τη βοήθεια της ζωγραφικής, όπως φαίνεται στην εικόνα 12.1.4.8. · Επιπλέον για να ακούγεται μουσική καθ’ όλη τη διάρκεια που τρέχει ο κώδικας, τοποθετούμε στο σενάριο του φόντου την εντολή «παίξε ήχο Suspense Μέχρι τέλους», μέσα σε μια δομή επανάληψης «για πάντα». · Η μορφή 8 δεν υπάρχει. Συνεπώς για να ξεκινάει η δημιουργία του άνθους από το μαύρο τετράγωνο θα χρησιμοποιήσουμε την εντολή «αλλαγή σε ενδυμασία ενδυμασία8», ώστε να εμφανιστεί η επόμενη που είναι η ενδυμασία1. · Επειδή η κίνηση που εκτελεί το αντικείμενο επαναλαμβάνεται ώσπου να αποκτήσει την μορφή 8, θα επιλέξουμε την δομή επανάληψης «επανέλαβε ώσπου» με συνθήκη «ενδυμασία # =8».

Ξεκινάμε τώρα την υλοποίηση του προβλήματος ζωγραφίζοντας αρχικά το σκηνικό με τη ζωγραφική, όπως φαίνεται στην εικόνα 12.1.4.8 και υλοποιούμε τον κώδικά του που παρατίθεται στην εικόνα 12.1.4.9.

Eικόνα 12.1.4.8

Eικόνα 12.1.4.9

Στη συνέχεια ζωγραφίζουμε τις εφτά διαφορετικές μορφές του αντικειμένου όπως φαίνεται στην εικόνα 12.1.4.10. Η συμπεριφορά του αντικειμένου, όπως την παρουσιάσαμε παραπάνω, φαίνεται στην εικόνα 12.1.4.11. Για να είναι καλύτερα ορατή η συμπεριφορά των ενδυμασιών συμπεριλαμβάνουμε την εντολή «περίμενε 0.5 δευτερόλεπτα ».

Eικόνα 12.1.4.10

Eικόνα 12.1.4.11
 * __Παρατηρήσεις__**
 * 1) Εφόσον δεν υπάρχει όγδοη ενδυμασία η συνθήκη της δομής επανάληψης δεν θα γίνει ποτέ αληθής. Η εντολή «σταμάτησε το σενάριο», έχει νόημα σ’ αυτή την περίπτωση; Τι σημαίνει αυτό όσον αφορά τη δομή επανάληψης; Μπορεί να αντικατασταθεί από κάποια άλλη δομή;
 * 2) Πειραματιστείτε με την συνθήκη έτσι ώστε να γίνεται αληθής. Τι παρατηρείτε;

Από την μελέτη των παραπάνω παραδειγμάτων διαπιστώνουμε τον τρόπο λειτουργίας κάθε δομής. Στη δομή «**επανέλαβε τόσες φορές**» το σώμα εκτελείται πάντα τόσες φορές όσες έχουμε ορίσει εμείς. Αντίθετα στη δομή «**επανέλαβε ώσπου**» η συνθήκη παίζει καθοριστικό ρόλο στην εκτέλεση ή όχι του σώματός της. Αν η συνθήκη είναι ψευδής το σώμα της εκτελείται, ενώ αν είναι αληθής δεν εκτελείται.
 * __Συμπέρασμα__**

([|http://www.jhigh.co.uk/ITIntroCourses/S2Courses/ScratchProgramming/scratchMovies/HelicopterGameMov.html#] : το παράδειγμα βασίζεται στην εφαρμογή που βρίσκεται σε αυτό το link και έχουμε κάνει κάποιες μετατροπές). Στο παράδειγμα αυτό παρατίθενται οι εντολές «**για πάντα εάν**» και «**για πάντα**» προκειμένου να γίνει αισθητή η διαφορά τους. Το πρόβλημα είναι η κίνηση ενός αντικειμένου με όνομα «ελικοπτεράκι» (το επιλέγουμε από το φάκελο Transportation του scratch) που απογειώνεται από μια συγκεκριμένη θέση ((-198, 33)) στην ταράτσα ενός κίτρινου ουρανοξύστη, πετάει ανάμεσα από τρία γκρι σύννεφα, με τη χρήση των πλήκτρων «πάνω βέλος» και «δεξί βέλος», και ταυτόχρονα ακούγεται ο έλικας (επιλέγουμε τον ήχο Peculiar από το φάκελο Electronic του scratch) με στόχο να προσγειωθεί σε ένα μπλε ελικοδρόμιο, έτσι ώστε να τερματίσει το παιχνίδι. Πιο συγκεκριμένα, η συμπεριφορά του ελικοπτέρου θα είναι:
 * Παράδειγμα 2: Βόλτα στον ουρανό **

1. Εάν δεν αγγίζει το κίτρινο χρώμα μειώνεται το ύψος του κατά ένα, δηλαδή πέφτει και ακούγεται ο έλικας. 2. Εάν αγγίζει το κίτρινο χρώμα σταματάει ο θόρυβος. 3. Εάν πατηθεί το πάνω βέλος τότε κινείται ανοδικά κατά 3. 4. Εάν πατηθεί το δεξί βέλος τότε κινείται δεξιά κατά 3. 5. Εάν αγγίζει το μπλε χρώμα εμφανίζει το μήνυμα «Τέλος παιχνιδιού» για 1 δευτερόλεπτο και σταματάει. Επιπλέον όταν πέφτει πάνω σε σύννεφο, γυρίζει συνεχώς στο σημείο εκκίνησης εμφανίζοντας το μήνυμα «Προσπάθησε ξανά!» για 1 δευτερόλεπτο. Όσον αφορά το σκηνικό δεν υπάρχει έτοιμο στο scratch οπότε το δημιουργούμε. Έχει φόντο γκρι ανοιχτό, στην κάτω αριστερή γωνία ένα κίτρινο ουρανοξύστη, στην κάτω δεξιά ένα μπλε ελικοδρόμιο και τρία σύννεφα χρώματος γκρι σκούρο διάσπαρτα στον ουρανό. Το ολοκληρωμένο σκηνικό μαζί με το αντικείμενο φαίνονται στην εικόνα 12.1.4.12.

Eικόνα 12.1.4.12

Από την παραπάνω περιγραφή του προβλήματος προκύπτουν τα παρακάτω συμπεράσματα: · Ανοδική κίνηση σημαίνει ότι αυξάνουμε την συντεταγμένη y της θέσης του · Κίνηση προς τα δεξιά σημαίνει αυξάνουμε την συντεταγμένη x της θέσης του · Καθοδική κίνηση σημαίνει ότι μειώνουμε την συντεταγμένη y της θέσης του · Για να υλοποιήσω τις 5 κινήσεις του ελικοπτέρου θα χρησιμοποιήσουμε τη δομή «εάν». Για να ελέγχουμε συνεχώς τις συνθήκες των δομών «εάν» τις τοποθετώ ως σώμα σε μια δομή επανάληψης «για πάντα» · Τέλος για την περίπτωση που το ελικοπτεράκι πέφτει πάνω στα σύννεφα θα χρησιμοποιήσουμε μια δομή «για πάντα εάν» με συνθήκη «αν αγγίζει το χρώμα γκρι». Ας προχωρήσουμε τώρα στην λύση του προβλήματος. Πρώτα δημιουργούμε το σκηνικό με την βοήθεια της ζωγραφικής, όπως φαίνεται στην εικόνα 12.1.4.13 και εισάγουμε το αντικείμενο ελικοπτεράκι. Έπειτα υλοποιούμε τις πέντε κινήσεις όπως φαίνεται στον κώδικα της εικόνας 12.1.4.14.



Eικόνα 12.1.4.13

Eικόνα 12.1.4.14

Τέλος υλοποιούμε τον κώδικα για την περίπτωση που το αντικείμενο πέφτει πάνω σε σύννεφο όπως φαίνεται στην εικόνα 12.1.4.15.

Eικόνα 12.1.4.15

· Μέσα από το συγκεκριμένο παράδειγμα γίνεται φανερό ότι η δομή **για πάντα** όταν στο σώμα της περιλαμβάνει μία ή περισσότερες δομές **εάν** ισοδυναμεί με μία ή περισσότερες δομές **για πάντα εάν** ανεξάρτητες μεταξύ τους. Η συνθήκη και το σώμα εντολών κάθε εμφωλευμένης δομής **εάν** είναι ίδια με αυτά κάθε δομής **για πάντα εάν** (εικόνα 12.1.4.16). Ειδικότερα στον κώδικα η περίπτωση που το ελικοπτεράκι πέφτει πάνω σε σύννεφο μπορεί να υλοποιηθεί με μια δομή «εάν» μέσα στη δομή «για πάντα». · Οι κινήσεις που υλοποιούνται με τα πάνω και δεξί βέλη με δομές «εάν» θα μπορούσαν να υλοποιηθούν με την εντολή «όταν πατηθεί το πλήκτρο».
 * __Παρατηρήσεις__**

Eικόνα 12.1.4.16

Από την μελέτη των παραπάνω παραδειγμάτων διαπιστώνουμε τον τρόπο λειτουργίας κάθε δομής. Στη δομή «**για πάντα**» το σώμα εκτελείται πάντα. Αντίθετα στη δομή «**για πάντα εάν**» η συνθήκη παίζει καθοριστικό ρόλο στην εκτέλεση ή όχι του σώματός της. Αν η συνθήκη είναι αληθής το σώμα της εκτελείται, ενώ αν είναι ψευδής δεν εκτελείται.
 * __Συμπέρασμα__**


 * Παράδειγμα 3: Οπτική ψευδαίσθηση **

Στο παράδειγμα αυτό συνδυάζουμε την εντολή «**για πάντα**» του κεφαλαίου 10 και την «**επανέλαβε ώσπου**» που παρουσιάστηκε στην προηγούμενη υποενότητα, για να δημιουργήσουμε την εξής οπτική ψευδαίσθηση : Δύο αντικείμενα-μπάλες ίδιου χρώματος, γκρι ανοιχτό (επιλέγουμε από το φάκελο του scratch “Things” το αντικείμενο baseball1 (Βλ. εικόνα 12.1.4.17)και το αλλάζουμε μέσω της ζωγραφικής χρωματίζοντάς το γκρι ανοιχτό(Βλ. εικόνα 12.1.4.18)), τοποθετημένες η μια στην πάνω αριστερή γωνία και η άλλη στην κάτω δεξιά γωνία ενός ασπρόμαυρου σκηνικού (Βλ. 12.1.4.19), κινούνται συνέχεια με αντίθετες κατευθύνσεις σε οριζόντια διεύθυνση (το σκηνικό δεν υπάρχει στο scratch). Η ψευδαίσθηση είναι ότι ενώ οι μπάλες έχουν το ίδιο χρώμα, όταν η μία είναι στο άσπρο και η άλλη στο μαύρο φόντο, νομίζουμε ότι έχουν διαφορετικό χρώμα. Όσον αφορά την κίνηση των αντικειμένων, θέλουμε να κινούνται κατά δύο βήματα ώσπου να αγγίξουν τα όρια του παραθύρου. Μόλις τα αγγίξουν, να αλλάζουν φορά κάνοντας δύο βήματα προς την άλλη κατεύθυνση, ώσπου να αγγίξουν πάλι τα όρια του παραθύρου. Αυτή η συμπεριφορά των αντικειμένων θα εκτελείται συνεχώς.

Για να οδηγηθούμε στη λύση, σκεφτόμαστε ως εξής :
 * Εφόσον οι μπάλες κινούνται με τον ίδιο τρόπο αλλά με αντίθετη φορά, οι κώδικες της κίνησής τους θα είναι συμμετρικοί.
 * Δημιουργούμε το σκηνικό με τη βοήθεια της ζωγραφικής, χρωματίζοντας τη μισή επιφάνεια λευκή και την άλλη μισή μαύρη.
 * Για να εισάγουμε για δεύτερη φορά το ίδιο αντικείμενο, το αντιγράφουμε με το εργαλείο «διπλασιασμός».

Eικόνα 12.1.4.17 Eικόνα 12.1.4.18



Eικόνα 12.1.4.19

Ας προχωρήσουμε στην λύση του προβλήματος. Δημιουργούμε μέσω ζωγραφικής το σκηνικό, εισάγουμε τα δύο αντικείμενα και υλοποιούμε τις δύο κινήσεις, όπως τις περιγράψαμε προηγουμένως, όπως φαίνεται στις εικόνες 12.1.4.20 και 12.1.4.21.

Eικόνα 12.1.4.20 Eικόνα 12.1.4.21

Πώς γίνεται να υλοποιήσετε την κίνηση της μπάλας χωρίς να συμπεριλάβετε την δομή «επανέλαβε ώσπου»;
 * __Παρατηρήσεις__**

http://scratch.mit.edu/projects/vforvirginia/1045522


 * Παράδειγμα 4: Παιχνίδι με μπάλα **

.
 * Στο παράδειγμα αυτό συνδυάζουμε την εντολή «**για πάντα**» του κεφαλαίου 10 και τις «**περίμενε ώσπου**» και «**για πάντα εάν**» που παρουσιάστηκαν στις προηγούμενες υποενότητες. Σκοπός μας είναι να δημιουργήσουμε ένα παιχνίδι, στο οποίο ο χρήστης κινώντας ένα αντικείμενο μαύρη πλάκα, το οποίο έχουμε τοποθετούμε λίγο πάνω από το κόκκινο δάπεδο (Βλ. εικόνα 12.1.4.22) (το αντικείμενο αυτό δεν υπάρχει στο scratch), θα προσπαθεί να εμποδίσει ένα αντικείμενο μπάλα (Βλ. εικόνα 12.1.4.23) (το επιλέγουμε από το φάκελο Things του scratch) να ακουμπήσει ένα κόκκινο δάπεδο (Βλ. εικόνα 12.1.4.24) (το σκηνικό δεν υπάρχει στο scratch), γιατί τότε θα τελειώνει το παιχνίδι. Η μπάλα, που πέφτει από τη θέση (13, 157), κάνει μια συνδυαστική κίνηση η οποία εξαρτάται από την κατεύθυνσή της και από το αν χτυπάει στην πλάκα ή στα όρια. Αναλυτικότερα, η μπάλα θα κινείται πάντα κατά 10 βήματα και αν χτυπάει στα όρια θα αναπηδά. Όταν η κατεύθυνσή της είναι θετική θέλουμε να στρίβει δεξιά κατά 3 μοίρες, αλλιώς να στρίβει αριστερά κατά 3 μοίρες. Τέλος, όταν πέφτει πάνω στην πλάκα, ακούγεται o ήχος Bubbles που επιλέγουμε από το φάκελο Effects του scratch, αλλάζει η τρέχουσα κατεύθυνσή της κατά 180 μοίρες, κινείται 5 βήματα και στρίβει δεξιά κατά 15 μοίρες. Εν συνεχεία για να κινείται και προς τ’ αριστερά επαναλαμβάνονται οι παραπάνω κινήσεις με τη διαφορά ότι η τρέχουσα κατεύθυνση τώρα αλλάζει κατά -90 μοίρες.

Eικόνα 12.1.4.22 Eικόνα 12.1.4.23

Eικόνα 12.1.4.24

Από την περιγραφή του προβλήματος προκύπτουν τα ακόλουθα : · Το σκηνικό και η μαύρη πλάκα δημιουργούνται μέσω ζωγραφικής. · Όσον αφορά την κίνηση της πλάκας από το χρήστη, μπορεί να πραγματοποιηθεί είτε με το δείκτη του ποντικιού είτε με το πάτημα πλήκτρων. Σε κάθε περίπτωση η κίνηση θα γίνεται για πάντα οπότε θα χρησιμοποιήσουμε μια δομή «για πάντα». · Για την κίνηση της μπάλας χρειαζόμαστε τρεις δομές επανάληψης: μια «για πάντα» έτσι ώστε να κινείται κατά 10 βήματα και αν χτυπάει στα όρια να αναπηδά, μια «για πάντα εάν» με συνθήκη «αν αγγίζει την πλάκα» έτσι ώστε να υλοποιείται η επιθυμητή συμπεριφορά στη συγκεκριμένη περίπτωση και μια «περίμενε ώσπου» για τον τερματισμό του παιχνιδιού.

Προχωράμε στη λύση δημιουργώντας το σκηνικό της εικόνας 12.1.4.24 με τη βοήθεια της ζωγραφικής. Στη συνέχεια εισάγουμε το αντικείμενο μπάλα(Βλ. εικόνα 12.1.4.23), ενώ δημιουργούμε στη ζωγραφική το αντικείμενο πλάκα της εικόνας 12.1.4.22. Το μπλοκ του κώδικα που περιγράφει τη συμπεριφορά της πλάκας είναι στην εικόνα 12.1.4.25.

Η συμπεριφορά της μπάλας όπως είπαμε και παραπάνω είναι αποτέλεσμα τριών ανεξάρτητων κινήσεων και παρουσιάζονται παρακάτω. Eικόνα 12.1.4.26 Η εικόνα 12.1.4.27 παρουσιάζει τον κώδικα της κίνησης που η μπάλα κάνει συνέχεια Eικόνα 12.1.4.27
 * Η εικόνα 12.1.4.26 παρουσιάζει τον κώδικα όπου γίνεται η τοποθέτηση της μπάλας, σε μια συγκεκριμένη θέση από την οποία πέφτει κάθε φορά με την έναρξη του παιχνιδιού, καθώς και τη συνθήκη τερματισμού του παιχνιδιού όταν η μπάλα αγγίξει το κόκκινο χρώμα. (Παρατηρείστε τι συμβαίνει αν δεν συμπεριλάβετε στον κώδικα την εντολή που τοποθετεί τη μπάλα στη θέση (13.157)).

Η εικόνα 12.1.4.28 παρουσιάζει τον κώδικα της κίνησης που η μπάλα κάνει συνεχώς, ανάλογα με την κατεύθυνσή της. Eικόνα 12.1.4.28


 * Τέλος, η εικόνα 12.1.4.29 παρουσιάζει τον κώδικα της κίνησης που η μπάλα κάνει για πάντα εάν αγγίζει την πλάκα.

Eικόνα 12.1.4.29

Η συνθήκη της δομής «**περίμενε ώσπου**», γίνεται αληθής μόνο μία φορά οπότε και θα σταματήσουν όλα τα σενάρια. Όμως μέχρι να γίνει αληθής περιμένει, κι έτσι εκτελούνται όλες οι υπόλοιπες κινήσεις. Θα μπορούσε η δομή αυτή να αντικατασταθεί από κάποια άλλη δομή επανάληψης;
 * __Συμπέρασμα__**

http://scratch.mit.edu/projects/vforvirginia/1045516


 * 12.2 Αισθητήρες στις δομές επανάληψης**

Οι αισθητήρες είναι ένα πολυδύναμο εργαλείο του Scratch! Το διαφοροποιούν από οποιοδήποτε εργαλείο προγραμματισμού υπάρχει και συμβάλλουν στο να αντιδρά όχι μόνο στις εντολές σου απο το πληκτρολόγιο αλλα και με το εξωτερικο περιβάλλον!!!! Μια πολύ σημαντική δυνατότητα του Scratch είναι ότι ενσωματώνει τα πολυμέσα που χρησιμοποιείτε καθημερινά για να δημιουργείτε ακόμη πιο ενδιαφέρουσες εφαρμογές!! Αρκεί να έχετε ένα μικρόφωνο συνδεδεμένο και η εφαρμογή **δυνατα?** θα λειτουργήσει μόλις προκύψει δυνατός ήχος από το μικρόφωνο!!!
 * __Δυνατά???__ **

Θέλουμε λοιπόν μόλις φωνάξεις από το μικρόφωνο η γάτα να αρχίσει να «τρέχει»... Άρα... Εικόνα 12.2.1

Το Scratch προσφέρει ευελιξία κινήσεων για τη δημιουργία εφαρμογών επομένως μπορεί όχι μόνο να εκτελεί ενέργειες αντιδρώντας στο «κλικ» του ποντικιού αλλά και στο πάτημα οποιουδήποτε πλήκτρου!!!
 * __Πατήθηκε το πλήκτρο κενό???__ **

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

Άρα... Εικόνα 12.2.2 εναλλακτικά μπορείτε να χρησιμοποιήσετε ως ορίσματα αντί για το κενό οποιοδήποτε άλλο γράμμα

Και γιατί να μην αρχίζει να εκτελείται το sprite απλά με ένα άγγιγμα του ποντικιού και να σταματάει όταν το ποντίκι δεν το ακουμπάει??? Άρα... Εικόνα 12.2.3
 * __Αγγίζει το:__ **

Μπορείτε να χρησιμοποιήσετε αυτόν τον αισθητήρα και με άλλους τρόπους.. 1. Ακουμπώντας το ποντίκι πάνω στο αντικείμενο χρησιμοποιώντας την επιλογη δείκτης ποντικιού 2. Ακουμπώντας τα όρια της οθόνης χρησιμοποιώντας την επιλογή όρια 3. Ακουμπώντας κάποιο άλλο αντικείμενο χρησιμοποιώντας το όνομα του αντικειμένου.

Θα εφαρμόσουμε στους 3 παραπάνω αισθητήρες σε ένα παράδειγμα. Θα φτιάξουμε το πρώτο μέρος μίας περιπέτειας με τον Αστερίξ και τον Οβελίξ!!
 * ΕΦΑΡΜΟΓΗ!!!!**

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

Διακρίνουμε επομένως τα εξής αντικείμενα: Τον Αστερίξ, τον Οβελίξ, τον Ιντεφίξ. Κάποια στοιχεία του δάσους όπως λουλούδια. Ένα σκηνικό δάσους στο οποίο διαδραματίζεται το πρώτο κομμάτι της ιστορίας.

Ο Αστερίξ Οβελίξ κινούνται και φωνάζουν τον Ιντεφίξ. Ο Ιντεφίξ δεν είναι ορατός αρχικά αλλά παρόλα αυτα κινείται στο σκηνικό μέχρι να τον φωνάξουν Ένα λουλούδι θα παίζει επίσης και τον ρόλο του αφηγητή και επεξηγεί και την ροή του παιχνιδιού!

Οι στόχοι είναι 2: 1. Να απαντήσει ο Ιντεφίξ". Δηλαδή να τον φωνάξετε από το μικρόφωνο και αυτός να γαβγίσει 2. Να βρεθεί ο Ιντεφίξ. Δηλαδή αφού γάβγισε να ψάξετε με το ποντίκι το δάσος μέχρι να εμφανιστεί. (Μην ξεχνάτε ότι όλη αυτή της ώρα κινείται)


 * **στόχοι:** || **αισθητήρας:** ||
 * Να απαντήσει ο Ιντεφίξ || δυνατά ||
 * Να βρεθεί ο Ιντεφίξ || αγγίζει το δείκτης ποντικιού ||

Μερικά σημαντικά μέρη από τους κώδικες και τα τρεξίματα έχουν ως εξής..

Εικόνα 12.2.4 Εικόνα 12.2.5

Εικόνα 12.2.6 Εικόνα 12.2.7

Εικόνα 12.2.8 Εικόνα 12.2.9

Εικόνα 12.2.10

Όσο συνεχίζουν την βόλτα τους νυχτώνει και ξαφνικά πέφτουν πάνω σε μία κατασκήνωση Ρωμαίων. Οι πρωταγωνιστές παραμένουν οι ίδιοι αλλά αυτή τη φορά επιλέγουμε να εισάγουμε ενα νέο αντικείμενο που είναι εικόνα και των 3 ηρώων. Το σκηνικό πρέπει να αλλάξει αφού έχει νυχτώσει και βρίσκονται μπροστά σε σκηνές ρωμαίων.



Εικόνα 12.2.11 Εικόνα 12.2.12

__Πρόκληση: Μπορείτε να βάλετε την δική σας φωνή στους ήρωες? Μπορείτε να αναγνωρίσετε ποια κομμάτια κώδικα αντιστοιχούν σε κάθε εικόνα απο τις 12.2.8-12.2.10?__

Σε αυτήν την υποενότητα θα μελετήσουμε την δυνατότητα το sprite να «αντιδρά» στο κλικ του ποντικιού και να εκτελεί προκαθορισμένες ενέργειες. //Θέλουμε επομένως αν πατηθεί το ποντίκι κάπου στην οθόνη τότε η γάτα να σταματάει να στροβιλίζεται!// //Άρα...// Εικόνα 12.2.13
 * __Πατήθηκε το ποντίκι??__ **

Με την εντολή αγγίζει το χρώμα μπορείς να θέτεις ενέργειες σε ένα sprite μόλις ακουμπήσει κάποιο άλλο αντικείμενο. Έτσι μπορούν τα αντικείμενα εύκολα να αλληλεπιδρούν μεταξύ τους. Τώρα θέλουμε η γάτα να ψάχνει ένα αντικείμενο και να αρχίσει να νιαουρίζει αν το βρει... Άρα... Εικόνα 12.2.14
 * __Αγγιζει το χρώμα...__ **

Τώρα με τους καινούριους αισθητήρες που μάθαμε θα επεκτείνουμε την περιπέτεια.

Αφού λοιπόν ο Αστερίξ και ο Οβελίξ βρήκαν τον Ιντεφίξ και έπεσαν πάνω στην κατασκήνωση των Ρωμαίων πρέπει να βρουν τον Πανοραμίξ για να τους δώσει μαγικό φίλτρο αλλά και να προειδοποιήσουν τους συγχωριανούς τους!

Οι 3 βασικοί ήρωες, ο Αστερίξ, ο Οβελίξ και ο Ιντεφίξ αποτελούν όπως και πριν ένα αντικείμενο. Εισάγεται στην ιστορία ο Πανοραμίξ επομένως δημιουργούμε ένα καινούριο αντικείμενο το οποίο είναι ένα σκίτσο του!

Οι στόχοι είναι οι εξής: 1. Να βρούν τον Πανοραμίξ 2. Να του εξηγήσουν την κατάσταση και να του ζητήσουν μαγικό φίλτρο 3. Να προειδοποιήσουν τους συγχωριανούς τους.

Τρικ: Αντί να εισάγετε κάθε έναν χαρακτήρα απο τους υπόλοιπους Γαλάτες ξεχωριστά, εφόσον δεν τους δώσετε και ενεργό ρόλο εισάγετε τους ως μέρος του σκηνικού! Κάνουμε την ιστορία μας να προχωράει δίνοντας ως εισόδους διαδοχικά τα γράμματα του αγγλικού αλφαβήτου και έτσι ελέγχουμε την ροή των διαλόγων και της εξέλιξης.
 * Στόχοι || Αισθητήρας ||
 * 1 || Αγγίζει το..Αντικείμενο4 ||
 * 2 || πατήθηκε πλήκτρο ||
 * 3 || Πατήθηκε ποντίκι - πατήθηκε πλήκτρο ||





Μερικά σημαντικά μέρη από τους κώδικες και τα τρεξίματα έχουν ως εξής..

Εικόνα 12.2.15

Εικόνα 12.2.16 Εικόνα 12.2.17

Εικόνα 12.2.18 Εικόνα 12.2.19 Εικόνα 12.2.20 Εικόνα 12.2.21

__Πρόκληση: Μπορείτε να βάλετε την δική σας φωνή στους ήρωες? Μπορείτε να αναγνωρίσετε ποια κομμάτια κώδικα αντιστοιχούν σε κάθε εικόνα απο τις 12.2.18-12.2.20__? __Μπορείτε βλέποντας τον ενδεικτικό κώδικα να πείτε ποιες εικόνες θα μπορούσαν να συμπεριληφθούν από το τρέξιμο?__ __Τι θα γινόταν αν επιλέγαμε άλλη εντολή ελέγχου και όχι την περίμενε ώσπου? Μπορείτε να το φτιάξετε διαφορετικά ?__

Σε αυτήν την υποενότητα θα μελετήσουμε και την περίπτωση το χρώμα από ένα sprite να αγγίζει το χρώμα από ένα άλλο. Θελουμε η γάτα να κινείται μέχρι να φτάσει κάποιο συγκεκριμένο αντικείμενο και μόλις το φτάσει να κάνει άλλη ενέργεια, να σκεφτεί ότι θέλει να φάει. Άρα... Εικόνα 12.2.22
 * __Το χρώμα ... αγγίζει το χρώμα...__ **

Σε αυτό το σημείο θα συνεχίσουμε το παιχνίδι εφαρμόζοντας και τον παραπάνω αισθητήρα! Οι Γαλάτες έχουν εφοδιαστεί ήδη με το μαγικό φίλτρο και περιμένουν τους Ρωμαίους στα τείχη της πόλης. Εσείς θα διαλέξεασ τον παίχτη σας. Αν θα είστε με τους Ρωμαίους ή με τους Γαλάτες.

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

Οι στόχοι είναι οι εξής: 1. Να εμφανίζεται ο αφηγητής 2. Να επιλέξετε τον παίχτη 3.1 Οι Ρωμαίοι να απειλήσουν 3.2 Οι Γαλάτες να επιτεθούν 4. Αν επιτεθούν οι Γαλάτες χρειαζόμαστε καινούριο σκηνικό και ένα ακόμη αντικείμενο, τον Αστερίξ που επιτίθεται εναλλακτικά επιλέγουμε να κάνουμε αλλαγή ενδυμασίας, το αντικείμενο Γαλάτες να το κάνουμε Αστερίξ και μετά να το αλλάξουμε και πάλι σε ενδυμασία που δείχνει έκρηξη!
 * ή**


 * Στόχοι || Αισθητήρας ||
 * 1 || --- ||
 * 2 || --- ||
 * 3.1 || χρώμα αγγίζει χρώμα ||
 * 3.2 || αγγίζει τα όρια ||

Μερικά σημαντικά μέρη από τους κώδικες και τα τρεξίματα έχουν ως εξής..

Εικόνα 12.2.23

Εικόνα 12.2.24

Εικόνα 12.2.25 η πρώτη ενδυμασία του αντικειμένου γαλάτες Εικόνα 12.2.26

Αν κάνεις κλικ στους Ρωμαίους: Οι Ρωμαίοι κινούνται κατά μήκος των τειχών και απείλούν τουσ Γαλάτες Εικόνα 12.2.27

Και αν είσαι με το μέρος των Γαλατών:

αλλαγή στην επόμενη ενδυμασία. Ο Αστερίξ επιτίθεται. Εικόνα 12.2.28 η τελευταία ενδυμασία Εικόνα 12.2.29

__Πρόκληση: Μπορείτε να βάλετε την δική σας φωνή στους ήρωες? Μπορείτε να αναγνωρίσετε ποια κομμάτια κώδικα αντιστοιχούν σε κάθε εικόνα απο τις 12.2.26-12.2.29__? __Μπορείτε να τροποποιήσετε τον κώδικα έτσι ώστε χωρίς αλλαγές ενδυμασίας να έχουμε το ίδιο αποτέλεσμα?__

__Αισθητηρας πατήθηκε κουμπί__ ** Με αυτήν την λειτουργία, το Scratch σε εισάγει στα πιο διασκεδαστικά κομμάτια της διαδραστικότητας!!! Το μόνο που χρειάζεσαι είναι την παρακάτω περιφερειακή μονάδα!! Εικόνα 12.2.30

Άρα... Εικόνα 12.2.31

Και μία τελευταία επέκταση στο παράδειγμα! Θέλουμε με χρήση του **scratchboard** να φτιάξουμε την μάχη. Αρχικά θα διαλέξετε παίχτη και θα τον συνδέσετε με το κατάλληλο κουμπί του αισθητήρα Με χρήση της πένας θα σχεδιάσετε την περιοχή δράσης του ήρωά σας Με χρήση του αισθητήρα φωτός θα γίνεται η επίθεση Με χρήση του αισθητήρα ήχου θα σταματάει η επίθεση Με τη χρήση του πλήκτρου θα εμφανίζεται όλο το χωριό με τους Γαλάτες, αλλά μόνο εφόσον τελειώσει η μάχη.
 * < ** Και λιγο.... **** googling **** για λεπτομέρειες!!! ** ||
 * < **το scratchboard είναι μια πλακέτα με αισθητήρες, που κατασκευάστηκε από την ομάδα του Lifelong Kindergarten group του MIT Media Lab για να συνδέσει το προγραμματιστικό περιβάλλον και τις εφαρμογές του scratch με τιμές φυσικών μεγεθών του πραγματικού κόσμου, με real time μετρήσεις τους. Ανοίγει δε πολλούς ορίζοντες στον προγραμματιστή του scratch, προκαλώντας ιδέες για διάφορες πρωτότυπες εφαρμογές.** ||
 * < **Περιλαμβάνει: έναν αισθητήρα φωτός, έναν αισθητήρα ήχου. ένα πλήκτρο, έναν μεταβολέα, τέσσερις ακροδέκτες στους οποίους μπορούν να συνδεθούν 4 ζεύγη καλωδίων με κροκοδειλάκια, μέσω των οποίων μετριέται ηλεκτρική αντίσταση (συμπεριλαμβάνονται στη συσκευασία).** ||
 * < **Επικοινωνεί με τον υπολογιστή μέσω σειριακής θύρας (ή θύρας USB) – συνοδεύεται δε από καλώδιο serial-to-USB . Κατασκευάζονταν μέχρι το 2008 από φοιτητές του MIT.** ||

Παρακάτω δίνονται κάποια ενδεικτικά στιγμιότυπα.

Ο Ιντεφίξ και πάλι στον ρόλο του αφηγητή Εικόνα 12.2.32

Εικόνα 12.2.33 Εικόνα 12.2.34

Αν επιλέξετε τον Αστερίξ: Εικόνα 12.2.35 Εικόνα 12.2.36

...Και αν επιλέξετε τον Οβελίξ Εικόνα 12.2.37 Εικόνα 12.2.38

__Πρόκληση: Μπορείτε να βάλετε την δική σας φωνή στους ήρωες? Μπορείτε να δημιουργήσετε τα κομμάτια κώδικα που αντιστοιχούν σε κάθε εικόνα απο τις 12.2.32-12.2.37__? __Μπορείτε να τροποποιήσετε τον κώδικα έτσι ώστε χωρίς αλλαγές ενδυμασίας να έχουμε το ίδιο αποτέλεσμα?__

=**12.3 Τελεστές**=

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


 * Παράδειγμα 1 : Συνδυασμός απλών μαθηματικών και ζωγραφικής **

Στο παρόν παράδειγμα, το πρόβλημα περιλαμβάνει δύο όμοια αντικείμενα, butterfly2 (Βλ. εικόνα 12.3.1)από τον φάκελο αντικειμένων Animals του scratch, τα οποία αρχικά είναι τοποθετημένα στις αντισυμμετρικές θέσεις (235,0) και (-235,0) αντίστοιχα. Ο στόχος είναι να ρυθμίσουμε την κίνησή τους έτσι ώστε, το ένα αντικείμενο να σχεδιάζει τη συνάρτηση του ημιτόνου της θέσης του x, η οποία μεταβάλλεται με βήμα 5, πολλαπλασιασμένη επί 100 αφήνοντας ίχνη πίσω του, ενώ το άλλο να σχεδιάζει την αντισυμμετρική της προηγούμενης γραφική παράσταση. Ο σχεδιασμός των γραφημάτων θέλουμε να εκτελείται, και για τα δύο αντικείμενα, όσο η τιμή του x είναι μικρότερη του 210. Όσον αφορά το σκηνικό, επιλέγουμε αυτό με το όνομα stars (Βλ. εικόνα 12.3.2) από τον φάκελο Nature των υποβάθρων του scratch. Τέλος, θέλουμε κάθε φορά που τρέχουμε την εφαρμογή να ξεκινάμε από καθαρό πλάνο. Το επιθυμητό αποτέλεσμα απεικονίζεται στην εικόνα 12.3.3.

Εικόνα 12.3.1

Εικόνα 12.3.2 Εικόνα 12.3.3

Ας προχωρήσουμε λοιπόν στο συλλογισμό για την επίλυση του προβλήματος. Εφόσον τα γραφήματα που θα προκύψουν θα είναι αντισυμμετρικά, αρκεί η μελέτη της κίνησης του ενός από τα δύο αντικείμενα. Για να είναι το δεύτερο αντικείμενο όμοιο με το πρώτο, το αντιγράφουμε με το εργαλείο διπλασιασμός.Αφού η συμπεριφορά του αντικειμένου θέλουμε να εκτελείται επαναληπτικά εάν το x είναι μικρότερο του 210 χρησιμοποιούμε τη δομή επανάληψης «για πάντα εάν» με συνθήκη το x<210. Η εντολή «καθάρισε» τοποθετείται πριν την έναρξη της επανάληψης έτσι ώστε να καθαρίζει κάθε φορά το σκηνικό.

Ας εστιάσουμε τώρα στην λύση του προβλήματος. Αρχικά εισάγουμε τα δύο αντικείμενα και το σκηνικό όπως εξηγήσαμε παραπάνω. Ο κώδικας της κίνησης του ενός αντικειμένου όπως περιγράφηκε παραπάνω, φαίνεται στην εικόνα 12.3.4. Ο κώδικας για την κίνηση του άλλου αντικειμένου-πεταλούδα είναι αντισυμμετρικός και απεικονίζεται στην εικόνα 12.3.5.

Εικόνα 12.3.4 Εικόνα 12.3.5

Η εντολή «καθάρισε» είναι απαραίτητη στους κώδικες και των δύο αντικειμένων; Αφαιρέστε την και παρατηρείστε τι συμβαίνει. Με ποια άλλη δομή επανάληψης θα μπορούσε να υλοποιηθεί η συγκεκριμένη εφαρμογή; Η συνθήκη θα παραμείνει ίδια ή χρειάζεται να αλλάξει;
 * __Παρατηρήσεις__**

http://scratch.mit.edu/projects/vforvirginia/1045437


 * Παράδειγμα 2 : Κρυμμένο σχήμα **

Στο παράδειγμα που ακολουθεί θα δούμε πώς μπορούμε να χρησιμοποιήσουμε τέσσερις διαφορετικούς τελεστές σε συνδυασμό με αισθητήρες και τις δομές επανάληψης «για πάντα» και «για πάντα εάν», προκειμένου να εμφανίσουμε ένα κρυμμένο σχήμα. Πιο συγκεκριμένα, η εφαρμογή περιλαμβάνει δύο αντικείμενα (δεν υπάρχουν στο scratch). Το κρυμμένο σχήμα το οποίο έχει το ίδιο χρώμα με το σκηνικό (δεν υπάρχει έτοιμο στο scratch) ώστε να μη φαίνεται, και μία κουκίδα η οποία κινείται από τον χρήστη με το δείκτη του ποντικιού και αφήνει συνεχώς το αποτύπωμά της, μόνο όταν πατηθεί το ποντίκι και όταν δεν ακουμπάει το κρυμμένο σχήμα, αλλάζοντας χρώμα εφέ κατά 5. Επιπρόσθετα, θέλουμε η κουκίδα να αφήνει συνεχώς το αποτύπωμά της σε θέση με συντεταγμένες (x,y) που θα ορίζονται ως (ποντίκι x + θέση x * 0.2, ποντίκι y + θέση y * 0.2). Τέλος, θέλουμε όταν πατηθεί το πλήκτρο c καθώς και όταν ξεκινάει από την αρχή η εφαρμογή, να καθαρίζει η οθόνη. Το τελικό αποτέλεσμα όταν ως κρυμμένο σχήμα έχει επιλεγεί μια καρδιά είναι αυτό της εικόνας 12.3.6. Εικόνα 12.3.6

Ο συλλογισμός που θα ακολουθήσουμε για την επίλυση επικεντρώνεται στην επιλογή της κατάλληλης συνθήκης που θα περιέχει η δομή επανάληψης. Πιο συγκεκριμένα, επειδή θέλουμε η κουκίδα να αφήνει το αποτύπωμά της, μόνο όταν πατηθεί το ποντίκι **και** όταν **δεν** ακουμπάει το κρυμμένο σχήμα, επιλέγουμε τους τελεστές και, όχι για τη συνθήκη της δομής **για πάντα εάν**. Επιπλέον, για να αφήνει το αποτύπωμά της συνέχεια στη θέση που περιγράφηκε παραπάνω θα χρειαστούμε τη δομή για πάντα. Δημιουργούμε το αντικείμενο κουκίδα και το κρυμμένο σχήμα στη ζωγραφική όπως φαίνεται στις εικόνες 12.3.7 και 12.3.8. Τέλος, όπως προαναφέραμε με τη βοήθεια της ζωγραφικής βάφουμε το σκηνικό στο ίδιο χρώμα με το κρυμμένο σχήμα για να μη φαίνεται. Η εντολή καθάρισε χρησιμοποιείται για τον καθαρισμό της οθόνης κάθε φορά που ξεκινάει η εφαρμογή. Εικόνα 12.3.7 Εικόνα 12.3.8

Ξεκινάμε λοιπόν να ανακαλύψουμε τη λύση του προβλήματος ακολουθώντας το δρόμο της περιγραφής. Αρχικά εισάγουμε τα δύο αντικείμενα και το σκηνικό όπως προείπαμε. Όσον αφορά τη θέση και την αλλαγή χρωμάτων στην εμφάνιση της κουκίδας, ο κώδικας της εικόνας 12.3.9 είναι αυτός που πετυχαίνει το επιθυμητό αποτέλεσμα. Η υλοποίηση για την αποτύπωση του ίχνους του αντικειμένου, φαίνεται στην εικόνα 12.3.10 και συνάγεται εύκολα από την περιγραφή του προβλήματος. Εικόνα 12.3.9

Εικόνα 12.3.10 Η τελευταία απαίτηση του προβλήματος είναι να καθαρίζουμε την οθόνη όποτε επιθυμούμε, με το πάτημα του πλήκτρου c. Για το σκοπό αυτό αρκεί το σώμα εντολών της εικόνας 12.3.11.

Εικόνα 12.3.11

http://scratch.mit.edu/projects/vforvirginia/1045507

Σ’ αυτό το παράδειγμα θα εξηγήσουμε την χρήση του τελεστή «ή» μέσα από την προσπάθειά μας να δημιουργήσουμε ένα screen saver, με τη βοήθεια ενός αντικειμένου κουκίδα (Βλ. εικόνα 12.3.12) η οποία δεν υπάρχει στα έτοιμα αντικείμενα του scratch. Ο χρήστης πατώντας τα πλήκτρα από το 1 μέχρι το 5 θα αλλάζει με διάφορους τρόπους τα χαρακτηριστικά της. Η κουκίδα τοποθετείται αρχικά στην αρχή των αξόνων, σε λευκό φόντο, έχει πραγματικό μέγεθος, ενδυμασία την ενδυμασία1 και εμφανίζει το μήνυμα «Γεια! Πάτησε τα πλήκτρα από 1 μέχρι 5 για να μεταβείς σε διαφορετικά χαρακτηριστικά! Πάτησε το 0 για να σταματήσουν όλα! Πάτησε το κενό για να καθαρίσει η οθόνη!». Όσον αφορά τη συμπεριφορά της, όταν πατηθεί το πλήκτρο 1 το αντικείμενο θα περιμένει ένα δευτερόλεπτο και θα πηγαίνει στην επόμενη ενδυμασία. Για την υλοποίηση αυτού του βήματος θα δημιουργήσουμε άλλες τρεις ενδυμασίες μέσω της ζωγραφικής, όπως φαίνεται στην εικόνα 12.3.13. Με το πάτημα του πλήκτρου 2 πάλι το αντικείμενο θα περιμένει ένα δευτερόλεπτο και στη συνέχεια θα αλλάζει το ψηφιδωτό εφέ κατά 50 ώσπου να πατήσουμε ξανά το 2. Όταν το πλήκτρο 3 πατηθεί το αντικείμενο θα περιμένει για 1΄΄ και θα πηγαίνει σε μια θέση (x,y) οι συντεταγμένες της οποίας θα επιλέγονται τυχαία, αφήνοντας το αποτύπωμά του μέχρι να πατηθεί πάλι το 3. Για την τυχαία επιλογή θα χρησιμοποιήσουμε τον τελεστή «**τυχαία επιλογή από…μέχρι…**», ο οποίος αναλύεται καλύτερα στο κεφάλαιο 15. Γενικά η λειτουργία του είναι να επιλέγει τυχαία μια τιμή από ένα διάστημα που καθορίζουμε εμείς. Εδώ θέλουμε το x να παίρνει τιμές μεταξύ των -240, 240, ενώ το y μεταξύ των τιμών -180, 180. Όταν το πλήκτρο 4 πατηθεί το αντικείμενο θα περιμένει για 1΄΄ και στη συνέχεια θα αλλάζει χρώμα εφέ κατά 25 αφήνοντας το ίχνος του, ώσπου να πατηθεί ξανά το 4. Τέλος, με το πάτημα του πλήκτρου 5 θα αλλάζει το μέγεθός του κατά 5 και θα αφήνει αποτύπωμα μέχρι να ξαναπατηθεί το πλήκτρο. Επιπλέον θέλουμε η εκτέλεση όλων των σεναρίων να σταματάει με το πάτημα του μηδενός, ενώ με το πάτημα του κενού να καθαρίζει η οθόνη. Επειδή με το πάτημα των πλήκτρων προσθέτουμε εφέ στο αρχικό αντικείμενο πρέπει κάθε φορά που ξεκινάει η εφαρμογή να τα καθαρίζουμε, να εμφανίζουμε το αντικείμενο σε πρώτο πλάνο και να καθαρίζουμε το σκηνικό. Εικόνα 12.3.12 Εικόνα 12.3.13
 * Παράδειγμα 3 : Δημιουργία **** Screen saver **

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

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

Όσον αφορά τα αποτελέσματα που προκύπτουν από το πάτημα των πλήκτρων 1 έως 5 και του κενού, οι κώδικες υλοποίησής του συνάγονται άμεσα από την περιγραφή του προβλήματος και απεικονίζονται στην εικόνα 12.3.15.

Εικόνα 12.3.15

http://scratch.mit.edu/projects/vforvirginia/1055038


 * Παράδειγμα 4 : Κυνήγι Θησαυρού **

Σ’ αυτό το παράδειγμα θα εξηγήσουμε την χρήση των τελεστών «**mod»**, « ** = »** και « ** > ».** Σκοπός μας είναι να δημιουργήσουμε ένα παιχνίδι στο οποίο ο χρήστης κουνώντας ένα αντικείμενο δύτη(Βλ. εικόνα 12.3.16) (από τον φάκελο People του scratch επιλέγουμε το αντικείμενο diver 2) θα προσπαθεί να βρει ένα αντικείμενο θησαυρό (Βλ. εικόνα 12.3.17) (την εικόνα του θησαυρού την βρήκαμε στο link ([]) και μέσω της ζωγραφικής διορθώνουμε το φόντο της από λευκό σε κίτρινο. Επιλέγουμε το κίτρινο εξαιτίας του θησαυρού που λάμπει) που υπάρχει στο βυθό(Βλ. εικόνα 12.3.18) (από τον φάκελο Nature του scratch επιλέγουμε το σκηνικό underwater), οπότε και θα τερματίζει το παιχνίδι μας. Όταν ο δύτης βρει επιτέλους τον κίτρινο θησαυρό θα εμφανίζεται το μήνυμα «Επιτέλους βρήκα τον θησαυρό» για 1 δευτερόλεπτο και θα σταματούν όλα τα σενάρια. Εικόνα 12.3.16 Εικόνα 12.3.17 Εικόνα 12.3.18 Ο δύτης, ξεκινώντας αρχικά από τη θέση (-184, 2), θα κολυμπάει συνεχώς προσέχοντας να μην ακουμπήσει τα αντικείμενα τοξικό ψάρι, τοξικό ψάρι 2 και χταπόδι(Βλ. Εικόνες 12.3.19, 12.3.20, 12.3.21) (από τον φάκελο Animals του scratch επιλέγουμε τα αντικείμενα fish 4, fish 2 και octopus1-b), γιατί τότε θα επιστρέφει στην θέση εκκίνησής του εμφανίζοντας το μήνυμα «Προσπάθησε ξανά» για 2 δευτερόλεπτα και το παιχνίδι θα ξεκινά πάλι από την αρχή. Εικόνα 12.3.19 Εικόνα 12.3.20 Εικόνα 12.3.21

Όσον αφορά το δύτη, τον βάζουμε να κάνει μια συγκεκριμένη κίνηση ανάλογα με το πλήκτρο που πατάμε. Αν επιλέξω το πάνω βέλος αλλάζω την συντεταγμένη y της θέσης του κατά 3, αν επιλέξω το κάτω βέλος αλλάζω την συντεταγμένη y της θέσης του κατά -3 και αν επιλέξω το δεξί βέλος αλλάζω την συντεταγμένη x της θέσης του κατά 3. Όσον αφορά τα αντικείμενα τοξικό ψάρι, τοξικό ψάρι 2 και χταπόδι: Το τοξικό ψάρι θα τοποθετείται αρχικά κάτω δεξιά στο παράθυρο στη θέση (177, -90) και ώσπου να φτάσει στα όρια του παραθύρου θα κινείται κατά -30 βήματα με εναλλαγή της κατεύθυνσης από 57 σε 107. Μόλις φτάνει στα όρια του παραθύρου θα επιστρέφει στην αρχική του θέση. Το τοξικό ψάρι 2 θα τοποθετείται αρχικά πάνω αριστερά στο παράθυρο στη θέση (-200, 94), θα κινείται για πάντα κατά 10 βήματα, ενώ πρέπει να ελέγχουμε αν η συντεταγμένη x της τρέχουσας θέσης του διαιρεμένη με το 10 δίνει ακέραιο υπόλοιπο 0 και αν αγγίζει τα όρια του παραθύρου. Στην πρώτη περίπτωση μεταβάλλουμε το ύψος στο οποίο κολυμπάει αυξάνοντας αρχικά την συντεταγμένη y της θέσης του κατά 40 και μειώνοντάς τη μετά κατά -45. Στην δεύτερη περίπτωση το βάζουμε να επιστρέφει στην αρχική θέση. Το χταπόδι θα τοποθετείται αρχικά στον πάτο του βυθού προς τα αριστερά του παραθύρου στη θέση (-72, -158), με ενδυμασία αυτή της εικόνας 12.3.21 και με κατεύθυνση 52. Όσο η συντεταγμένη y της θέσης του είναι μικρότερη του 30 θα κινείται κατά ένα συγκεκριμένο αριθμό βημάτων και θα αλλάζει την ενδυμασία του από αυτή της εικόνας 12.3.21 σε αυτή της εικόνας 12.3.22 (Βλ. Εικόνα 12.3.22) (Επιλέγουμε το αντικείμενο octopus1-a από τον φάκελο Animals του scratch ως δεύτερη ενδυμασία για το χταπόδι.) και ανάποδα.

Εικόνα 12.3.22 Για την υλοποίηση του παιχνιδιού, λαμβάνοντας υπόψη την παραπάνω περιγραφή, πρέπει να σκεφτούμε τα εξής:
 * Ο χρήστης θα κινεί τον δύτη με τα πλήκτρα «πάνω βέλος», «κάτω βέλος» και «δεξί βέλος» για να μπορέσει να φτάσει στο θησαυρό. Για να κινείται συνέχεια ο δύτης θα χρησιμοποιήσουμε μια δομή για πάντα η οποία θα περιέχει στο σώμα της δομές εάν για την υλοποίηση της κίνησης με τα βέλη και για την περίπτωση που αγγίζει το κίτρινο χρώμα. Για τις περιπτώσεις που ο δύτης έρχεται σε επαφή με τα αντικείμενα τοξικό ψάρι, τοξικό ψάρι 2 και χταπόδι θα χρειαστούμε τρεις δομές για πάντα εάν με συνθήκες «αγγίζει το τοξικό ψάρι», «αγγίζει το τοξικό ψάρι 2», «αγγίζει το χταπόδι» αντίστοιχα.
 * Η αρχική θέση του δύτη θα είναι τέτοια, ώστε να μην ακουμπάει τα αντικείμενα τοξικό ψάρι, τοξικό ψάρι 2 και το χταπόδι.
 * Η θέση του θησαυρού θα είναι τέτοια, ώστε ο δύτης να διασχίζει το μεγαλύτερο μέρος του παραθύρου προκειμένου να τον φτάσει.
 * Η κίνηση του τοξικού ψαριού θα υλοποιηθεί με μια επανέλαβε ώσπου με συνθήκη «αγγίζει τα όρια» και θα βρίσκεται εσωτερικά μιας δομής για πάντα έτσι ώστε να υλοποιείται συνεχώς.
 * Η κίνηση του τοξικού ψαριού 2 θα υλοποιηθεί με μια δομή για πάντα η οποία θα περιέχει στο εσωτερικό της δύο δομές εάν για τις περιπτώσεις αν η συντεταγμένη x της τρέχουσας θέσης του διαιρεμένη με το 10 δίνει ακέραιο υπόλοιπο 0 και αν αγγίζει τα όρια του παραθύρου.
 * Η κίνηση του χταποδιού θα υλοποιηθεί με μια επανέλαβε ώσπου με συνθήκη «θέση y > 30» και θα βρίσκεται εσωτερικά μιας δομής για πάντα έτσι ώστε να υλοποιείται συνεχώς.

Ας προχωρήσουμε τώρα στην λύση του προβλήματός μας. Μετά την εισαγωγή των αντικειμένων το επόμενο βήμα είναι να μελετήσουμε τη συμπεριφορά τους: Όσον αφορά το δύτη, ο κώδικας που περιγράφει την κίνηση του είναι στην εικόνα 12.3.23. Έπειτα ακολουθεί ο κώδικας που περιγράφει την συμπεριφορά του σε σχέση με τα αντικείμενα τοξικό ψάρι, τοξικό ψάρι 2 και το χταπόδι και είναι στην εικόνα 12.3.24. Εικόνα 12.3.23 Εικόνα 12.3.24 Όσον αφορά το τοξικό ψάρι, ο κώδικας που περιγράφει την κίνηση του είναι στην εικόνα 12.3.25. Όσον αφορά το τοξικό ψάρι 2, ο κώδικας που περιγράφει την κίνηση του είναι στην εικόνα 12.3.26. Όσον αφορά το χταπόδι, ο κώδικας που περιγράφει την κίνηση του είναι στην εικόνα 12.3.27.

Εικόνα 12.3.25

Εικόνα 12.3.26

Εικόνα 12.3.27

http://scratch.mit.edu/projects/vforvirginia/1045426


 * [[image:giaPantaEan.gif]] || επαναλαμβάνει το σώμα εντολών της, αν η συνθήκη είναι αληθής ||
 * [[image:epanelaveWspou.gif]] || επαναλαμβάνει το σώμα εντολών της μέχρι η συνθήκη να είναι αληθής ||
 * [[image:perimeneWspou.gif]] || δεν κάνει τίποτα(περιμένει) μέχρι η συνθήκη να γίνει αληθής ||





**Ανακεφαλαίωση**
Ανακεφαλαιώνοντας, στην παρούσα ενότητα ασχοληθήκαμε και πάλι με την έννοια της επανάληψης που γνωρίσαμε αρχικά στο κεφάλαιο 10, καθώς και με τις έννοιες των τελεστών και των αισθητήρων, που γνωρίσαμε στο κεφάλαιο 11. Για την ακρίβεια, εισάγαμε τρεις νέες δομές επανάληψης, τις "για πάντα εάν", "περίμενε ώσπου" και "επανέλαβε ώσπου". Τις συγκρίναμε με τις εντολές "για πάντα" και "επανέλαβε τόσες φορές" του κεφαλαίου 10, προκειμένου να διαπιστώσουμε τις διαφορές τους, και είδαμε πώς μπορούμε να χρησιμοποιήσουμε τους αισθητήρες και τους τελεστές, μέσα στις συνθήκες των δομών επανάληψης, γενικά, έτσι ώστε να δημιουργήσουμε ενδιαφέρουσες εφαρμογές.


 * 12.4 Δραστηριότητες**

__**Δραστηριότητα 1**__

Σωστό ή Λάθος


 * 1) **Σ-Λ :** Μετά τη δομή για πάντα εάν, μπορούμε να συνδέσουμε κι άλλες εντολές.
 * 2) **Σ-Λ :** Η επανέλαβε ώσπου μπορεί να έχει τον ίδιο αποτέλεσμα με την επανέλαβε τόσες φορές.
 * 3) **Σ-Λ :** Ο αισθητήρας αγγίζει το… μπορεί να παίρνει ως όρισμα και κάποιο από τα αντικείμενα που μπορεί να υπάρχουν σε ένα συγκεκριμένο πρόβλημα.
 * 4) Μπορούμε να χρησιμοποιήσουμε τους λογικούς τελεστές "και", "ή", "όχι", για να συγκρίνουμε αριθμούς.
 * 5) **Σ-Λ :** Κάθε φορά που γίνεται αληθής η συνθήκη της εντολής περίμενε ώσπου εκτελείται το σώμα εντολών που ακολουθεί.

Συμπληρώστε τα κενά
 * __Δραστηριότητα 2__**


 * 1) Ο τελεστής…….. γίνεται αληθής μόνο αν και οι δύο συνθήκες του είναι αληθείς, ενώ για τον τελεστή…….. αρκεί μία από τις δύο συνθήκες να αληθεύει.
 * 2) Δεν μπορούμε να χρησιμοποιήσουμε τον αισθητήρα ……………………. χωρίς χρήση εξωτερικής συσκευής.
 * 3) Η δομή……………………. και η δομή …………………. τερματίζουν όταν η συνθήκη τους γίνει αληθής. (αναφερόμαστε σε δύο από τις τρεις δομές επανάληψης που διδάχτηκαν σε αυτό το κεφάλαιο).


 * __Δραστηριότητα 3__**

Εντοπίστε τις κρυμμένες λέξεις :
 * περίμενε ώσπου, επανέλαβε ώσπου, για πάντα εάν, αισθητήρας, τελεστής, συνθήκη.**


 * [[image:kryptolekso.JPG]] ||

Αναγνωρίστε τις δομές επανάληψης και συμπληρώστε τα κενά.
 * __Δραστηριότητα 4__**



= =

Συμπληρώστε το σταυρόλεξο.
 * __Δραστηριότητα 5__**




 * 1) ……εντολών: τοποθετείται στο εσωτερικό μίας δομής επανάληψης**.**
 * 2) Επανέλαβε... και Περίμενε...
 * 3) Για πάντα…
 * 4) Είναι ο «αγγίζει το…».
 * 5) Μπορεί να είναι ελέγχου ή επανάληψης.
 * 6) Λέγονται αλλιώς οι μορφές.
 * 7) Υλοποιείται μέσω των τελεστών <, > και =.


 * __Δραστηριότητα 6__**

Επιλέξτε τη σωστή απάντηση και βρείτε την κρυμμένη λέξη.

1) Ποιός από τους παρακάτω τελεστές αληθεύει, αν και οι δύο συνθήκες του αληθεύουν;

Ε) και Η) ή Θ) όχι

2) Ποια από τις παρακάτω δομές δεν εκτελεί σώμα εντολών;

Γ) Για πάντα-εάν Μ) Επανέλαβε-ώσπου Λ) Περίμενε-ώσπου

3) Ποιά από τις παρακάτω δομές μπορεί να κάνει άπειρες επαναλήψεις;

Ε) Περίμενε-ώσπου Β) εάν Σ) Επανέλαβε τόσες φορές

4) Πρέπει το αντικείμενο να κινείται μέχρι να φτάσει στα όρια.

Ποια από τις παρακάτω συνθήκες είναι η σωστή ;

Ρ) Γ) Χ)

5) Ποιο από τα παρακάτω είναι ένα από τα κοινά χαρακτηριστικά των δομών Επανέλαβε-ώσπου και Περίμενε-ώσπου;

Χ) Σταματούν να εκτελούνται όταν η συνθήκη γίνει αληθής Ν) Σταματούν να εκτελούνται όταν η συνθήκη γίνει ψευδής Λ) Δεν ελέγχουν κάποια συνθήκη

6) Μέσα στη συνθήκη των τελεστών δεν μπορούμε να βάλουμε:

Θ) Άλλους τελεστές Κ) Αισθητήρες Ο) Άλλες εντολές

7) Ποιόν τελεστή θα χρησιμοποιήσουμε για να βρούμε την εφαπτομένη των 30 μοιρών

Ω) cos από 30 Σ) tan από 30 Ο) atan από 30


 * ΚΡΥΜΜΕΝΗ ΛΕΞΗ** :_ _ _ _ _ _ _

__**Δραστηριότητα 7**__

Χρησιμοποιείστε τις δομές επανάληψης «για πάντα εάν», «επανέλαβε ώσπου» και «περίμενε ώσπου» καθώς και τις εντολές "βγαίνω διάλειμμα", "ντύνομαι ζεστά", "παίζω το τραγούδι με την κιθάρα", "τρεφόμαστε" και "πίνουμε νερό" ορίζοντας και τις κατάλληλες συνθήκες ελέγχου στις δομές, προκειμένου να υλοποιήσετε τις παρακάτω προτάσεις.
 * __Εάν θέλουμε να επιβιώσουμε, πρέπει να τρεφόμαστε και να πίνουμε νερό κάθε μέρα για όλη μας τη ζωή.__
 * __Εάν κάνει κρύο, πρέπει πάντα να ντυνόμαστε ζεστά.__
 * __Για να βγεις διάλειμμα περίμενε μέχρι να χτυπήσει το κουδούνι.__
 * __Παίξε το τραγούδι με την κιθάρα μέχρι να μην κάνεις λάθος σε καμία νότα.__

__**Δραστηριότητα 8**__

Περιγράψτε τί κάνουν τα παρακάτω κομμάτια κώδικα:

Εικόνα 12.4.1

Εικόνα 12.4.2

__**Δραστηριότητα 9 : Καλειδοσκόπιο**__

Για την κατασκευή του καλειδοσκοπίου χρειζόμαστε τρία τρίγωνα ίδιου μεγέθους και διαφορετικού χρώματος, όπως φαίνεται στην εικόνα 12.4.3, μικραίνοντάς τα ώστε να είναι ευδιάκριτο το σχέδιο που σχηματίζεται.Αρχικά τοποθετούνται στη θέση με συντεταγμένες (0,0) και κατεύθυνση 0,120,240 αντίστοιχα.Ξεκινώντας η εφαρμογή πρέπει να καθαρίζει το σκηνικό. Η κίνησή των τριγώνων θα είναι επαναληπτική και θα ρυθμίζεται από το πληκτρολόγιο και συγκεκριμένα από τα βέλη πάνω,κάτω,αριστερά και δεξιά. Αναλυτικότερα:

1. με το πάτημα του πάνω βέλους τα τρίγωνα θα κινούνται κατά βήμα 1 και θα αφήνουν ίχνη 2. με το πάτημα του κάτω βέλους τα τρίγωνα θα κινούνται κατά βήμα 1 και με φορά αντίθετη από αυτή που έχουν εκείνη τη στίγμη. 3. με το πάτημα του αριστερού βέλους τα τρίγωνα θα στρίβουν αριστερά κατά 5 μοίρες. 4. με το πάτημα του δεξιού βέλους τα τρίγωνα θα στρίβουν δεξία κατά 5 μοίρες.

Εικόνα 12.4.3

__**Δραστηριότητα 10 :** **Παιχνίδι με το όνομά σας**__

Το αποτέλεσμα της εφαρμογής αυτής θα είναι να εμφανίζονται στην οθόνη sprites της επιλογής σας ισάριθμα με τα γράμματα του ονόματός σας, τα οποία κάνουν μια συγκεκριμένη κίνηση.Όταν πατηθεί κάθε ένα από τα sprites θα εμφανίζεται το γράμμα που του έχετε αντιστοιχίσει στην σωστή θέση έτσι ώστε αφού θα έχετε πατήσει όλα τα sprites να εμφανίζεται το όνομά σας. Η κίνησή τους θα είναι η εξής:θα κινούνται κατά 10 βήματα,όταν ακουμπούν στα όρια του παραθύρου θα αναπηδούν και έπειτα θα στρίβουν δεξιά κατά 1 μοίρα και θα επαναλαμβάνεται μέχρι να κάνουμε κλικ με το ποντίκι στα sprites.

__**Δραστηριότητα 11 :** **Λαβύρινθος 1**__

Θέλουμε να κατασκευάσουμε ένα παιχνίδι με δύο sprites, έναν λαβύρινθο 6 επιπέδων και ένα ανθρωπάκι που θα κινείται μέσα σ'αυτόν.Το φόντο σε κάθε λαβύρινθο θα είναι κίτρινο, ενώ τα εμπόδια θα έχουν διαφορετικό χρώμα.Το σημείο τερματισμού θα είναι μπλε στα 5 πρώτα επίπεδα, ενώ στο τελευταίο θα είναι μωβ.Οι λαβύρινθοι θα είναι κλιμακούμενης δυσκολίας της επιλογής σας. Το ανθρωπάκι θα κινείται με τα αντίστοιχα βέλη πάνω,κάτω,δεξιά,αριστερά κατά 5 βήματα κάθε φορά. Όταν πέφτει σε τοίχο θα επιστρέφει στο σημείο εκκίνησης του εκάστοτε λαβυρίνθου που ορίζετε. Στους 5 πρώτους λαβυρίνθους όταν φτάνει στο μπλε σημείο τερματισμού θα εμφανίζει το μήνυμα "επόμενο επίπεδο" για 2'', ενώ στον τελευταίο λαβύρινθο όταν φτάνει στο μωβ σημείο τερματισμού θα εμφανίζει το μήνυμα "τερμάτισα! " για 2''. Κάθε φορά αλλάζουμε λαβύρινθο πατώντας το κενό και με την αλλαγή αυτή θέλουμε το ανθρωπάκι να μην πέφτει πάνω σε εμπόδιο ή στο σημείο τερματισμού.

__**Δραστηριότητα 12 :** **Λαβύρινθος 2**__

Αυτή η δραστηριότητα είναι επέκταση της προηγούμενης.Εδώ θα μπορούμε να εισάγουμε τρία sprites που θα έχουν τον ρόλο του κακού και ο ήρωάς μας θα πρέπει να αποφεύγει.Κάθε φορά που θα πέφτει σε ένα από αυτά τα sprites θα πηγαίνει στην ίδια θέση (στην οποία δεν θα υπάρχει ούτε τοίχος ούτε σημείο τερματισμού) και το παιχνίδι θα ξεκινά από την αρχή.Τα sprites θα εμφανίζονται με την αλλαγή επιπέδου του λαβυρίνθου αυτή την φορά πατώντας το πλήκτρο "t"(δηλαδή τώρα μπορούμε να αλλάζουμε επίπεδο με δύο τρόπους είτε πατώντας το κενό είτε πατώντας το "t",απλά με την δεύτερη επιλογή μπαίνουν και οι νέοι χαρακτήρες). Όσον αφορά την κίνηση τους,θα κινούνται με βήμα 1 και όταν πέφτουν στα όρια του παραθύρου θα αναπηδούν.