Κεφάλαιο 5

=5. Κίνηση (Γατίδης) Κουνήσου από τη θέση σου! Χόρεψε;=

include component="comments" page="Κεφάλαιο 5" limit="10"

1) Τα παραδείγματα που θα χρησιμοποιήσετε να προσπαθήσετε να δείχνουν τις διαφορετικές περιπτώσεις χρήσης των εντολών κίνησης. Δηλαδη, πότε χρειάζεται να χρησιμοποιήσω εντολή κίνησης με απόλυτες συντεταγμένες, πότε με σχετικές συντεταγμένες, πότε ομαλή κίνηση και πότε να κάνω συνδιασμό κατεύθυνσης και βημάτων; πχ στο παράδειγμα pacman χρειάζεται ο τελευταίος τρόπος. 2) Θα πρέπει να εισάγετε στα παιδιά το σύστημα συντεταγμένων x,y 3)Βάλτε και σκηνικό πίσω από τα αντικείμενα που κουνιούνται για είναι πιο ελκυστικό το παράδειγμα.
 * __ Ομάδα περιεχομένων/Επιβλέπων στο κεφάλαιο 5: kopoular __**
 * Συμβουλές:**

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

[|1.http://www.edutorials.gr/κίνηση-ιπτάμενου-χαρακτήρα-στο-scra] (Δημιουργία ενός καινούργιου χαρακτήρα(μιας νυχτερίδας) και δημιουργία δομών κίνησης με τη χρήση του πληκτρολογίου)

2.[] Eικονογραφημένο κείμενο περιγράφει βήμα βήμα τη λειτουργία dance. Περέχει αντίστοιχο project και pdf.

3.[] Αντίστοιχο video απο το ίδιο site με το παραπάνω με το ίδιο θεματικό αντικείμενο

4.[] {Πλήρης και εικονογραφημένη ανάλυση του συστήματος συντεταγμένων της οθόνης εμφάνισης και περιγραφή βήμα-βήμα για το πώς κινώ τα sprites}

5.[] Σε αυτόν το σύνδεσμο και συγκεκριμένα στο παράδειγμα Creating Movement επεξηγούνται οι κύριες έννοιες της κίνησης και της αλλαγής κατέυθυνσης.

6.[] Στο σύδνεσμο του εκπαιδευτικού Γιώργου Φεσάκη και στο αρχείο ** [|**LACT14_MARBLE_RACER.zip**] ** υπάρχει το πολύ γνωστό παιχνίδι κίνησης που αναδεικνύει με σαφήνεια την έννοια της κίνησης στο Scratch.

7.[] Επεξήγηση κάθε εντολής στην παλέτα της κίνησης.

8.[] Εδώ οι χρήστες μπορούν να βρούν ένα παράδειγμα κίνησης, το optical illusion.

9.[] Περιγραφή step by step του Racing game στο Scratch(Πώς μπορώ να κινήσω ένα sprite-car, μέσω διάφορων κουμπιών έτσι ώστε να μπορώ να κατευθύνω το sprite για να μην βγαίνει από τον δρόμο που έχω δημιουργήσει. Αναφέρει που μπορούμε να βρούμε αυτό το παιχνίδι και στη συνέχεια περιγράφει κάθε σημείο του κώδικα και τη λειτουργικότητα του.

10.[] Ένα βίντεο μιας παρουσίασης σχετικά με το Scratch. Πάνω στο project (κινούμενη γάτα- the cat walk) δείχνει απλές κινήσεις, επαναλαμβανόμενες κινήσεις (forever), περπάτημα της γάτας και άλλαγμα κουστουμιού, χρησιμοποίηση του πληκτρολογίου για τιν έλεγχο της γάτας (μαζί με την if και forever-if), περπάτημα της γάτας μέσω πληκτρολογίου (αισθητήρες και forever-if).

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

__//5. Κίνηση (Γατίδης) Κουνήσου από τη θέση σου! Χόρεψε;//__ // Μαθησιακοί στόχοι // // Να κατανοήσουν και να να είναι σε θέση να αξιοποιήσουν την έννοια της // κατεύθυνσης //και της κίνησης σε κατεύθυνση// //Να κατανοούν το σύστημα συντεταγμένων στην οθόνη εμφάνισης. Να κατανοήσουν και να να είναι σε θέση να αξιοποιήσουν τη θέσης και της αλλαγής θέσης των αντικειμένων με απόλυτες ή σχετικές συντεταγμένες του πλέγματος// Να κατανοήσουν και να να είναι σε θέση να αξιοποιήσουν τον ορισμό κίνησης βάση άλλων αντικειμένων του προγράμματος Να κατανοήσουν την έννοια της μεταβλητής κατάστασης Να αναπτύξουν δεξιότητες σχεδιασμού, ανάπτυξης και αποσφαλμάτωσης ενός προγράμματος Χαρακτηριστικά // Εντολές κίνησης βάσει κατεύθυνσης (κινήσου, στρίψε, δείξε, αναπήδησε) Εντολές βάσει συστήματος συντεταγμένων (πήγαινε στο Χ Υ, άλλαξε Χ,Υ, Θέσε Υ,Χ) Μεταβλητές κατάστασης Χ,Υ,Κατεύθυνση Ο δισδιάστατος χώρος των σεναρίων. Σχεδιασμός ενός προγράμματος, δοκιμή των εντολών, τμηματική ανάπτυξη, αποσφαλμάτωση Παραδείγματα // Τα πρώτα μου βήματα (κίνηση σε μία ευθεία γραμμή, κίνηση ημικυκλικά, σχηματίζοντας ένα τετράγωνο, ...) Το τραμπολίνο (κίνηση πάνω κάτω. Θα μπορούσαμε ίσως να δείξουμε σε αυτό το σημείο και μία πολύ απλή μορφή επανάληψης όπως το "για πάντα... επανέλαβε"). Η συνάντηση κορυφής (Δύο αντικείμενα βρίσκονται στα άκρα της οθόνης και προσπαθούν να συναντηθούν κάπου στο μέσο. Κατόπιν μπορούμε πάλι να τα απομακρύνουμε). Χρειάζεται να βρείτε πιο δημιουργικά παραδείγματα.

=**__Κεφάλαιο 5: Κίνηση__**=

__5.2.1 **Πάμε μια βόλτα?**__

 * **Τα πρώτα μου βήματα(Εντολή κινήσου)**

__5.2.2 **Ναι αλλά προς τα πού?**__

 * **Απόλυτη κατεύθυνση(Εντολή δείξε στην κατεύθυνση)**
 * **Σχετική κατεύθυνση(Εντολή στρίψε X μοίρες)**
 * **Κοίτα εκεί!(Εντολή δείξε στο<δημιουργία αντικειμένου>)**
 * **Μεταβολή!(Εντολή εάν στα όρια αναπήδησε)**
 * **Θα μου στρίψει!(Περιστρέψιμο / μη περιστρέψιμο)**

__**5.3.1 Που βρίσκομαι?**__

 * **Σύστημα συντεταγμένων**

__**5.3.2** **Ραντεβού στο...**__

 * **Απόλυτες συντεταγμένες**
 * **Εντολή "πήγαινε στο X: _, Y: _ "**
 * **Εντολές "θέσε Χ: _ " και "θέσε Υ: _ "**

__**5.3.3 Βήμα - βήμα**__

 * **Σχετικές συντεταγμένες**
 * **Εντολές "άλλαξε Χ κατά _" και "άλλαξε Υ κατά _"**

__**5.4 Ομαλή κίνηση**__

 * **Ο χρόνος είναι …βήμα!(Εντολή ομαλής κίνησης)**

**__5.5 Ανακεφαλαίωση__**

 * **Ανακεφαλαίωση**
 * **Ερωτήσεις**

__**5.6 Ολοκληρωμένες εφαρμογές**__

 * **Βρες την έξοδο (Λαβύρινθος)**
 * **Όποιος τη νύχτα περπατεί…(Συνάντηση animation)**
 * **"Τρεχάτε Ποδαράκια μου"**

=ΣΥΓΓΡΑΦΗ ΚΕΦΑΛΑΙΟΥ=

=__ΚΕΦΑΛΑΙΟ 5: ΚΙΝΗΣΗ__=

"Give me a place to stand and i'm even going to move the earth..."-Archimedes//**
 * //"Δωσ'μου τόπο να σταθώ και κινώ και την γη ακόμα..."-Αρχιμήδης

__5.1 Εισαγωγή__
Σίγουρα λίγο πολύ όλοι σας έχετε παίξει ηλεκτρονικά παιχνίδια σε διάφορες παιχνιδομηχανές ή ακόμα και στον υπολογιστή σας. Σε αυτά όπως γνωρίζετε οι διάφοροι χαρακτήρες και αντικείμενα που συνθέτουν το σκηνικό του παιχνιδιού δεν μένουν ακίνητα αλλά αλλάζουν συνεχώς θέσεις καθώς το παιχνίδι εξελίσσεται. Εξαιρετικά σημαντικό λοιπόν όταν θα θέλετε αργότερα και εσείς να δημιουργήσετε στο Scratch μια ολοκληρωμένη εφαρμογή ή ακόμα και κάποιο δικό σας παιχνίδι είναι να μπορείτε να μετακινείτε και να κατευθύνετε τους χαρακτήρες σας αλλά και τα διάφορα αντικείμενα σε συγκεκριμένες θέσεις στο σκηνικό ανάλογα με την περίσταση. Πως θα μπορούσε κάποιος χαρακτήρας απλά να διασχίσει ένα όμορφο σκηνικό; Πως θα μπορούσε να κινηθεί προς την έξοδο ενός λαβύρινθου αλλάζοντας την κατεύθυνση της κίνησης του όπου πρέπει; Πως θα μπορούσε η γη να κάνει μία περιστροφή γύρω από τον ήλιο με σταθερή ταχύτητα; Ηρθε η ώρα να δώσετε και εσείς ζωή στους χαρακτήρες σας και να τους κινήσετε μέσα σε σκηνικά που οι ίδιοι έχετε δημιουργήσει. Το κεφάλαιο αυτό παρουσιάζει τους διάφορους τρόπους αλλά και τις αντίστοιχες εντολές με τις οποίες τα παραπάνω μπορούν να γίνουν πράξη ξεκινώντας μια όμορφη και ενδιαφέρουσα βόλτα στον κόσμο του Scratch.

__5.2 Κίνηση και κατεύθυνση__
__**5.2.1 Πάμε μια βόλτα?**__


 * **Τα πρώτα μου βήματα**

Αφού φτιάξετε το σκηνικό και το αντικείμενο που επιθυμείτε στο scratch (εικόνα 5.1), είναι η ώρα να ζωντανέψετε το αντικείμενό σας δίνοντας του κίνηση! Σε αυτό το κεφάλαιο θα χρησιμοποιήσετε εντολές από το μενού εντολών "κίνηση" τις οποίες θα σύρετε στο γκρι κεντρικό πλαίσιο του scratch κάτω από την καρτέλα σενάριο. Πριν δώσετε οποιαδήποτε εντολή κίνησης, από το μενού εντολών "έλεγχος" πατήστε πάνω την εντολή **όταν στο (σημαία) γίνει κλικ** και σύρετέ την στο χώρο του σεναρίου. Κάνοντας το αυτό, κάθε φορά που θα κάνετε κλικ στην πράσινη σημαία, θα εκτελούνται ολες οι εντολές που ακολουθούν στο σενάριο που εσείς θα δημιουργήσετε.

__Πως θα κινήσω το αντικείμενό μου?__ Η βασική και πιο απλή εντολή κίνησης είναι η **κινήσου x βήματα**. Η εντολή αυτή, μετατοπίζει το αντικείμενο κατά όσα βήματα ορίσετε εσείς (το ένα βήμα αντιστιχεί σε λίγα χιλιοστά). Σύμφωνα με την εικόνα 5.1, αν δώσετε την εντολή **κινήσου 100 βήματα**, τότε το αντικείμενό σας θα κινηθεί προς τα δεξιά κατά 100 βήματα και αυτό γιατί το αντικείμενό σας κοιτάει προς τα δεξιά.

__Τι γίνεται όμως όταν δεν θέλω να κινήσω το αντικείμενό μου μόνο δεξιά?__ Τότε το αντικείμενο για να κινηθεί προς άλλη κατεύθυνση, πρέπει να κοιτάξει προς άλλη κατεύθυνση. Παρακάτω θα δείτε με ποιους τρόπους γίνεται αυτο. //Εφαρμογή:// Χρησιμοποιώντας τις εντολές της εικόνας 5.2, κινείστε το αντικείμενό σας κατά 500 βήματα.

Εικόνα 5.1

Εικόνα 5.2


 * __5.2.2 Ναι αλλά προς τα πού?__**


 * **Απόλυτη κατεύθυνση**

Πιθανόν όλοι σας να γνωρίζετε το παιχνίδι λαβύρινθος. Ο σκοπός σας είναι να μετακινήσετε έναν χαρακτήρα απο τη μία άκρη στην άλλη, περπατώνταςσε μια συγκεκριμένη διαδρομή και αλλάζοντας κατευθύνσεις Σε αυτή την ενότητα θα μάθετε πως είναι δυνατόν να το κάνετε αυτό μέσω scratch. Ας δούμε αρχικά τις 4 βασικές κατευθύνσεις προς τις οποίες μπορεί να στρέφεται το αντικείμενό σας. Αυτές είναι δεξιά(90 μοίρες), αριστερά(-90 μοίρες), πάνω(0 μοίρες) και κάτω(180 μοίρες). Όταν λέμε οτι το αντικείμενο στρέφεται προς μία κατεύθυνση, εννοούμε οτι κοιτάει προς αυτή την κατεύθυνση. Χρησιμοποιώντας την εντολή **δείξε στην κατεύθυνση**,μπορείτε να επιλέξετε προς ποια από τις βασικές 4 κατευθύνσεις θέλετε να στραφεί το αντικείμενό σας(εικόνα 5.3). Επίσης στη εντολή αυτή μπορείτε να εισάγεται κι εσείς των αριθμό των μοιρών στις οποίες μπορεί να δείξει το αντικείμενο, γράφοντας τον αριθμό στο λευκό κουτάκι που δείχνει τις μοίρες.Έτσι το αντικείμενό σας στρέφεται προς όποια άλλη κατέυθυνση θέλετε αναλόγως τις μοίρες που έχετε ορίσει. Παρατηρείστε οτι με την κάθε επιλογή που κάνετε, το αντικείμενό σας αλλάζει εμφάνιση και κοιτάει προς την κατεύθυνση που έχετε επιλέξει (εικόνα 5.4). Σε συνδυασμό με την εντολή **κινήσου x βήματα** το αντικείμενο μπορεί πλέον να κινηθεί προς οποιαδήποτε κατέυθυνση.

//Εφαρμογή:// Χρησιμοποιώντας τις εντολές **δείξε στην κατεύθυνση** και **κινήσου x βήματα** και αφού τοποθετήσετε το αντικείμενό σας στο σημείο όπως στην εικόνα 5.5, μετακινείστε το αντικείμενό σας μέσα από το λαβύρινθο έτσι ώστε να βρεθεί στην τελική θέση(εικόνα 5.6).

Εικόνα 5.3

Εικόνα 5.4

Εικόνα 5.5

Εικόνα 5.6


 * **Σχετική κατεύθυνση**

Τώρα που ξέρετε πως να κινηθείτε προς τις 4 κατευθύνσεις για να βγείτε από το λαβύρυνθο, τι θα λέγατε να δυσκολέψουμε λίγο το λαβύρυνθο? Στην εικόνα 5.7 βλέπετε το αντικείμενο στην αρχή ενός σπιράλ λαβυρύνθου. Πως θα το προγραμματίσετε έτσι ώστε να φτάσει στο κέντρο? Η δυσκολία που συναντάται σε αυτή την περίπτωση είναι οτι ο λαβύρυνθος αποτελείται μόνο από καμπύλες.Αυτό το καθιστά δύσκολο για το αντικείμενο να διασχίσει το λαβύρυνθο μόνο με τις εντολές κατεύθυνσης **δείξε στην κατεύθυνση**. 'Αρα για να κάνετε το αντικείμενό σας να κινηθεί σε σπιράλ, θα πρέπει να μπορεί να στρίβει και να κινείται υπό διάφορες γωνίες.

__-Μπορούμε να κάνουμε κάτι τέτοιο?__ Φυσικά και μπορείτε αρκεί να του δώσετε την εντολή **στρίψε x μοίρες**. Τότε το αντικείμενό σας στρίβει δεξιόστροφα ή αριστερόστροφα -κατά όσες μοίρες ορίσετε- από την αρχική κατεύθυνση στην οποία βρίσκεται. Για να διευκολυνθείτε μπορείτε από το μενού εντολών της κίνησης,να τσεκάρετε την επιλογή **κατεύθυνση** (εικόνα 5.8 ) η οποία εμφανίζει στο σκηνικό την τρέχουσα κατεύθυνση του αντικειμένου. Έτσι μπορείτε να βλέπετε ανά πάσα στιγμή προς ποια κατεύθυνση είναι στραμμένο το αντικείμενό σας.

//Εφαρμογή:// Κάντε το αντικείμενό σας να διασχίσει το λαβύρυνθο και να κινηθεί κατά μήκος της μεταλλικής πλευράς που είναι τοποθετημένο. Θεωρείστε οτι η αρχική θέση είναι αυτή της εικόνας 5.7 και η τελική αυτή της εικόνας 5.9. Χρησιμοποιείστε τις εντολές **στρίψε x μοίρες** και **κινήσου x βήματα**. Για να πάρετε μια ιδέα για το πως να κινηθείτε, στην εικόνα 5.10 βλέπετε τις πρώτες εντολές που έχουν χρησιμοποιηθεί για να κινηθεί το αντικείμενο της εικόνας 5.7, στο σημείο που βρίσκεται στην 5.10. Έτσι θα συνεχίσετε κι εσείς για την υπόλοιπη διαδρομή.

Εικόνα 5.7

Εικόνα 5.8

Εικόνα 5.9

Εικόνα 5.10

Υπάρχουν πολλά παιχνίδια στον υπολογιστή όπου οι "κακοί" χαρακτήρες του παιχνιδιού κυνηγούν τους "καλούς". Έχετε σκεφτεί πως θα μπορούσατε κι εσείς στα δικά σας προγράμματα να κάνετε κάτι αντίστοιχο? __-Πως μπορούμε να κάνουμε το αντικείμενό μας να "κυνηγήσει" ένα άλλο αντικείμενο?__ Το μόνο που χρειάζεται είναι να δημιουργήσετε ένα δεύτερο αντικείμενο(κατά τον τρόπο που δημιουργήσατε το πρώτο), να το τοποθετήσετε στο σκηνικό και να στρέψετε το αντικείμενό σας προς αυτό. __Πως θα ξέρουμε όμως ποια είναι ακριβώς η θέση του δεύτερου αντικειμένου σε σχέση με το πρώτο?__ Επειδή δεν μπορείτε να το ξέρετε με σιγουριά, χρησιμοποιείστε την εντολή **δείξε στο <μορφή2>**. Με αυτή την εντολή το πρώτο αντικείμενο στρέφεται προς το δεύτερο. Αν του δώσετε την εντολή **κινήσου x βήματα**, τότε το πρώτο κινείται προς το δεύτερο.Έτσι, οπουδήποτε και να είναι το δεύτερο αντικείμενο, το πρώτο θα μπορεί πάντα να στραφεί προς αυτό μόνο με την εντολή **δείξε στο <μορφή2>**, ανεξάρτητα με τη θέση του δεύτερου. //Εφαρμογή//: Έχοντας σαν εκκίνηση το σκηνικό της εικόνας 5.11, πιάστε το φαντασματάκι (μορφή 2) πηγαίνοντας το αντικείμενό σας πάνω του (εικόνα 5.12) με τις εντολές **δείξε στο <μορφή2>** και **κινήσου x βήματα**.
 * **Κοίτα εκεί!**

Εικόνα 5.11

Εικόνα 5.12


 * **Μεταβολή**

Έχετε σκεφτεί ποτέ τι υπάρχει πέρα από τα όρια του σκηνικού? Τι θα κάνει το αντικείμενο μόλις χαθεί από το οπτικό σας πεδίο? Η απάντηση είναι πως το αντικείμενο συνεχίζει την εκτέλεση των εντολών που του έχετε δώσει. Με τη μόνη διαφορά πως δεν μπορεί να εκτελέσει την εντολή **κινήσου x βήματα**. Αυτό γίνεται γιατί εκτός ορίων του σκηνικού το αντικείμενο συναντάει ένα ‘τοίχος’ και δεν μπορεί να κινηθεί παραπέρα. Τι θα γίνει όμως αν στη συγγραφή κάποιου προγράμματός σας το αντικείμενο βρεθεί εκτός ορίων? Πως θα συνεχίσετε από εκεί? Για να μην αναγκαστείτε να αλλάζετε των κώδικά σας κάθε φορά που θα γίνεται αυτό, μιας και είναι πιθανό να μην ξέρετε κάθε πότε μπορεί να συμβεί, μπορείτε να χρησιμοποιήσετε την εντολή **αν στα όρια, αναπήδησε**. Με αυτή την εντολή το αντικείμενο κάνει μεταβολή και στρέφεται κατά 180 μοίρες. Έτσι μπορεί να συνεχίσει να κινείται εντός ορίων του πλαισίου, εφόσον πλέον είναι στραμμένο προς κατεύθυνση η οποία του επιτρέπει να κινηθεί εντός ορίων. Για να κατανοήσετε καλύτερα τι κάνει αυτή η εντολή, ας δούμε ένα πολύ απλό παράδειγμα. Τώρα το σκηνικό μας είναι ένα γήπεδο του τένις και το αντικείμενό μας είναι ένα μπαλάκι του τένις (εικόνα 5.13). Έχει σημειωθεί και η κατεύθυνση έτσι ώστε να μπορείτε να δείτε την αλλαγή της κατά 180 μοίρες.Το παράδειγμά μας δεν είναι ολοκληρωμένη εφαρμογή, απλά έχει σκοπό να σας δείξει πως μπορείτε να κινείται συνεχώς ένα αντικείμενο χωρίς να βγαίνει εκτός ορίων και να σταματάει. Δίνουμε την εντολή **κινήσου 1000 βήματα** και αμέσως μετά βάζουμε την εντολή **εάν στα όρια, αναπήδησε** για να μπορεί το αντικείμενο να στραφεί κατά 180 μοίρες εάν βρεθεί στα όρια. Στην εικόνα 5.14 μπορείτε να δείτε οτι το μπαλάκι βρίσκεται εντός ορίων παρόλο που του δώσατε μεγάλο αριθμό βημάτων και η κατεύθυνσή του έχει αλλάξει κατά 180 μοίρες, πράγμα που σημαίνει πως όταν έφτασε στα όρια, έκανε μεταβολή.

Εικόνα 5.13

Εικόνα 5.14

Ένα τελευταίο ζήτημα που ίσως σας απασχολήσει σχετικά με τα αντικείμενά σας είναι οι επιλογές που βρίσκονται πάνω από το γκρι πλαίσιο(εικόνα 5.15). Τι μπορεί να κάνουν αυτές οι επιλογές? Κατά τη διάρκεια του κεφαλαίου 5.2 η επιλογή που ήταν επιλεγμένη ήταν η **περιστρέψιμο.** Αυτό σημαίνει οτι είχατε τη δυνατότητα να περιστρέψετε το αντικείμενό σας προς οποιαδήποτε κατεύθυνση, οπως και κάνατε μέσα απο τα παραδείγματα και τις εφαρμογές. Η άλλη επιλογή **μόνο το πρόσωπο αριστερά-δεξιά**, είναι μια επιλογή που επιτρέπει στο αντικείμενο να κινείται και να στρέφεται μόνο στον οριζόντιο άξονα. Τι σημαίνει αυτο? Το αντικείμενο δεν μπορεί να στραφεί και να κινηθεί σε οποιαδήποτε άλλη γωνία εκτός των 180 και -180 μοιρών. Δηλαδή οι μόνες κατευθύνσεις που κοιτάει και που κινείται είναι αυτές της εικόνας 5.16. Οι επιλογές αυτές έχουν σκοπό να σας διευκολύνουν αναλόγως τις εφαρμογές που θέλετε να φέρετε σε πέρας, προσαρμόζοντας το αντικείμενό σας σε συγκεκριμένο άξονα κίνησης. Παράδειγμα, εάν έχετε να δημιουργήσετε μια εφαρμογή όπως το παιχνίδι Super Mario στο οποίο ο ήρωας κοιτάει μόνο δεξιά και αριστερά, πρέπει να περιορίσετε το αντικείμενό σας στον οριζόντιο άξονα επιλέγοντας **μόνο το πρόσωπο αριστερά-δεξιά**.
 * **Θα μου στρίψει!**

Εικόνα 5.15

Εικόνα 5.16

**__5.3 Κίνηση με συντεταγμένες__**
Στην προηγούμενη υποενότητα είδαμε πως μπορείτε να κάνετε τον χαρακτήρα σας να κινηθεί με την εντολή **«κινήσου _ βήματα»** που αποτελεί και την απλούστερη εντολή της αντίστοιχης παλέτας εντολών κίνησης. Ωστόσο κίνηση του χαρακτήρα δεν επιτυγχάνεται μόνο με την συγκεκριμένη εντολή.


 * __5.3.1 Που βρίσκομαι?__**

Αν παρατηρήσετε την παλέτα των εντολών κίνησης θα διαπιστώσετε ότι υπάρχει ένας μεγάλος αριθμός εντολών που αναφέρονται στις τιμές «κάποιων» Χ και Y και χρησιμοποιούνται κυρίως για να αλλάξουν τις τιμές αυτές. Οι συγκεκριμένες εντολές έχουν και αυτές σαν αποτέλεσμα την κίνηση του χαρακτήρα με τρόπο παρόμοιο με αυτόν της πρώτης εντολής κίνησης που μάθαμε. Πριν δούμε τον τρόπο με τον οποίο χρησιμοποιούνται αυτές οι νέες εντολές είναι πολύ σημαντικό να κατανοήσετε τι ακριβώς αντιπροσωπεύουν αυτά τα X και Y.

Τι θα απαντούσατε αν κάποιος σας ρωτούσε ποια είναι η θέση του χαρακτήρα στην οθόνη εμφάνισης για κάθε μια από τις περιπτώσεις των εικόνων (5.17) και (5.18);Το πιο πιθανό είναι να δίνατε μία απάντηση του τύπου «στην κάτω δεξιά γωνία» και «στο κέντρο» αντίστοιχα. Τι θα απαντούσατε αλήθεια στην ίδια ερώτηση για την περίπτωση της εικόνας (5.19);

Εικόνα:(5.17)Ο χαρακτήρας στην κάτω δεξιά γωνία (5.18)Ο χαρακτήρας στο κέντρο (5.19)Ο χαρακτήρας σε τυχαία θέση

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

Ας δούμε όμως ένα ακόμα παράδειγμα στο οποίο η θέση των αντικειμένων στην οθόνη εμφάνισης είναι σημαντική και θα θέλαμε να την γνωρίζουμε με ακρίβεια. Φανταστείτε να είχατε το σκηνικό της εικόνας (5.20). Αν τοποθετούσατε ένα αντικείμενο βέλος σε τυχαία θέση στο σκηνικό τι βαθμολογία θα έπαιρνε η «βολή» σας; Όπως μπορείτε να αντιληφθείτε και μόνοι σας η βαθμολογία εξαρτάται άμεσα από τη θέση του βέλους στον στόχο.

Εικόνα 5.20

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

Η οθόνη εμφάνισης αποτελείται εξ' ολοκλήρου από pixels και υπάρχει τρόπος να αναφερθούμε σε καθένα από αυτά απευθείας και με ακριβή τρόπο. Τα pixels θα μπορούσατε να φανταστείτε ότι είναι μικρά τετραγωνάκια που υπάρχουν στην οθόνη σε μορφή πίνακα με γραμμές και στήλες. Έτσι μπορούμε να τα αριθμήσουμε βάση της γραμμής και τη στήλης της θέσης τους. Στο Scratch ο αριθμός της στήλης συμβολίζεται με X και της γραμμής με Y ενώ ένα ζεύγος (Χ,Υ) δίνει την ακριβή θέση ενός pixel στην οθόνη καθώς καθορίζει σε ποια γραμμή και σε ποια στήλη αυτό ανήκει. Το ζεύγος αυτό ονομάζεται __συντεταγμένες__ του pixel.

Ας δούμε τώρα ένα παράδειγμα για να γίνουν κατανοητά τα παραπάνω. Στην εικόνα (5.21) έχουμε μεγεθύνει την οθόνη εμφάνισης του Scratch περίπου 30 φορές και έχουμε χρωματίσει 3 pixels των οποίων και σημειώσαμε τη θέση από κάτω προσδιορίζοντας τις τιμές των Χ και Υ.

Εικόνα 5.21 ( πηγή: http://www.howardism.org/Technical/Scratch/Tutorials/Moving.html)

Παρατηρούμε λοιπόν ότι: Α)Το μπλε pixel είναι ακριβώς στο κέντρο της οθόνης και είναι στη στήλη με αριθμό 0 και στην γραμμή με αριθμό επίσης 0. Στην προκειμένη περίπτωση λοιπόν οι συντεταγμένες του είναι (X = 0, Y = 0). B)Το κόκκινο pixel είναι στη στήλη με αριθμό 2 και στη γραμμή με αριθμό 4 άρα έχει συντεταγμένες (Χ=2 ,Υ=4). Γ)Το πράσινο pixel τέλος είναι στη στήλη με αριθμό 4 και στη γραμμή με αριθμό -3 οπότε έχει συντεταγμένες (X=4, Y=-3).

Πάμε τώρα να δούμε το χαρακτήρα μας πάνω στο σύστημα συντεταγμένων που μόλις αναφέραμε. Στο περιβάλλον του Scratch στις επιλογές για το σκηνικό πατάμε «υπόβαθρα -> εισαγωγή» διαλέγουμε το σκηνικό «xy-grid» και πατάμε «εντάξει». Εάν η διαδικασία γίνει σωστά το αποτέλεσμα θα είναι να έχουμε πλέον στην οθόνη εμφάνισης αυτό που φαίνεται στη εικόνα (5.22).



Εικόνα 5.22

Παρατηρήστε ότι ο χαρακτήρας σας βρίσκεται στο κέντρο του σκηνικού και έχει συντεταγμένες X=0 και Y=0. Μπορείτε επιπλέον να το επιβεβαιώσετε πατώντας στο περιβάλλον του Scratch στο εικονίδιο «Μορφή 1» και βλέποντας στις επιλογές για τον χαρακτήρα που εμφανίζονται τις τιμές που έχουν τα X και Υ του (Εικόνα 5.23).



Εικόνα 5.23

Ενας δεύτερος τρόπος να γνωρίζετε κάθε στιγμη τις συντεταγμένες της θέσης του χαρακτήρα σας είναι να επιλέξετε από την παλέτα των εντολών κίνησης τις μεταβλητές κατάστασης «Θέση X» και «θέση Y» (Εικόνα 5.24). Το αποτέλεσμα θα είναι να εμφανιστούν στην πανω αριστερή γωνία του σκηνικού οι συντεταγμένες οι οποίες επίσης θα αλλάζουν αυτόματα κάθε φορά που ο χαρακτήρας σας αλλάζει θέση. Περισσότερα για τις μεταβλητές κατάστασης θα μάθετε στο κεφάλαιο 14. Το παραπάνω μπορεί να γίνει και για περισσότερους από έναν χαρακτήρες ή ακόμα και για όλους τους χαρακτήρες που είναι στο σκηνικό τη δεδομένη στιγμή αρκεί να επιλέξετε για καθέναν από αυτούς ξανά τις εν λόγω επιλογές καθώς οι μεταβλητές κατάστασης αναφέρονται σε κάθε χαρακτήρα ξεχωριστά.(Εικόνα 5.25).

Εικόνα 5.24

Εικόνα 5.25

Δοκιμάστε και μόνοι σας. Μετακινήστε το χαρακτήρα σε διάφορες θέσεις στο σκηνικό και παρατηρήστε τις τιμές που παίρνουν τα X και Y σε κάθε περίπτωση. Πλέον ανά πάσα στιγμή και σε οποιαδήποτε σημείο και αν βρίσκεται ο χαρακτήρας σας γνωρίζετε την ακριβή του θέση και μπορείτε να αναφερθείτε εύκολα σε αυτήν.

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


 * __5.3.2: Ραντεβού στο…__**

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

Γιατί να μπλέξουμε με τις συντεταγμένες για να κινήσουμε τον χαρακτήρα μας τη στιγμή που με την εντολή «κινήσου _ βήματα» μπορούμε με πολύ απλό τρόπο να τον κάνουμε να αλλάξει θέση; Για μπορέσετε να απαντήσετε από μόνοι σας σε αυτό σκεφτείτε λίγο το σενάριο της εικόνας (5.25). Πως θα μπορούσε ο σκύλος να «πιάσει» τη γάτα με την συγκεκριμένη εντολή; Πόσα βήματα θα έπρεπε να κάνει και προς ποια κατεύθυνση;

Με την συγκεκριμένη εντολή ο __χαρακτήρας μεταβαίνει στις συντεταγμένες (____X,____Y) που του ορίζουμε__.
 * Η εντολή:**

Η παραπάνω εντολή όταν εκτελεστεί έχει σαν αποτέλεσμα την μετακίνηση του χαρακτήρα μας σε μία νέα θέση στο σκηνικό η οποία __εξαρτάται αποκλειστικά και μόνο__ από τις τιμές που συμπληρώσαμε στην εντολή και __είναι ανεξάρτητη__ από τη θέση που είχε ο χαρακτήρας πριν από την εκτέλεση της. Η νέα θέση μάλιστα θα έχει συντεταγμένες ακριβώς τις τιμές αυτές.

Για να δούμε τώρα πως με τη χρήση αυτής της νέας εντολής μπορεί ο σκύλος να μετακινηθεί στο σημείο που είναι και η γάτα στο σενάριο μας. Το μόνο που χρειάζεται είναι να ξέρουμε τις συντεταγμένες της θέσης της γάτας και στείλουμε το σκύλο απευθείας στις συντεταγμένες αυτές. Έχοντας επιλέξει εμφάνιση των συντεταγμένων των δύο μορφών με τον τρόπο που μάθαμε στην προηγούμενη ενότητα βλέπουμε τις συντεταγμένες της γάτας (Μορφή 1) και έπειτα στο σενάριο του σκύλου (Μορφή 2) τοποθετούμε την παραπάνω εντολή συμπληρώνοντας στα X και Υ τις συντεταγμένες αυτές (Εικόνα 5.26).

Εικόνα 5.26

Εάν λοιπόν στο σενάριο για τη Μορφή 2 εκτελεστεί ο κώδικας της εικόνας (5.27) τότε το αποτέλεσμα θα είναι αυτό που φαίνεται στην εικόνα (5.28). Παρατηρήστε στη δεύτερη εικόνα τις συντεταγμένες των δύο χαρακτήρων. Μετά την εκτέλεση είναι ακριβώς οι ίδιες και οι δύο χαρακτήρες βρίσκονται πλέον στην ίδια ακριβώς θέση. Ο στόχος επετεύχθη με τη χρήση μόλις μιας εντολής και χωρίς να μπλεχτείτε καθόλου με εντολές αλλαγής κατεύθυνσης.

Εικόνα 5.27

Εικόνα 5.28

Υπάρχουν ωστόσο περιπτώσεις όπου χρειάζεται να αλλάξουμε __μόνο το__ __X__ ή __μόνο το__ __Y__ από τις συντεταγμένες του χαρακτήρα μας. Όταν θέλουμε να μετακινήσουμε το χαρακτήρα μας μόνο οριζόντια ή μόνο κατακόρυφα δεν χρειάζεται να αλλάξουμε και τις δύο συντεταγμένες του αλλά μόνο τη μία από αυτές ανάλογα με την περίσταση. Σκεφτείτε για παράδειγμα να θέλατε ο χαρακτήρας σας να ανέβει μία κατακόρυφη σκάλα. Ποια από τις συντεταγμένες του θα αλλάζατε για να το καταφέρετε;Η άλλη θα χρειαζόταν να αλλάξει;

Αν και η συγκεκριμένη περίπτωση μπορεί να αντιμετωπιστεί και με την παραπάνω εντολή (πως ;) κάτι τέτοιο ούτε κομψό θα ήταν ούτε εύχρηστο. Για αυτό το λόγο το Scratch περιλαμβάνει δύο εντολές που λειτουργούν εντελώς ανάλογα με την προηγούμενη με μόνη διαφορά ότι αλλάζουν τη μια μόνο από τις συντεταγμένες του χαρακτήρα όταν εκτελεστούν αφήνοντας την άλλη ανεπηρέαστη.

και Μετακινούν το χαρακτήρα αλλάζοντας τιμή μόνο στο Χ ή στο Υ αντίστοιχα.
 * Οι εντολές:**

Ο συνδυασμός των δύο παραπάνω εντολών ισοδυναμεί με την εντολή «πήγαινε στο X:_ Y:_ » οπότε το προηγούμενο σενάριο θα μπορούσε εναλλακτικά να υλοποιηθεί με αυτές τις δύο εντολές οι οποίες θα δίνανε και ακριβώς το ίδιο αποτέλεσμα. Μπορείτε να το δοκιμάσετε και θα το διαπιστώσετε και μόνοι σας. Γενικά ισχύει η ισοδυναμία που φαίνεται στην εικόνα (5.29).

Εικόνα 5.29

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

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


 * __5.3.3: Βήμα-βήμα.__**

Με τις εντολές κίνησης που έχουμε δει ως τώρα μπορούμε να κάνουμε τον χαρακτήρα μας να αλλάξει θέση στη σκηνή εκτελώντας ένα «άλμα» από ένα σημείο απευθείας σε κάποιο άλλο. Θα μπορούσε να πει κανείς ότι έως τώρα __μετακινούμε__ και __όχι κινούμε__ το χαρακτήρα μας καθώς ακόμα και μεγάλες αποστάσεις στη σκηνή καλύπτονται αστραπιαία. Πως θα μπορούσαμε άραγε να δούμε το χαρακτήρα μας να κινείται στη σκηνή βήμα-βήμα προς τον προορισμό του και όχι με μια απευθείας μετάβαση σε αυτόν;

και Με τις εντολές αυτές μπορούμε να __μεταβάλλουμε__ κατά όσο θέλουμε τις τιμές των X και Y αντίστοιχα.
 * Οι εντολές:**

Οι παραπάνω εντολές είναι αρκετά διαφορετικές από αυτές που είδαμε στην προηγούμενη υποενότητα παρόλο που μοιάζουν αρκετά εξωτερικά. Η μεγάλη τους διαφορά είναι ότι αυτές μεταβάλλουν τα X και Y __σε σχέση πάντα__ με τις τιμές που αυτά έχουνε τη δεδομένη στιγμή σε αντίθεση με τις «θέσε X:_» και «θέσε Y:_» οι οποίες δίνουν στα X και Υ τις τιμές που τους ορίζουμε __ανεξάρτητα__ με τις τιμές που αυτά έχουνε εκείνη τη στιγμή.

Δείτε ένα παράδειγμα χρήσης των νέων αυτών εντολών για να καταλάβετε αυτή τη διαφορά στην εικόνα (5.30). Αρχικά οι συντεταγμένες της θέσης του χαρακτήρα μας ήταν X = -202 και Υ= -29. Μετά την εκτέλεση των εντολών «άλλαξε Χ κατά 100» και «άλλαξε Υ κατά 10» έχουμε: Α)Χ = -202 + 100 = -102 και Β)Υ = -29 +10 = -19

Παρατηρείτε και μόνοι σας ότι το Χ που προκύπτει εξαρτάται από την τιμή που είχε πριν την εκτέλεση της εντολής (-202) και από τη μεταβολή που ορίζουμε στην εντολή(100). Εντελώς αντίστοιχα προκύπτει και το νέο Υ και οι συντεταγμένες της θέσης του χαρακτήρα μας είναι πλέον Χ=-102 και Υ= -19.

Εικόνα 5.30

Τι τιμές θα είχαν τελικά τα Χ και Υ αν με ίδια αρχική κατάσταση εκτελούσαμε τις εντολές «θέσε Χ:100» και «θέσε Υ:10» ; Αν οι αρχικές συντεταγμένες ήταν Χ=50, Υ=50 τι τελικές θα είχαμε και στις δύο περιπτώσεις; Τι παρατηρείτε ;

Χρησιμοποιώντας τώρα αυτές τις δύο νέες εντολές πάμε να κάνουμε την πρώτη μας απόπειρα να δώσουμε ρεαλιστική κίνηση στο χαρακτήρα μας και να τον κάνουμε βήμα – βήμα να φτάσει στον προορισμό του. Έστω ότι έχουμε το σκηνικό της εικόνας (5.31) και θέλουμε ο χαρακτήρας μας να κάνει μία βόλτα κατά μήκος της λίμνης και να διασχίσει «αργά» το σκηνικό. Ποια εντολή θα χρησιμοποιούσατε και πως για να το καταφέρετε;

Εικόνα 5.31

Θέλουμε μόνο οριζόντια κίνηση άρα θα χρησιμοποιήσουμε κάποια εντολή που να μεταβάλλει μόνο το Χ από τις συντεταγμένες του χαρακτήρα μας. Επιπλέον δεν θέλουμε «άλμα» στην άλλη άκρη του σκηνικού αλλά βήμα-βήμα κίνηση και μάλιστα αργή. Λαμβάνοντας υπόψη αυτά που μόλις αναφέραμε οδηγούμαστε στην επιλογή της εντολής «άλλαξε Χ κατά **__1__**» και εισάγουμε στο σενάριο του χαρακτήρα μας τον κώδικα που φαίνεται στην εικόνα (5.32).

Εικόνα 5.32

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

Το παραπάνω ήταν απλά μια πρώτη απόπειρα να δώσουμε ρεαλιστική βήμα - βήμα κίνηση στο χαρακτήρα μας χρησιμοποιώντας τις εντολές κίνησης με σχετικές συντεταγμένες. Με βάση τα όσα ξέρετε έως τώρα ο παραπάνω είναι και ο μόνος τρόπος να καταφέρετε κάτι τέτοιο. Μπορεί βέβαια να τροποποιηθεί ώστε να γίνεται «αυτόματα» χωρίς δηλαδή να χρειάζεται να πατάτε συνέχεια το πράσινο σημαιάκι .Αυτό όμως γίνεται μόνο με χρήση εντολών επανάληψης τις οποίες και θα μάθετε αργότερα στο κεφάλαιο 10.

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

__**5.4 Ομαλή κίνηση**__
Στην ενότητα αυτή θα περιγράψουμε πως μπορούμε να μετακινήσουμε τον ηρωά μας απο σημείο σε ένα άλλο με σταθερή ταχύτητα για κάποιο συγκεκριμένο χρονικό διάστημα που οι ίδιοι έχουμε ορίσει.Συγκεκριμένα θα αξιοποιήσουμε τις έννοιες και τα όσα εχουμε μάθει στο σύστημα συντεταγμένων και στην κίνηση με κατεύθυνση και θα προσπαθήσουμε να συνδυάσουμε με ομαλή κίνηση την μετακίνηση του αντικειμένου που έχουμε δημιουργήσει από ένα σημειο (χ,ψ) σε ένα άλλο (χ',ψ').


 * **Ο χρόνος είναι …βήμα! (Εντολή ομαλής κίνησης)**


 * __Τι σημαίνει όμως ομαλή κίνηση;__**

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

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


 * __Τί μόνο αυτό;__**

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


 * __Η εντολή__:**



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

Έστω ότι το αντικείμενο μας βρίσκετε στην αρχική κατάσταση (0,0) και θέλω να το μετακινήσω με **σταθερή ταχύτητα** στο σημείο (166,96). Σκοπός μας είναι να είναι ευδιάκριτη κίνηση απο το σημείο (0,0) που αποτελεί την αρχική κατάσταση σε ένα σημείο (εδώ το (166,96)). Η μετακίνηση του από το σημείο (0,0) στο (166,96) επιθυμώ να διαρκέσει 5 δευτερόλεπτα.

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

Για να δώ τώρα την μετακίνηση του ήρωά μου απο το ένα σημείο στο άλλο θα γράψω στο σενάριο μου τις εξής εντολές:

Επιλέγουμε απο το μενού την εντολή και απο την επιλογή την εντολή

και έχουμε το εξής σενάριο:



Αντικαθιστούμε τις επιθυμητές τιμές στην εντολή και τώρα έχουμε στο σενάριό μας την κίνηση που επιθυμούμε να κάνει το αντικείμενο μας Πατώντας την πράσινη σημαία έχουμε τις εξής καταστάσεις:


 * Αρχική :**

Εικόνα 5.33

**Εικόνα 5.34
 * Ενδιάμεση :


 * Τελική (θέση (166,96)):

**Εικόνα 5.35

Και ναι! Ο ήρωάς μας γλίστρησε στο σημείο και για τον χρόνο που εμείς του ορίσαμε!!!Είμαστε ετοιμοι τώρα να τον κάνουμε κι άλλες βόλτες σε ποιο ειδυλιακά μέρη;

__ΕΦΑΡΜΟΓΗ 1:__ **"Καβουράκης και Αστεριάδης σε υποβρύχιες βόλτες"**

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

Βήμα 1 : Εισάγουμε στην σκηνή τις μορφές και από τον φάκελο **animals** όπως διδαχθήκαμε στο κεφάλαιο 4. Στην συνέχεια της εφαρμογής ως **κ.Καβουράκη** θα ονομάζουμε την **μορφή 1** και ως **κ. Αστεριάδη** την **μορφή 2**. Βήμα 2: Στην συνέχεια εισάγουμε για σκηνικό την επιλογή από τον φάκελο **nature** όπως διδαχθήκαμε στο κεφάλαιο 4.

Βήμα 3:Τώρα έχουμε έτοιμους τα αντικείμενα και το σκηνικό για να δράσουν οι ήρωές μας! Αρκεί να γράψουμε στο σενάριο μας πως θέλουν να κινηθούν! Τοποθετούμε τα αντικείμενα στο κάτω μέρος του σκηνικού σε θέσεις δεξιά και αριστερά που έμεις θα ορίσουμε μετέπειτα στον κώδικά μας.

Εικόνα 5.36

Βήμα 4: Το σενάριο για τις 2 μορφές θα είναι το εξής:

Για τον κ. Καβουράκη

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

Ας δούμε τώρα τι κάνουν αναλυτικά μία-μία οι εντολές τρέχοντας τα 2 σενάρια του Καβουράκη και Αστεριάδη ταυτόχρονα:

Οι δύο πρώτες εντολές αφορούν την αρχικοποίηση των αντικειμένων στις αρχικές θέσεις. Με τον όρο αρχικοποίηση εννοούμε την τοποθέτηση των ηρώων μας στις θέσεις όπου επιθυμούμε να ξεκινούν πάντα την κίνηση τους κάθε φορά που εκτελείται το σενάριο μας. Συγκεκριμένα ο κ. Καβουράκης θα ξεκινάει πάντα απο την θέση (200,-130) ενώ ο κ.Αστεριάδης απο την θέση (-200,-130) όπως βλέπουμε παρακάτω:

Αρχικοποίηση για τον κ. Καβουράκη:



Αρχικοποίηση για τον κ. Αστεριάδη:



Η τρίτη εντολή:

Καβουράκης



Αστεριάδης



οι μορφές μεταβαίνουν **ομαλά** από την αρχική κατάσταση στα σημεία (-200,130) και (200,-130) αντίστοιχα όπως στο σχήμα:

Εικόνα 5.37

Με την εντολή για τον Αστεριάδη και για τον Καβουράκη οι 2 μορφές μεταβαίνουν στο σημείο (3,13)

Εικόνα 5.38

Εν συνεχεία με τις εντολές (καβουράκης) και  (αστεριάδης) οι δύο μορφές κάνουν στροφή 90 μοίρες (αριστερά και δεξιά αντίστοιχα) και στη συνέχεια κινούνται ομαλά μέχρι το σημεία (-220,20) και (220,20) και μεταβαίνουν στην εξής κατάσταση:

Εικόνα 5.39

Τώρα θέλοντας να κάνουμε τις 2 μορφές να ξανασυναντηθούν από το σημείο αυτό στο (0,120) ομαλά στρίβουμε τις 2 μορφές μας κατά 90 μοίρες δεξιά τον Καβουράκη και 90 μοίρες αριστερά τον Αστεριάδη και τους δίνουμε την εντολή ομαλής κίνησης μέχρι το σημείο συνάντησης

Καβουράκης



Αστεριάδης



και μεταβαίνουν στην εξής κατάσταση όπως δείχνει το σχήμα:

Εικόνα 5.40

Τέλος θέλοντας να επαναφέρουμε τους ήρωές μας στην αρχική τους κατάσταση χρησιμοποιούμε την εντολή ομαλής κίνησης μέχρι τα σημεία (200,-130) και (-200,-130) αντίστοιχα για Καβουράκη και Αστεριάδη

Σενάριο Καβουράκη



Σενάριο Αστεριάδη

και παίρνουμε την τελική κατάσταση:

Εικόνα 5.41

ΣΗΜΑΝΤΙΚΗ ΠΑΡΑΤΗΡΗΣΗ: Παρατηρήστε καθώς τρέχετε το πρόγραμμα σας ότι χρησιμοποιώντας την εντολή ότι η κίνηση από το ένα σημείο στο άλλο διαρκεί τόσο χρόνο όσο εσείς έχετε ορίσει. Στο παράδειγμά μας ορίζουμε την κάθε κίνηση να διαρκεί 1 δευτερόλεπτο .Πειραματιστείτε με τον χρόνο ανάλογα με το πόσο αργά ή γρήγορα θέλετε να μετακινούνται οι ήρωές σας!

__ΕΦΑΡΜΟΓΗ 2:__ **"Ταξίδι γύρω απο τον ήλιο"**

Ας προσπαθήσουμε τώρα ομοιώς με την εφαρμογή 1 να θέσουμε την γή σε κυκλική τροχιά γύρω απο τον ήλιο

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

Το σκηνικό θα είναι το εξής:

Εικόνα 5.42

Ο κώδικας καθώς και οι αρχικές θέσεις της "γής" και του "ήλιου" θα είναι τα εξής:

Κώδικας:



Αρχική κατάσταση:

Εικόνα 5.43

Ας μελετήσουμε τώρα εντολή-εντολή τον κώδικά μας:

Στις **δύο πρώτες εντολές** "θέσε χ ίσο με" και "θέσε ψ ίσο με" αρχικοποιούμε το αντικείμενο "γή" στην θέση (-180,0). Στην σύνεχεια μπορούμε να παρατηρήσουμε στον κωδικά μας οτι οι εντολές "κινήσου ομαλά για _ δευτ στο χ, ψ" και "στρίψε 15 μοίρες" επαναλαμβάνονται 3 φορές.Μπορείτε τώρα να φανταστείτε την κίνηση της γής γύρω απο τον ήλιο;

Το αντικείμενο "γή" μετά την εκτέλεση της **τρίτης και τέταρτηςεντολής** θα βρεθεί στο σημείο (0,-166) και μετά θα στρίψει 15 μοίρες. Μετά την **πέμπτη και έκτη εντολή** θα βρεθεί στο σημείο (180,0) και θα στρίψει 15 μοίρες και έπειτα μετά την **έβδομη και όγδοη εντολή** το αντικείμενο θα βρεθεί το σημείο (0,166) και θα στρίψει άλλες 15 μοίρες.Τέλος με την εντολή "κινήσου ομάλα για _ δευτ στο χ και ψ " η "γή" κινείται μέχρι την αρχική της κατάσταση (-180,0). Με τον απλό αυτόν τρόπο καταφέραμε να κάνουμε μια περιστροφή της γής γύρω απο τον ήλιο!

__5.5 Ανακεφαλαίωση__

 * **Ανακεφαλαίωση**

Σ’ αυτό το κεφάλαιο εξετάσαμε την κίνηση ή οποία όπως όλοι γνωρίζουμε στα ηλεκτρονικά παιχνίδια διαδραματίζει πολύ σημαντικό ρόλο. Ο χρήστης θα πρέπει να έχει τη δυνατότητα να μπορεί να κατευθύνει τον ήρωα του όπου εκείνος επιθυμεί. Πώς όμως μπορεί να επιτευχθεί αυτό στο scratch; Οι τρόποι με τους οποίους μπορεί να κινηθεί ένας χαρακτήρας χωρίζονται σε τρεις κατηγορίες. (Κίνηση και κατεύθυνση) Ο πιο απλός τρόπος για να κινηθεί ο ήρωας είναι να του ορίσουμε συγκεκριμένο αριθμό βημάτων για να περπατήσει και στη συνέχεια συνδυάζουμε την κατεύθυνση στην οποία θέλουμε να πάει. Ωστόσο όμως υπάρχουν δύο τύποι κατευθύνσεων στις οποίες μπορεί ο ήρωας να κινηθεί, είναι η απόλυτη και η σχετική κατεύθυνση. (Κίνηση με συντεταγμένες) Μετά από μια σύντομη εισαγωγή στο σύστημα συντεταγμένων διδαχθήκαμε πώς αξιοποείταιη θέση και η αλλαγή θέσης των αντικειμένων με απόλυτες ή σχετικές συντεταγμένες του πλέγματος. (Ομαλή κίνηση) Τέλος, έχουμε την ομαλή κίνηση, που ως κύριο χαρακτηριστικό της είναι η σταθερή ταχύτητα στην κίνηση του χαρακτήρα.


 * **Ερωτήσεις**


 * 1.** Είναι σημαντικές οι εντολές κίνησης που μάθατε σ’ αυτό το κεφάλαιο; Ποια προβλήματα επιλύουν;
 * 2.** Όταν βλέπετε ένα χαρακτήρα να περπατάει στην οθόνη σας, και στο τέλος της οθόνης να κάνει μεταβολή, ποιές εντολές έχουν χρησιμοποιηθεί; Αναγνωρίστε, ονομάστε και περιγράψτε τις.
 * 3.** Σε τι διαφοροποιείται η εντολή «κινήσου ομαλά για _ δευτ. στο _, _ », σε σχέση με όλες τις εντολές που έχουμε μάθει στο κεφάλαιο αυτό; Γιατί είναι σημαντική για την κίνηση του χαρακτήρα;
 * 4.** Κατηγοριοποιείστε τους τρόπους κίνησης ενός χαρακτήρα και δώστε τις διαφορές τους.
 * 5.** Να περιγράψετε και να προγραμματίσετε τον τρόπο με τον οποίο θα κάνατε ένα χαρακτήρα σας να χορέψει.
 * 6.** Ποιές εντολές θα χρησιμοποιούσατε για να τοποθετήσετε τον χαρακτήρα στο σημείο (200,-130); Υπάρχει κάποια ισοδύναμη εντολή γι' αυτή την ενέργεια;
 * 7.** Αν είχατε να προγραμματίσετε ένα χαρακτήρα, ο οποίος θα θέλατε να περπατήσει κατά μήκος της οθόνης σας, ποιά από τις συντεταγμένες θα έπρεπε να αλλάξει και ποια θα μείνει σταθερή;
 * 8.** Ποιά εντολή πιστέυετε ότι χρησιμοποείται για την επανατοποθέτηση του πακμαν στην αρχική του θέση αφού τον πιάσει το φαντασματάκι;

__**5.6 Ολοκληρωμένες εφαρμογές**__

 * **Βρες την έξοδο (Λαβύρινθος)**

Η εργασία που θα φτιάξετε θα χωριστεί σε 2 ενότητες. Στόχος σας θα είναι η προσομοίωση ενός παιχνιδιού, πιο συγκεκριμένα το παιχνίδι «Λαβύρινθος». 1η ενότητα : Αφού κατεβάσετε την εικόνα με τον Λαβύρινθο και την θέσετε ως σκηνικό, με τα κατάλληλα εργαλεία, πρέπει αν βρείτε όλες τις συντεταγμένες από τις οποίες θα περάσει ο χαρακτήρας μας, για να διασχίσει τη διαδρομή και να φτάσει από το σημείο Α, στο σημείο Β. (Tip: χρησιμοποιείστε από την επιλογή κίνηση τα «θέσε χ, θέσε y» θα σας βοηθήσει αφού θα εμφανίζονται στην οθόνη σας οι συντεταγμένες) 2η ενότητα: Θα χρησιμοποιήσετε τις συντεταγμένες που βρήκατε στην 1η ενότητα, και θα προγραμματίσετε τον χαρακτήρα σας, ώστε να διασχίσει την διαδρομή από το Α σημείο, στο Β. Χρησιμοποιείστε για σκηνικό και επιλέξτε έναν χαρακτήρα της προτίμησής σας. (Tip: χρησιμοποιείστε την εντολή «κινήσου ομαλά για _ δευτ. στο _, _ », όπως επίσης θα σας βοηθήσουν οι εντολές περιστροφής για την διεκπεραίωση του στόχου σας.)


 * **Όποιος τη νύχτα περπατεί…(Συνάντηση animation)**

Πάμε να φτιάξουμε τη δική μας τρομακτική ιστορία. Με τα όσα μάθαμε είμαστε σε θέση να σκηνοθετήσουμε μια σκηνή τρόμου, πώς σας φαίνεται σαν ιδέα; Πάμε λοιπόν να αρχίσουμε. Ο ήρωας μας θα διασχίζει ένα σκοτεινό μονοπάτι, ξαφνικά θα εμφανιστεί μπροστά του ένα φιλικό φάντασμα, αυτός αγνοώντας το γεγονός ότι είναι φιλικό, θα αρχίσει να τρέχει προς την αντίθετη κατεύθυνση. Σε πρώτη φάση θα πρέπει να κατεβάσουμε την εικόνα του σκοτεινού μας μονοπατιού. Αφού τη θέσουμε για σκηνικό και βρούμε το μονοπάτι από το οποίο θα περάσει ο ήρωας μας, θα χρησιμοποιήσουμε τις επιλογές «θέσε χ» και «θέσε y» για να βρούμε τις συντεταγμένες που θα χρησιμοποιήσουμε παρακάτω. Σε δεύτερη φάση θα προγραμματίσουμε τον πρώτο μας χαρακτήρα, ο οποίος θα είναι ο ήρωας μας. Θα περπατάει στις συντεταγμένες του μονοπατιού που έχουμε ορίσει. (χρησιμοποιείστε τις εντολές «κινήσου _ βήματα» «στρίψε _ μοίρες»/ «δείξε στην κατεύθυνση _») Σε Τρίτη φάση θα προγραμματίσουμε τον δεύτερο χαρακτήρα μας, που θα είναι το φαντασματάκι. Θα τον τοποθετήσουμε κάπου στην άκρη της εικόνας μας αρχικά, σε σημείο που ο ήρωας δεν θα μπορεί να τον δει. Όταν ο ήρωας φτάσει κάπου στο μέσο του μονοπατιού τότε το φαντασματάκι θα εμφανιστεί μπροστά του, και ο ήρωας μας θα αρχίσει να τρέχει προς την αντίθετη κατεύθυνση. Όταν φτάσει στην αρχική του θέση ο ήρωας αυτό θα σημάνει και το τέλος της σκηνής μας. (για το φαντασματάκι χρησιμοποιείστε τις εντολές «πήγαινε στο x:_, y:_»/ «πήγαινε στο _» και για τον ήρωα μας χρησιμοποιείστε τις εντολές «στρίψε _ μοίρες»/ «δείξε στην κατεύθυνση _» και «κινήσου ομαλά για _ δευτ. στο _, _») Χρησιμοποιείστε για σκηνικό ,για τον ήρωα σας χρησιμοποιείστε όποια μορφή θέλετε,προτείνουμε  και για το φαντασματάκι. (*Tip: και πάντα σαν βοηθητικές μπορεί να έχετε επιλέξει τις «θέση χ» και «θέση y» και «κατεύθυνση»)


 * **"Τρεχάτε Ποδαράκια μου"**

Πρωταγωνιστές σ’ αυτή την εφαρμογή θα είναι ο Τομ και ο Τζέρι. Δεν πιστεύω να μην τους γνωρίζεται. Θα χρησιμοποιήσετε τους δύο αγαπημένους χαρακτήρες λοιπόν για να φτιάξετε τη δική σας σκηνογραφία. Για να μην τους χαλάσετε την αγαπημένη τους συνήθεια το σενάριο θα έχει ως εξής: Ο Τομ θα τρέχει τον Τζέρι και όταν ο Τζέρι θα φτάσει στο σπιτάκι του θα εξαφανιστεί από την εικόνα με αποτέλεσμα ο Τομ για ακόμα μια φορά να είναι ο χαμένος. Ο Τομ αφού συνειδητοποιεί ότι για ακόμα μια φορά δεν κατάφερε να αρπάξει τον Τζέρι, απομακρύνεται προς την αντίθετη κατεύθυνση. Σε πρώτη φάση θα κατεβάσετε την εικόνα του σκηνικού σας και θα την ορίσετε όπως έχετε κάνει και στις προηγούμενες εφαρμογές και όπως έχετε μάθει στο προηγούμενο κεφάλαιο. Επίσης θα βρείτε τις συντεταγμένες που θα σας χρειαστούν.(την αρχική θέση του Τομ, την αρχική θέση του Τζέρι, την θέση όπου θα εξαφανιστεί ο Τζέρι η οποία είναι ίδια με τη θέση που θα σταματάει ο Τομ και θα κατευθύνεται προς την αντίθετη κατεύθυνση). Σε δεύτερη φάση θα προγραμματίσετε τον Τζέρι χρησιμοποιώντας τις συντεταγμένες. Ο Τζέρι στην αρχή θα είναι 100 pixels πιο μπροστά απ’ τον Τομ. Θα τρέχει με την ίδια ταχύτητα που θα τρέχει κ ο Τομ, αφού θέλετε ο Τομ να μην φτάσει τον Τζερι. Όταν φτάσει στο σπιτάκι του τότε θα εξαφανιστεί. (χρησιμοποιείστε την εντολή «κινήσου ομαλά για _ δευτ. στο _, _» και όποιες άλλες θεωρείτε εσείς ότι πρέπει να χρησιμοποιήσετε ) Σε Τρίτη φάση θα προγραμματίσετε τον Τομ ο οποίος όπως είπαμε θα τρέχει στην ίδια ταχύτητα με τον Τζερι, απλά θα έχουμε 100 pixel διαφορά. Αφού φτάσει στον τοίχο τελευταίος και καταϊδρωμένος θα βαδίσει απογοητευμένος προς την αντίθετη κατεύθυνση (θα αλλάξετε την ταχύτητα με την οποία κινείται). Η σκηνογραφία μας θα τελειώσει όταν φτάσει ο Τομ εκεί απ’ όπου άρχισε (στην άκρη της εικόνας). (χρησιμοποιείστε την εντολή «κινήσου ομαλά για _ δευτ. στο _, _», όπως επίσης θα σας βοηθήσουν οι εντολές περιστροφής για την διεκπεραίωση του στόχου σας.) Χρησιμοποιείστε για σκηνικό και για χαρακτήρες ,. (*Tip: Σαν βοηθητικές μπορείτε να επιλέξετε τις «θέση χ» και «θέση y» και «κατεύθυνση»)

Αρχείο zip : ==