Κεφάλαιο+6

=Το ολοκληρωμένο βιβλίο για το Microsoft Kodu βρίσκεται στη διεύθυνση http://www.koduplay.gr=

Ομάδα 8  Σπανού Μαρία  Χαλκιάς Κωνσταντίνος

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



[|Actions in general]  παρουσίαση από μάθημα περιέχει πληροφορίες για τα αντικείμενα (20/3)

 ΚΕΦΑΛΑΙΟ 6: Αλληλεπιδρώ με τα αντικείμενα!
 * 6.1 //Αντικείμενα (obects)//
 * 6.2 Ιδιότητες αντικειμένου
 * 6.2.1 Ιδιότητες Κίνησης
 * 6.2.2 Ιδιότητες Μάχης
 * 6.2.3 Ιδιότητες Αλληλεπίδρασης Με το Περιβάλλον
 * 6.2.4 Καλαισθητικές Ιδιότητες
 * 6.3 Οι αισθητήρες του Kodu: κατανοώ τον κόσμο μου
 * 6.3.1 Ο αισθητήρας //Βλέπω (see)//
 * 6.3.2 Ο αισθητήρας Ακούω (hear)
 * 6.3.3 Ο αισθητήρας //Πέφτω πάνω (bump)//
 * 6.3.4 Ο αισθητήρας //Πετυχαίνω (shot hit)//
 * 6.3.5 Ο αισθητήρας //Έχω (got)//
 * 6.3.6 Ο αισθητήρας //Κουβαλιέμαι (held by)//
 * 6.4 H συμπεριφορά του Kodu: ενέργειες
 * <span style="font-family: Arial,Helvetica,sans-serif;">6.4.1 Ενέργεια //Τρώω (eat)//
 * <span style="font-family: Arial,Helvetica,sans-serif;">6.4.2 Ενέργεια //Εξαφανίζω (vanish)//
 * <span style="font-family: Arial,Helvetica,sans-serif;">6.4.3 Ενέργεια //Εκτινάζω (launch)//
 * <span style="font-family: Arial,Helvetica,sans-serif;">6.4.4 Ενέργεια //Αρπάζω (grab)//
 * <span style="font-family: Arial,Helvetica,sans-serif;">6.5 Ο //Επεξεργαστής Εντολών (editor)//

<span style="font-family: Arial,Helvetica,sans-serif;"> Μαθησιακοί στόχοι <span style="font-family: Arial,Helvetica,sans-serif;"> 1.Να κατανοήσουν την έννοια του αντικειμένου. <span style="font-family: Arial,Helvetica,sans-serif;"> 2.Να προσδίδουν επιθυμητές ιδιότητες στα αντικείμενα. <span style="font-family: Arial,Helvetica,sans-serif;"> 3.Να συνθέτουν προτάσεις αλληλεπίδρασης με τα αντικείμενα. <span style="font-family: Arial,Helvetica,sans-serif;"> 4.Να χρησιμοποιούν τον επεξεργαστή (editor) των εντολών. <span style="font-family: Arial,Helvetica,sans-serif;"> 5.Να κατανοήσουν τα έτοιμα παιχνίδια. <span style="font-family: Arial,Helvetica,sans-serif;"> 6.Να συνθέτουν το δικό τους παιχνίδι με βάση τα παραπάνω.

<span style="font-family: Arial,Helvetica,sans-serif;"> Σ’ αυτό το κεφάλαιο εμβαθύνετε στην έννοια του αντικειμένου και στις αλλαγές που μπορείτε να επιφέρετε σε αυτά χρησιμοποιώντας το μενού change settings(π.χ. αλλαγή ταχύτητας). Επιπλέον, πρέπει να δείξετε τα ερεθίσματα αλληλεπίδρασης των αντικειμένων με τα άλλα αντικείμενα, καθώς και με το Kodu. Δεν πρέπει να ξεχνάτε ότι στο περιβάλλον Kodu οι συνθήκες που οδηγούν σε κάποια ενέγεια έχουν περισσότερο τη μορφή αισθητήρων(see, hear, bump) που πυροδοτούν κάποια ενέργεια!Στην ενότητα 6.4 καλείστε να καταδείξετε τις λειτουργίες που παρέχει ο επεξεργαστής εντολών(editor) όπως αντιγραφή,επικόλληση,βοήθεια κ.τ.λ.. Έπειτα με χρήση των παραπάνω δείξτε τα βήματα σύνθεσης μιας ιστορίας - παιχνιδιού.

<span style="font-family: Arial,Helvetica,sans-serif;"> Παράκληση <span style="font-family: Arial,Helvetica,sans-serif;"> Στο Kodu υπάρχει πληθώρα αισθητήρων και ενεργειών οι οποίες μπορούν να κατηγοριοποιηθούν με πολλούς τρόπους (πχ ανάλογα μεταξύ ποιων γίνεται η αλληλεπίδραση, εξωτερικό γεγονός που πυροδοτεί μια ενέργεια). Συνεπώς, συνετό θα ήταν στα παραδείγματά σας να χρησιμοποιήσετε όσους περισσότερους αισθητήρες και ενέργειες μπορείτε, όχι μόνο μιας συγκεκριμένης κατηγορίας.

<span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Ενώ προγραμματίσαμε στο προηγούμενο κεφάλαιο το αντικείμενό μας να αντιδρά ανάλογα με τη χρήση των συσκευών εισόδου, στο συγκεκριμένο κεφάλαιο θα μελετήσουμε πως μπορούμε να προγραμματίσουμε το αντικείμενό μας ώστε να αντιδρά όταν αλληλεπιδρά με άλλα αντικείμενα του κόσμου. Θα εξετάσουμε δηλαδή αισθητήρες αντίληψης άλλων αντικειμένων και θα δούμε μια σειρά νέων ενεργειών που μπορούν να κάνουν τα αντικείμενα. Ακόμη θα εμβαθύνουμε περισσότερο στην έννοια του αντικειμένου, μαθαίνοντας πώς μπορούμε να επιφέρουμε αλλαγές σε αυτά χρησιμοποιώντας το μενού change settings, αλλάζοντας κάποια χαρακτηριστικά τους. Τέλος παρουσιάζεται ο επεξεργαστής εντολών(editor) με τον οποίο μπορούμε εύκολα να επεξεργαστούμε εντολές (αντιγραφή,επικόλληση κ.τ.λ).
 * __<span style="font-family: Arial,Helvetica,sans-serif;">ΚΕΦΑΛΑΙΟ 6: Αλληλεπιδρώ με τα αντικείμενα! __**

**6.1 Αντικείμενα** <span style="background-color: transparent; color: #000000; font-family: Calibri; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> Οτιδήποτε εισάγουμε σε ένα κόσμο μέσω του //εργαλείου αντικειμένων (object tool) // ,μπορούμε και να το προγραμματίσσουμε. Αυτόματα λοιπόν, αποτελεί και αντικείμενο του κόσμου μας. Αυτό μπορούμε να το καταλάβουμε, όπως ήδη έχουμε μάθει, κι αν κάνουμε πάνω σε κάποιο αντικείμενο δεξί κλικ και δούμε την επιλογή προγραμμάτισσε(program). Ήρθε λοιπόν η ώρα να γνωρίσουμε την οικογένεια των αντικειμένων του Kodu!


 * [[image:kodu_copy.png]] || Kodu : Ο βασικός ήρωας, για αυτό και το περιβάλλον δημιουργίας παιχνιδιών έχει πάρει το όνομά του! Μπορεί να χρησιμοποιηθεί για οποιοδήποτε παιχνίδι και αντιμετωπίζει όλες τις καταστάσεις.  || [[image:cycle_copy.png]] || <span style="font: normal normal normal 10px/normal Arial; letter-spacing: 0px; line-height: 19px; margin: 0px;">Μηχανάκιας : Είναι πολύ γρήγορος, μπορεί να σκαρφαλώνει εύκολα σε απόκρυμνους λόφους και να κάνει άλματα! Ότι πρέπει δηλαδή για αγώνες δρόμου και παιχνίδια καταδίωξης. ||
 * [[image:jet_copy.png]] || <span style="font: normal normal normal 10px/normal Arial; letter-spacing: 0px; line-height: 19px; margin: 0px;">Τζετ : Σε φυσιολογικές συνθήκες κινείται κοντά στο έδαφος, όμως μπορεί να προγραμματιστεί να πηγαίνει πάνω και κάτω! Ιδανικός για περιπέτειες στον αέρα αλλά και αερομαχίες! || [[image:fly_fish_copy.png]] || <span style="font: normal normal normal 10px/normal Arial; letter-spacing: 0px; line-height: 19px; margin: 0px;">Χελιδονόψαρο : Μπορεί να αιωρείται και να κάνει γρήγορες κινήσεις! Ιδανικό όταν ο χρόνος είναι σημαντικός για το παιχνίδι σας ή όταν θέλετε να αποφύγετε τον εχθρό! ||
 * [[image:saucer_copy.png]] || <span style="font: normal normal normal 10px/normal Arial; letter-spacing: 0px; line-height: 19px; margin: 0px;">Πιατάκι : Το πιο γρήγορο αντικείμενο! Μπορεί επίσηςνα αλλάξει κατεύθυνση αμέσως! Πολύ καλό λοιπόν για αγώνες ταχύτητας! || [[image:ship_copy.png]] || <span style="font: normal normal normal 10px/normal Arial; letter-spacing: 0px; line-height: 19px; margin: 0px;">Πλοίο : Μπορεί μόνο να επιπλέει πάνω στο νερό αλλά όχι να κινείται στη στεριά. Μπορεί να είναι πρωταγωνιστής στην μεγαλύτερη ναυμαχία που έγινε ποτέ! ||
 * [[image:sub_copy.png]] || <span style="font: normal normal normal 10px/normal Arial; letter-spacing: 0px; line-height: 19px; margin: 0px;">Υποβρύχιο : Όπως και τα υποβρύχια του πραγματικού κόσμου έτσι και αυτά λειτουργούν καλύτερα κάτω από το νερό! Αντάξιος αντίπαλος και ύπουλος εχθρός των πλοίων. || [[image:cannon_copy.png]] || <span style="font: normal normal normal 10px/normal Arial; letter-spacing: 0px; line-height: 19px; margin: 0px;">Κανόνι : Είναι μεγάλο και αργό αλλά πολύ δυνατό! Ό,τι πρέπει για παιχνίδια με πόλεμο, για να κατατροπώσετε τον εχθρό με ένα τόσο δυνατό όπλο! ||
 * [[image:blimp_copy.png]] || <span style="font: normal normal normal 10px/normal Arial; letter-spacing: 0px; line-height: 19px; margin: 0px;">Αερόπλοιο : Πετάει τριγύρω με αργούς ρυθμούς.Σημαντικό για αερομαχίες! || [[image:wisp_copy.png]] || <span style="font: normal normal normal 10px/normal Arial; letter-spacing: 0px; line-height: 19px; margin: 0px;">Λάμψη : Κινείται γρήγορα αφήνοντας ίχνη λάμψης στο πέρασμά του! Για εντυπωσιασμό του αντιπάλου! ||
 * [[image:balloon_copy.png]] || <span style="font: normal normal normal 10px/normal Arial; letter-spacing: 0px; line-height: 19px; margin: 0px;">Μπαλόνι : Το μπαλόνι πετάει αργά στον αέρα και παρατηρεί τα πάντα από ψηλά. Να ο καινούργιος σας διαιτητής! || [[image:drum_copy.png]] || <span style="font: normal normal normal 10px/normal Arial; letter-spacing: 0px; line-height: 19px; margin: 0px;">Ντραμ : Όταν κάποιος χαρακτήρας πηδήξει πάνω στο ντραμ εκτοξεύεται στον αέρα! Κάτι σαν τραμπολίνο! ||
 * [[image:lihgt_copy.png]] || <span style="font: normal normal normal 10px/normal Arial; letter-spacing: 0px; line-height: 19px; margin: 0px;">Φως : Κινείται γρήγορα και μπορεί να φωτίσει τον κόσμο Ιδανικός σύντροφος του ήρωα σε μια σκοτεινή σπηλιά! || [[image:fish_copy.png]] || <span style="font: normal normal normal 10px/normal Arial; letter-spacing: 0px; line-height: 19px; margin: 0px;">Ψάρι : Λειτουργεί καλύτερα στο νερό. Στη στεριά απλώς είναι ακινητοποιημένο! Απαραίτητο όπως και το υποβρύχιο σε ένα υποθαλάσσιο κόσμο. ||
 * [[image:turtle_copy.png]] || <span style="font: normal normal normal 10px/normal Arial; letter-spacing: 0px; line-height: 19px; margin: 0px;">Χελώνα : Μπορεί να πετάει και να μπαινοβγαίνει στο καβούκι της! Σκεφτείτε όμως ότι όταν μπαίνει στο καβούκι της γίνεται αόρατη από τους άλλους! || [[image:cloud_copy.png]] || <span style="font: normal normal normal 10px/normal Arial; letter-spacing: 0px; line-height: 19px; margin: 0px;">Σύννεφο : Χαρακτηριστικό του περιβάλλοντος όταν ο καιρός δεν είναι καλός! ||
 * [[image:castle_copy.png]] || <span style="font: normal normal normal 10px/normal Arial; letter-spacing: 0px; line-height: 19px; margin: 0px;">Κάστρο : Ένα επιβλητικό κάστρο που δεν κινείται όμως! Μπορεί να συνδιαστεί με ένα κανόνι για την προστασία του από τους εχθρούς. || [[image:ammo_copy.png]] || <span style="font: normal normal normal 10px/normal Arial; letter-spacing: 0px; line-height: 19px; margin: 0px;">Πυρομαχικό :<span style="font-family: Arial,Helvetica,sans-serif; font-size: 80%;"> Ιδανικό για παιχνίδια με μάχες! Πολύ ισχυρό για την κατατρόπωση του εχθρού! ||
 * [[image:apple_copy.png]] || <span style="font: normal normal normal 10px/normal Arial; letter-spacing: 0px; line-height: 19px; margin: 0px;">Μήλο : Το γνωστό φρούτο,νόστιμο αλλά και καλό στο να εκτοξεύεται! || [[image:mine_copy.png]] || <span style="font: normal normal normal 10px/normal Arial; letter-spacing: 0px; line-height: 19px; margin: 0px;">Νάρκη : Περιέχει καρφιά που μπορούν να είναι ενεργοποιημένα ή απενεργοποιημένα. Μπορεί να προκαλέσει έκρηξη! ||
 * [[image:cursor_copy.png]] || <span style="font: normal normal normal 10px/normal Arial; letter-spacing: 0px; line-height: 19px; margin: 0px;">Δίσκος Χόκεϋ : Είναι ιδανικό για τα γρήγορα παιχνίδια! Πετάει χωρίς τριβή και αναπηδά χωρίς να χάνει ταχύτητα! || [[image:pushpad_copy.png]] || <span style="font: normal normal normal 10px/normal Arial; letter-spacing: 0px; line-height: 19px; margin: 0px;">Κουμπί Πίεσης : Ένα μεγάλο και δυνατό κουμπί! ||
 * [[image:sputnik_copy.png]] || <span style="font: normal normal normal 10px/normal Arial; letter-spacing: 0px; line-height: 19px; margin: 0px;">Δορυφόρος : Κάνει πολύ καλή παρέα με το πιατάκι! || [[image:stick_copy.png]] || <span style="font: normal normal normal 10px/normal Arial; letter-spacing: 0px; line-height: 19px; margin: 0px;">Περισκόπιο : Όταν είναι ενεργοποιημένο μπορεί να κρύβεται κάτω από το έδαφος!Όταν είναι απενεργοποιημένο είναι αόρατο! Ότι πρέπει για παιχνίδια κατασκοπίας ||
 * [[image:factory_copy.png]] || <span style="font: normal normal normal 10px/normal Arial; letter-spacing: 0px; line-height: 19px; margin: 0px;">Εργοστάσιο : Μπορεί να αποτελέσει ορόσημο στον κόσμο που θα δημιουργήσετε, μιας και είναι επιβλητικό οικοδόμημα! || [[image:coin_copy.png]] || <span style="font: normal normal normal 10px/normal Arial; letter-spacing: 0px; line-height: 19px; margin: 0px;">Κέρμα : Σημαντικό στον κόσμο του Kodu όπως και στον πραγματικό κόσμο! Ειδικά για arcade παιχνίδια! ||
 * [[image:hut_copy.png]] || <span style="font: normal normal normal 10px/normal Arial; letter-spacing: 0px; line-height: 19px; margin: 0px;">Καλύβα : Για τη διακόσμηση του κόσμου σας! || [[image:heart_copy.png]] || <span style="font: normal normal normal 10px/normal Arial; letter-spacing: 0px; line-height: 19px; margin: 0px;">Καρδιά : Σημαντικές για να αυξήσετε ίσως την ενέργειά σας. Μπορείτε όμως και να την δώσετε σε κάποιο άλλο αντικείμενο ως ένδειξη αγάπης! ||
 * [[image:tree_copy.png]] || <span style="font: normal normal normal 10px/normal Arial; letter-spacing: 0px; line-height: 19px; margin: 0px;">Δέντρο : Μπορεί να χρησιμοποιηθεί για τη διακόσμηση του κόσμου σας αλλά σε ορισμένες περιπτώσεις μπορεί να εκτελεί και ενέργειες. Προσοχή όμως γιατί δεν έχει ικανότητα κίνησης! || [[image:rock_copy.png]] || <span style="font: normal normal normal 10px/normal Arial; letter-spacing: 0px; line-height: 19px; margin: 0px;">Βράχος : Και ναι, στο Kodu ακόμα και οι βράχοι μπορούν να προγραμματιστούν! ||
 * [[image:star_copy.png]] || <span style="font: normal normal normal 10px/normal Arial; letter-spacing: 0px; line-height: 19px; margin: 0px;">Αστέρι : Ακόμα και αυτό προγραμματίζετε! Σκεφτείτε μια νύχτα πεφταστεριών! || [[image:ball.png]] || <span style="font: normal normal normal 10px/normal Arial; letter-spacing: 0px; line-height: 19px; margin: 0px;">Μπάλα : Μπορείτε να την πετάξετε απλά ή και να την προγραμματίσετε. Είναι μια μπάλα όπως όλες οι άλλες! ||

<span style="background-color: transparent; color: #000000; font-family: Calibri; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Τα παραπάνω αντικείμενα μπορούμε να τα συνδυάσουμε με οποιονδήποτε τρόπο! Το μόνο που μπορεί να μας περιορίσει είναι η φαντασία μας! Ας ρίξουμε λοιπόν μία πιο προσεκτική ματιά στην έννοια των αντικειμένων.

**6.2 Ιδιότητες αντικειμένων** <span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Όπως και τα αντικείμενα του πραγματικού κόσμου έτσι και τα αντικείμενα στον κόσμο του Kodu έχουν ένα σύνολο από ιδιότητες, χαρακτηριστικά γνωρίσματα δηλαδή που τα καθιστούν μοναδικά μεταξύ τους και καθορίζουν ως ένα βαθμό την συμπεριφορά τους. Ένα αυτοκίνητο έχει ως ιδιότητα την ταχύτητά του, ενώ ένας ήρωας που πυροβολεί έχει ως ιδιότητα το μέγιστο αριθμό πυροβολισμών που μπορεί να ρίξει στη μονάδα του χρόνου <span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> Το Kodu παρέχει ένα μεγάλο πλήθος ιδιοτήτων για τα αντικείμενα που μπορείτε να ρυθμίσετε εύκολα πατώντας το δεξί κουμπί του ποντικιού πάνω σε κάποιο αντικείμενο και επιλέγοντας //αλλαγή ρυθμίσεων (change settings)//.



<span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Ξαφνικά εμφανίζεται μπροστά σας μία “σκάλα” με όλες τις διαθέσιμες ιδιότητες του αντικειμένου!



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



<span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Θα αναρωτιέστε βέβαια αν κάθε φορά που δημιουργείτε ένα παιχνίδι θα πρέπει να ρυθμίζετε όλες αυτές τις ιδιότητες. Η απάντηση είναι πως όχι! Δεν χρειάζεται! Όλες οι ιδιότητες έχουν ρυθμιστεί εκ των προτέρων, δηλαδή έχουν μία καθορισμένη αρχική τιμή. Μόνο στην περίπτωση που θέλετε να τις αλλάξετε, πρέπει να επισκέπτεστε τη συγκεκριμένη καρτέλα. Ας ρίξουμε μια ματιά λοιπόν σε διάφορους τύπους παιχνιδιών και ας πειραματιστούμε με κάποιες από τις ρυθμίσεις των αντικειμένων πριν ξεκινήσουμε τον προγραμματισμό των συμπεριφορών τους.

<span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; text-decoration: none; vertical-align: baseline;">**6.2.1 Ιδιότητες Κίνησης Αντικειμένων** Ο Κodu, όπως και κάθε άλλο αντικείμενο που μπορεί να κινηθεί έχει μία σειρά από ιδιότητες που αφορούν την κίνησή του, όπως η ταχύτητα που αναπτύσσει, η επιτάχυνση και άλλα.

<span style="background-color: transparent; color: #000000; font-family: Calibri; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Φορτώστε το παιχνίδι << <span style="background-color: transparent; color: #000000; font-family: Calibri; font-size: 11pt; font-style: normal; vertical-align: baseline;">__**Road Kill v3**__ <span style="background-color: transparent; color: #000000; font-family: Calibri; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">>>. Έχει παρουσιαστεί στο δεύτερο κεφάλαιο και μπορεί να χαρακτηριστεί ως παιχνίδι επιβίωσης. <span style="background-color: transparent; color: #000000; font-family: Calibri; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> Υπενθυμίζουμε ότι ο Kodu θα πρέπει να διασχίσει τέσσερις δρόμους για να περάσει στην απέναντι πλευρά και να ακουμπήσει ένα Αστέρι προκειμένου ο παίκτης να κερδίσει. Οι δρόμοι όμως έχουν κυκλοφοριακή συμφόρηση από Μηχανάκηδες οι οποίοι αν ακουμπήσουν τον Kodu τον σκοτώνουν. Εννοείται λοιπόν πως δε θέλουμε να γίνει κάτι τέτοιο!



<span style="background-color: transparent; color: #000000; font-family: Calibri; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Στόχος μας είναι να ρυθμίσουμε τις ιδιότητες που αφορούν την κίνηση του Κodu έτσι ώστε να κάνουμε εύκολο τον χειρισμό του Kodu για τον παίκτη αλλά ταυτόχρονα να αυξήσουμε λίγο και την δυσκολία του παιχνιδιού. <span style="background-color: transparent; color: #000000; font-family: Calibri; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> Ας ρίξουμε λοιπόν μια ματιά στις ιδιότητες που μπορούμε να ρυθμίσουμε.

Ταχύτητα Κίνησης <span style="background-color: transparent; color: #000000; font-family: Calibri; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Η ιδιότητα αυτή ρυθμίζει την ταχύτητα με την οποία κινείται ένα αντικείμενο. Παίρνει τιμές από 0.1 έως 5.0. Αν αυξήσουμε την ταχύτητα του Kodu τότε φυσικά θα κινείται πιο γρήγορα. Αυτό με μία πρώτη ματιά μπορεί να φαίνεται ότι διευκολύνει τον παίκτη καθώς θα μπορεί να περάσει πιο γρήγορα από τον ένα δρόμο στον άλλο. Όμως όπως συμβαίνει και στην πραγματικότητα όταν ένα αντικείμενο αναπτύσσει μεγάλη ταχύτητα τότε σταματάει και πιο δύσκολα. Έτσι λοιπόν μπορεί ο παίκτης να προλάβει να περάσει από τον ένα δρόμο στον άλλο, όμως υπάρχει περίπτωση να μην προλάβει να σταματήσει έγκαιρα και να μπει στον επόμενο δρόμο και έτσι να αυξηθεί η πιθανότητα να χτυπήσει με κάποιον Μηχανάκια. Καλό θα ήταν άρα να δώσετε στην ιδιότητα αυτή την τιμή 3.

<span style="background-color: transparent; color: #000000; font-family: Calibri; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> [Προγραμματιστικό Tip!Σε ένα παιχνίδι ράλυ αυτή η τιμή είναι προτιμότερο να έχει την μέγιστη δυνατή τιμή.]

Επιτάγχυνση Κίνησης <span style="background-color: transparent; color: #000000; font-family: Calibri; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Όπως γνωρίζετε ένα αυτοκίνητο όταν είναι σταματημένο(αρχική κατάσταση) και ξεκινάει να κινείται χρειάζεται κάποια ώρα για να φτάσει στην τελική του ταχύτητα. Έτσι λοιπόν η ιδιότητα αυτή ρυθμίζει το πόσο γρήγορα αυξάνει η ταχύτητα κίνησης του Kodu. Οι τιμές που μπορεί να πάρει κυμαίνονται από το 0,1 έως το 5.0 και είναι εμφανές ότι ποτελεί σημαντικό συμπλήρωμα τις προηγούμενης ιδιότητας. Όσο πιο γρήγορα αυξάνεται η ταχύτητα του Kodu τόσο πιο σύντομα θα φτάσει στην τελική της τιμή που έχει καθοριστεί από την προηγούμενη ιδιότητα. Καλό θα ήταν να ρυθμίσετε την ιδιότητα αυτή στην τιμή 5.

Ταχύτητα Περιστροφής <span style="background-color: transparent; color: #000000; font-family: Calibri; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Οποιαδήποτε αλλαγή στην ιδιότητα αυτή θα αλλάξει και την ταχύτητα με την οποία ο Kodu στρίβει για να αλλάξει κατεύθυνση. Και αυτή η ιδιότητα παίρνει τιμές από το 0,1 έως ρο 5,0. Επειδή στο παιχνίδι βολεύει περισσότερο ο παίκτης να κινείται ευθύγραμμα για να εξοικονομεί χρόνο η ιδιότητα αυτή δεν έχει μεγάλη σημασία. Μπορούμε να την αφήσουμε ως έχει. Αν όμως ρυθμίζαμε την ιδιότητα αυτή σε ένα παιχνίδι ράλυ ή κυνηγητού θα χρειαζόταν να της δώσουμε μεγάλη τιμή.

Επιτάχυνση Περιστροφής <span style="background-color: transparent; color: #000000; font-family: Calibri; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Είναι αντίστοιχη ιδιότητα με αυτή της επιτάχυνσης κίνησης και εξίσου σημαντική για την περιστροφή του Kodu. Προσδιορίζει πόσο γρήγορα θα φτάσει ο Κodu τη μέγιστη τιμή της ταχύτητας περιστροφής του. Παίρνει τιμές από το 0,1 έως το 5,0. Όπως και παραπάνω μπορούμε να την αφήσουμε όπως είναι.

<span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> Σώστε το παιχνίδι και πηγαίνετε στο κύριο μενού.

<span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; text-decoration: none; vertical-align: baseline;">**6.2.2 Ιδιότητες Μάχης** <span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Οι ιδιότητες αυτές αφορούν κυρίως παιχνίδια δράσης και μάχης.

Αρχικά φορτώστε το παιχνίδι "**__Shoot The Turtles!!__**". . <span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Ο κόσμος του παιχνιδιού αποτελείται από 10 Χελώνες, Νομίσματα, Ψάρια και φυσικά τον ήρωα του παίκτη τον Kodu. Σκοπός του παιχνιδιού είναι ο Kodu να καταστρέψει όλες τις Χελώνες εκτοξεύοντας πυραύλους και στην συνέχεια να φάει τα Ψάρια που υπάρχουν ανενόχλητος. Μόνο όταν δεν υπάρχει καμία Χελώνα και κανένα Ψάρι ο Kodu είναι νικητής. Τα πράγματα όμως δεν είναι τόσο εύκολα όσο νομίζετε! Οι Χελώνες, τρεις εκ των οποίων είναι τεράστιες εκτοξεύουν συνεχώς πυραύλους! Ο παίκτης μπορεί να κινεί τον ήρωά του με τα βέλη του πληκτρολογίου και να εκτοξεύει πυραύλους πατώντας το πλήκτρο space. Οι συμπεριφορές των αντικειμένων είναι ήδη προγραμματισμένες από κάποιον άλλον προγραμματιστή. Ωστόσο ως προγραμματιστές καλό θα ήταν να σκεφτούμε ποιες ιδιότητες των συγκεκριμένων αντικειμένων πρέπει να “πειράξουμε” έτσι ώστε να ολοκληρώσουμε το παιχνίδι δράσης. Στο μεγαλύτερο κομμάτι του παιχνιδιού αυτού ο παίχτης ανταλλάσσει πυροβολισμούς με τις Χελώνες. Συνεπώς θα πρέπει να ρυθμίσουμε τις ιδιότητες που αφορούν την εκτόξευση πυραύλων τόσο του Kodu όσο και των Χελωνών. <span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> Πατήστε το κουμπί escape στο πληκτρολόγιό σας και στην συνέχεια επιλέξτε την αλλαγή ιδιοτήτων για τον Kodu. Μην ξεχνάτε ότι οι ιδιότητες που επιθυμείτε να αλλάξετε αφορούν τους πυραύλους. Χρησιμοποιώντας τη ροδέλα του ποντικιού σας μπορείτε να διακρίνετε τις εξής ιδιότητες που αφορούν την εκτόξευση πυραύλων :

<span style="font-family: Arial,Helvetica,sans-serif;"> <span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; vertical-align: baseline;">Χρονικό διάστημα μεταξύ εκτοξεύσεων πυραύλων <span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Με το Missile Reload Time έχετε τη δυνατότητα να ρυθμίσετε μετά από πόση ώρα μπορεί ο Kodu να ξαναρίξει έναν πύραυλο. Ο χρόνος μετριέται σε δευτερόλεπτα και μπορεί να πάρει τιμές από 0,5 έως 5 δευτερόλεπτα. Αν ο Kodu εκτοξεύει πολύ αργά πυραύλους (έχουμε δώσει μεγάλη τιμή στην ιδιότητα) τότε δεν θα προλάβει να καταστρέψει όλες τις Χελώνες χωρίς να τον χτυπήσουν΄. Από την άλλη αν δώσουμε πολύ χαμηλή τιμή στην ιδιότητα αυτή ο Kodu θα εκτοξεύει πολύ γρήγορα πυραύλους και το παιχνίδι θα είναι πολύ εύκολο. Ρυθμίστε το λοιπόν στα 1.5 δευτερόλεπτα.

<span style="font-family: Arial,Helvetica,sans-serif;"> <span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; vertical-align: baseline;">Ταχύτητα Πυραύλου <span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Με το Missile Speed μπορείτε να ρυθμίσετε την ταχύτητα που θέλετε να έχει ο πύραυλος που εκτοξεύεται. Η ιδιότητα αυτή παίρνει τιμές από 1 έως 20. Όσο γρηγορότερα ταξιδεύει ένας πύραυλος τόσο συντομότερα χτυπάει μία Χελώνα εάν η βολή του παίκτη βρει τον στόχο της. Στο παιχνίδι αυτό επειδή οι Χελώνες είναι πάρα πολλές και εκτοξεύουν συνεχώς πυραύλους εναντίον του Kodu θα πρέπει να δώσετε στην ιδιότητα αυτή μία μεγάλη τιμή. Με το ίδιο σκεπτικό θα πρέπει να ρυθμίσουμε την ιδιότητα αυτή και για τις Χελώνες. Όμως προκειμένου να δημιουργήσουμε ένα δίκαιο παιχνίδι δεν θα πρέπει να δώσουμε πολύ μεγάλη ταχύτητα στους πυραύλους των Χελωνών.

<span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> [Προγραμματιστικό Tip: Σκεφτείτε ότι η ιδιότητα αυτή είναι πολύ σημαντική σε περίπτωση που ο αντίπαλός του παίκτη κινείται. Για να έχει μεγαλύτερες πιθανότητες ο παίκτης να πετύχει τον αντίπαλό του θα πρέπει να δώσουμε στην ιδιότητα αυτή όσο το δυνατόν μεγαλύτερη τιμή.]

<span style="font-family: Arial,Helvetica,sans-serif;"> <span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; vertical-align: baseline;">Ζημιά που προκαλεί ένας πύραυλος <span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Το Missile Damage καθορίζει πόση απώλεια ενέργειας προκαλεί ένας πύραυλος όταν χτυπήσει ένα αντικείμενο. Παίρνει τιμές από το -500 έως το 500. <span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> Αποτελεί σημαντικό παράγοντα για την εξέλιξη του παιχνιδιού. Ανάλογα με το πόσο επιθυμούμε να δυσκολέψουμε τους παίκτες ρυθμίζουμε την τιμή της ιδιότητας αυτής. <span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> Όσο χαμηλότερη είναι η τιμή της τόσο πιο δύσκολα καταστρέφεται ένας εχθρός!

<span style="font-family: Arial,Helvetica,sans-serif;"> <span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; vertical-align: baseline;">Εύρος Κίνησης πυραύλου <span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Καθορίζει την απόσταση που μπορεί να διανύσει ένας πύραυλος πρωτού εξαφανιστεί αν δεν χτυπήσει κάποιο αντικείμενο. Οι τιμές που παίρνει είναι μεταξύ του 10 και του 100. Στο παιχνίδι αυτό ο παίκτης θα πρέπει να κινεί τον ήρωά του συνέχεια για να αποφύγει τους πυραύλους. Υπάρχει επομένως μεγάλη πιθανότητα να απομακρυνθεί ο Kodu πολύ από τις χελώνες. Εάν δώσουμε μικρή τιμή στην ιδιότητα αυτή ο Kodu δεν θα μπορεί να καταστρέφει αντικείμενα από μακρυά. Έτσι λοιπόν εμείς ως προγραμματιστές θα πρέπει να δώσουμε μία μεγάλη τιμή.

<span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; vertical-align: baseline;">Αριθμός Εκτοξευμένων Πυραύλων <span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Όπως γνωρίζουμε ο πύραυλος που εκτοξεύει ο Kodu ταξιδεύει στον αέρα όσο δεν έχει χτυπήσει κάποιο αντικείμενο και δεν έχει ξεπεράσει το εύρος κίνησής του. Με την ιδιότητα αυτή μπορούμε να ρυθμίσουμε πόσοι πύραυλοι μπορούνε να ταξιδεύουν ταυτόχρονα στον αέρα, μέχρι ο Kodu να μπορεί να ξαναπυροβολήσει. Η ιδιότητα παίρνει τιμές από το 1 έως και το 10. Αν η τιμή είναι 5, ο Kodu μπορεί να εκτοξεύσει μέχρι και 5 πυραύλους. Αν καταστραφεί ή εξαφανιστεί έστω και ένας από αυτούς τότε και μόνο τότε ο Kodu θα μπορέσει να εκτοξεύσει πάλι πυραύλους μέχρι να φτάσει σαν σύνολο τους 5. Η ιδιότητα αυτή εξαρτάται από την ταχύτητα ενός πυραύλου, το χρονικό διάστημα μεταξύ των εκτοξεύσεων καθώς και το εύρος κίνησης πυραύλου. Αν ο ήρωας του παίκτη εκτοξεύει πολύ συχνά πυραύλους που κινούνται πολύ γρήγορα και οι εχθροί βρίσκονται πολύ μακριά τότε καλό θα ήταν να δώσετε στην ιδιότητα αυτή μία μεγάλη τιμή.

<span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">[Υπάρχουν αντίστοιχες ιδιότητες για την περίπτωση στην οποία ο Kodu εκτοξεύει Σφαιρίδιο και ρυθμίζονται όπως και οι παραπάνω.]

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

<span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> Αποθηκεύστε λοιπόν το παιχνίδι και βγείτε από αυτό.

<span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; text-decoration: none; vertical-align: baseline;">**6.2.3 Ιδιότητες αλληλεπίδρασης με το περιβάλλον** <span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Ένα από τα βασικά στοιχεία σε όλα τα παιχνίδια που θα προγραμματίσουμε στα πλαίσια αυτού του βιβλίου, είναι η αλληλεπίδραση του Kodu τόσο με την πίστα του παιχνιδιού όσο και με τα υπόλοιπα αντικείμενα. Υπάρχουν αρκετές ιδιότητες αυτού του είδους που δεν θα τις εξηγήσουμε όλες σε αυτή την υποενότητα. Ωστόσο μπορείτε να τις βρείτε όλες συγκεντρωμένες στο τέλος αυτού του κεφαλαίου με τις απαραίτητες επεξηγήσεις.

<span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> Φορτώστε το παιχνίδι Kodu Turismo. Είναι ένα παιχνίδι αγώνα δρόμου. Ο πάικτης χρησιμοποιώντας το πληκτρολόγιο κινεί τον μπλε Μηχανάκια προκειμένου να τον οδηγήσει στην γραμμή τερματισμού. <span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> Στόχος μας είναι να κάνουμε το παιχνίδι όσο πιο ρεαλιστικό γίνεται ρυθμίζοντας κάποιες από τις ιδιότητες των αντικειμένων που αφορούν την αλληλεπίδρασή τους με το περιβάλλον. Σύμφωνα με όσα έχουν προηγηθεί μπορείτε να ρυθμίσετε τις ιδιότητες κίνησης όλων των Μηχανάκηδων. Στην υποενότητα αυτή θα ρυθμίσουμε τις ιδιότητες τριβή και αναπήδηση των αντικειμένων.

<span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; text-decoration: none; vertical-align: baseline;">Τριβή <span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Ας κάνουμε ένα γρήγορα μάθημα φυσικής! <span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> Όπως μπορεί να γνωρίζετε ήδη όταν ένα αντικείμενο κινείται πάνω σε οποιαδήποτε επιφάνεια αναπτύσσεται τριβή μεταξύ τους. Η τριβή εμποδίζει την κίνηση του αντικειμένου με αποτέλεσμα να αναπτύσσει πιο αργά ταχύτητα. Ταυτόχρονα όμως το βοηθάει να σταματάει και πιο γρήγορα. Η ιδιότητα αυτή παίρνει τιμές από 0.00 έως 1.0. Όπου το μηδέν σημαίνει ότι δεν υπάρχει καθόλου τριβή και 1 είναι η μέγιστη τιμή που μπορεί να πάρει. μπορούμε να ρυθμίσουμε την τιμή της στο 0.35.

<span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; text-decoration: none; vertical-align: baseline;">Αναπήδηση <span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Στο παιχνίδι που εξετάζουμε υπάρχει περίπτωση ο μπλε Μηχανάκιας του παίκτη να συγκρουστεί με κάποιον άλλο Μηχανάκια. Η ιδιότητα αυτή καθορίζει κατά πόσο ένα αντικείμενο αναπηδά όταν συγκρουστεί με κάποιο άλλο αντικείμενο, με ένα τοίχο ή μετά την προσγείωση από ένα άλμα. <span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> Θυμηθείτε πραγματικούς αγώνες ράλυ που μπορεί να έχετε παρακολουθήσει. Δεν είναι πολύ τρομακτικό αυτό που συμβαίνει όταν συγκρουστούν κάποια αμάξια μεταξύ τους; <span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> Όπως και η τριβή παίρνει τιμές από το 0.00 έως το 1.00. Αν ρυθμίσουμε την ταχύτητα των Μηχανάκηδων να έχει την μεγαλύτερη τιμή τότε η φυσική, επιβάλλει να ρυθμίσουμε την αναπήδηση στη μέγιστη τιμή της.

<span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; vertical-align: baseline;">__**6.2.4 Καλαισθητικές ιδιότητες**__

<span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; vertical-align: baseline;">Μέγεθος αντικειμένου <span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Δεν χρειάζονται και πολλές συστάσεις για αυτή την ιδιότητα. Αφορά το μέγεθος του αντικειμένου. Φανταστείτε ότι έχετε εισάγει ένα αντικείμενο, για παράδειγμα έναν μαύρο Kodu ο οποίος θα είναι ο τελικός αρχηγός μίας πίστας. Προκειμένου να τον κάνετε να φαίνεται πιο απειλητικός θα μπορούσατε να αυξήσετε το μέγεθός του. Η ιδιότητα αυτή παίρνει τιμές από 0.2 έως 4.0.

<span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; vertical-align: baseline;">Περιστροφή αντικειμένου (rotate) <span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Ρυθμίζοντας αυτή την ιδιότητα καθορίζεται ποιος θα είναι ο προσανατολισμός ενός αντικειμένου. Η ιδιότητα αυτή παίρνει τιμές από το 0 έως και το 360. Για να περιστρέψουμε ένα αντικείμενο ακολουθύμε την εξής διαδικασία.

<span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">1. Επιλέγουμε το αντικείμενο που θέλουμε να περιστρέψουμε και πατάμε το δεξί κουμπί του ποντικιού.

<span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; line-height: 0px; overflow-x: hidden; overflow-y: hidden; text-decoration: none; vertical-align: baseline;">﻿2. Πατάμε πάνω στην επιλογή //περιστρέφω (rotate).//

<span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; line-height: 0px; overflow-x: hidden; overflow-y: hidden; text-decoration: none; vertical-align: baseline;">//3.// Καθώς μεταβάλουμε την τιμή της, παρατηρούμε ότι το αντικείμενο περιστρέφεται. Σταματάμε να περιστρέφουμε τον αντικείμενο όταν έχει τον προσανατολισμό που επιθυμούμε.

<span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; line-height: 0px; overflow-x: hidden; overflow-y: hidden; text-decoration: none; vertical-align: baseline;">[ Για τον ήρωα του παίκτη η ιδιότητα αυτή έχει σημασία μόνο κατά την εκκίνηση του παιχνιδιού, διότι έτσι κι αλλιώς στην συνέχεια ο παίκτης θα τον κινήσει και ο αρχικός προσανατολισμός θα χαθεί. Έτσι για παράδειγμα μπορούμε να ρυθμίσουμε τον ήρωα του παίκτη να κοιτάει αρχικά προς το μέρος του για να αυξήσουμε τον ενθουσιασμό του. Η ιδιότητα αυτή όμως έχει πολύ μεγάλη σημασία για τα αντικείμενα που δεν κινούνται. Φανταστείτε να εισάγετε σε ένα κόσμο ένα Εργοστάσιο που παράγει σατανικά Kodu με τέτοιο τρόπο ώστε ο παίκτης να μην μπορεί να δει πότε βγαίνουν από την πόρτα του οι εχθροί! Όσο θα δυσκόλευε την ζωή του παίκτη τόσο θα ήταν και αντιαισθητικό για την πίστα.]

<span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; vertical-align: baseline;">Χρώμα <span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Όπως όταν παίζουμε ένα επιτραπέζιο παιχνίδι διαλέγουμε το πιόνι με το χρώμα που μας αντιπροσωπεύει περισσότερο, έτσι και στο παιχνίδι που θα δημιουργήσουμε θέλουμε τα αντικείμενά μας να έχουν διαφορετικά χρώματα ώστε να μπορούμε να τα ξεχωρίζουμε. Σκεφτείτε το παιχνίδι Kodu Turismo που είδαμε παραπάνω. Οι Μηχανάκηδες έχουν διαφορετικά χρώματα μεταξύ τους με τον κεντρικό ήρωα Μηχανάκια να έχει χρώμα μπλε ώστε να μπορούμε να τον διακρίνουμε ευκολότερα! Βέβαια αν αφήσουμε τη φαντασία μας να δουλέψει μπορούμε να πειραματιστούμε με τα χρώματα των αντικειμένων μας και έτσι να δημιουργήσουμε πολύχρωμα,πρωτότυπα παιχνίδια!

<span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Για να μεταβάλλουμε το χρώμα ενός αντικειμένου εκτελούμε την εξής διαδικασία: <span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">1. Επιέγουμε πρώτα το εργαλείο αντικειμένων (object tool).

<span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">2. Μετακινούμε τον δείκτη του ποντικιού πάνω στο αντικείμενο, το χρώμα του οποίου επιθυμούμε να αλλάξουμε. Παρατηρούμε ότι στο πάνω μέρος της οθόνης μας έμφανίζεται μία παλέτα χρωμάτων.

<span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">3.Πατάμε τα βέλη του πληκτρολογίου αριστερά ή δεξιά για να επιλέξουμε το επιθυμητό χρώμα.

<span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; vertical-align: baseline;">Εφέ Καπνού <span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Η ιδιότητα αυτή σχετίζεται με την αληθοφάνεια του παιχνιδιού. Αφορά το αν οι πύραυλοι αφήνουν ίχνος καπνού στο πέρασμά τους. Επιπλέον όσοι από εσάς δεν έχουν καλή κάρτα γραφικών θα μπορούσατε να την απενεργοποιήσετε για να μην επιβαρύνετε επιπλέον το σύστημα σας. Παρατηρήστε ότι η εικόνα της ιδιότητας έχει το γνωστό σήμα του on/off. Όταν έχει έντονο πράσινο χρώμα τότε η ιδιότητα είναι ενεργοποιημένη. <span style="background-color: transparent; color: #000000; font-family: Calibri; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Υπάρχουν αρκετές ακόμα που δεν θα καλυφθούν στην παράγραφο αυτή. Στο τέλος του κεφαλαίου θα βρείτε συγκεντρωτικό πίνακα με όλες τις ιδιότητες που σας παρέχει το περιβάλλον ανάλογα με την κατηγορία στην οποία ανήκουν .<span style="background-color: transparent; color: #000000; font-family: Calibri; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> Σε κάθε περίπτωση, δίπλα από κάθε ιδιότητα υπάρχει η επιλογή βοήθειας <span style="background-color: transparent; color: #000000; font-family: Calibri; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">η οποία σας παρέχει μία περιγραφή της.

<span style="background-color: transparent; color: #000000; font-family: Calibri; font-size: 11pt; font-style: normal; vertical-align: baseline;">__**6.3 Οι αισθητήρες του Kodu: κατανοώ τον κόσμο μου**__ <span style="background-color: transparent; color: #000000; font-family: Calibri; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Στην παράγραφο αυτή θα μελετήσουμε τους αισθητήρες του Kodu που αντιλαμβάνονται γεγονότα που προκαλούν άλλα αντικείμενα και τον οδηγούν σε συμπεριφορές αλληλεπίδρασης με αυτά. Αν το καλοσκεφτούμε οι αισθητήρες του Kodu είναι κάτι αντίστοιχο με τις αισθήσεις που έχουν οι άνθρωποι. Οι άνθρωποι λοιπόν χρησιμοποιούν κάποιες βασικές αισθήσεις, όπως η ακοή, η όραση κτλ ώστε να αντιλαμβάνονται τα ερεθίσματα του περιβάλλοντός τους και να ενεργούν αναλόγως. Έτσι και τα αντικείμενα του Kodu! Χρησιμοποιούν αισθητήρες όπως το Ακούω <span style="background-color: transparent; color: #000000; font-family: Calibri; font-size: 11pt; font-style: normal; font-weight: normal; vertical-align: baseline;"> (Hear <span style="background-color: transparent; color: #000000; font-family: Calibri; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">), το Βλέπω (See) , το Πέφτω Πάνω (Bump) ώστε να κατανοούν καλύτερα τον κόσμο τους και να συμμετέχουν σε αυτόν!

<span style="background-color: transparent; color: #000000; font-family: Calibri; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> Προγραμματιστικό Tip: Μην ξεχνάτε ότι όταν προγραμματίζετε κάποιο αντικείμενο να διαθέτει κάποιον αισθητήρα, είναι πολύ πιθανό να υπάρχουν κάποιες ιδιότητες που επηρεάζουν την λειτουργία του. Μπορεί στην προηγούμενη παράγραφο να παρουσιάστηκαν ως ιδιότητες των αντικειμένων αλλά σχετίζονται άμεσα με τους διάφορους αισθητήρες!

<span style="background-color: transparent; color: #000000; font-family: Calibri; font-size: 11pt; font-style: normal; vertical-align: baseline;">__**6.3.1 Ο αισθήτηρας: Βλέπω (See)**__ Ο αισθητήρας //Βλέπω (// // See //// ) //, επιτρέπει στα αντικείμενα να αντιδρούν στην παρουσία άλλων αντικειμένων στο κόσμο των παιχνιδιών μας. Με απλά λόγια αποτελεί τα μάτια των πρωταγωνιστών μας που πλέον μπορούν να αναλάβουν δράση αν «δουν» ένα φίλο τους, ένα Nόμισμα ή κάποιον εχθρό. Θα μπορούσαμε λοιπόν να προγραμματίσουμε ένα Υποβρύχιο έτσι ώστε όταν //βλέπει// τον Kodu να εκτοξεύει πυραύλους εναντίον του, ή να προγραμματίσουμε έναν Μηχανάκια-εχθρό ώστε όταν //δει// τον Kodu να προσπαθεί να τον πλησιάσει για να τον εξολοθρεύσει. Ο αισθητήρας //Βλέπω (// // See //// ) // πάντα συνοδεύεται με προσδιοριστικό το στοιχείο που θέλουμε να αναγνωρίσει ο χαρακτήρας μας. Ένα παράδειγμα εντολής με χρήση του αισθητήρα:

<span style="font-family: arial,helvetica,sans-serif; font-size: 13px; font-weight: normal; line-height: 19px;"> Τι είχε ο προγραμματιστής στο μυαλό του:

<span style="font-family: arial,helvetica,sans-serif; font-size: 10pt; line-height: 19px;"> Όταν [Βλέπω (See) ] [τον Kodu] τότε [Κινούμαι (Move) ] [προς αυτόν]

<span style="font-family: arial,helvetica,sans-serif; font-size: 13px; line-height: 19px;"> [Tip: παρατηρήστε ότι το προσδιοριστικό ενέργειας //προς (// // towards //// ) // εξαρτάται από το αντικείμενο που θα χρησιμοποιήσουμε στον αισθητήρα της συγκεκριμένης συμπεριφοράς]

<span style="font-family: arial,helvetica,sans-serif; font-size: 10pt; line-height: 19px;"> Ρήματα συμπεριφορών που θα πρέπει να μας φέρνουν στο μυαλό τον αισθητήρα: <span style="font-family: arial,helvetica,sans-serif; font-size: 10pt; line-height: 19px;"> Βλέπω, εντοπίζω, αναγνωρίζω, διακρίνω, αντιλαμβάνομαι, συναντώ

<span style="font-family: arial,helvetica,sans-serif; font-size: 10pt; line-height: 19px;"> Ας δούμε όμως τη χρήση του πρακτικά σε ένα παιχνίδι αερομαχίας. Στο περιβάλλον του παιχνιδιού μας υπάρχουν ο ουρανός,ύννεφα και τέσσερα Τζετ, που τρία από αυτά είναι μαύρα και ένα είναι πράσινο. Το πράσινο Τζετ είναι αυτό που χειρίζεται ο παίκτης. Ο σκοπός του παιχνιδιού είναι ο χειριστής του πράσινου Τζετ να καταστρέψει τα μαύρα Τζετ ενώ ταυτόχρονα προσπαθεί να αποφύγει τις βολές τους.Τα σύννεφα απλά υπάρχουν ως στοιχεία του κόσμου και δεν παρουσιάζουν κάποια συμπεριφορά. Ο κόσμος λοιπόν του παιχνιδιού περιγράφεται με την εικόνα που ακολουθεί.



<span style="font-family: arial,helvetica,sans-serif; font-size: 13px; line-height: 19px;"> Ανοίξτε το παιχνίδι Air Fight και ας ξεκινήσουμε βήμα βήμα τον προγραμματισμό των αντικειμένων προκειμένου να δημιουργήσουμε το παιχνίδι __ Air __ __ fight __

<span style="font-family: arial,helvetica,sans-serif; font-size: 13px; line-height: 19px;"> Ας ξεκινήσουμε με τον προγραμματισμό του πράσινουΤτζετ, δηλαδή του αντικειμένου που θα χειρίζεται ο παίκτης. Το πράσινο Τζετ θα πρέπει να αξιοποιήσει κάποιον αισθητήρα για να καταλαβαίνει το πότε ο χρήστης έχει πατήσει τα βελάκια ή το space στο πληκτρολόγιο. Ποιον αισθητήρα όμως; Προφανώς, τ ον αισθητήρα //Πληκτρολόγιο (// // Keyboard //// ) // με προσδιοριστικό τα //βέλη (// // Arrows //// ) // για να μετακινούμε το Τζετ και μια ακόμη φορά με προσδιοριστικό το πλήκτρο //Κενό (// // space //// ) // για να εκτοξεύει πυραύλους. Συνεπώς το πράσινο Τζετ εμφανίζει δύο συμπεριφορές. <span style="font-family: arial,helvetica,sans-serif; font-size: 10pt; line-height: 19px;"> **ΌΤΑΝ**[στο πληκρολόγιο][πατηθεί κάποιο από τα βέλη] **ΤΟΤΕ**[Κινήσου (Move) προς αντίστοιχη κατεύθυνση] [γρήγορα] <span style="font-family: arial,helvetica,sans-serif; font-size: 10pt; line-height: 19px;"> **ΌΤΑΝ** [στο πληκτρολόγιο][πατηθεί το πλήκρο space] **ΤΟΤΕ** [Εκτόξευσε (Shoot) πυραύλους]



<span style="font-family: arial,helvetica,sans-serif; font-size: 10pt; line-height: 19px;"> Ας προγραμματίσουμε τώρα τα μαύρα Τζετ. <span style="font-family: arial,helvetica,sans-serif; font-size: 10pt; line-height: 19px;"> Κάθε φορά που ένα μαύρο Τζετ αναγνωρίζει ένα πράσινο Τζετ, τότε θα πρέπει να αρχίσει να το ακολουθεί και να εκτοξεύει πυραύλους εναντίον του. <span style="font-family: arial,helvetica,sans-serif; font-size: 13px; line-height: 19px;"> Πως μπορούν να αντιληφθούν τα μαύρα Τζετ το πράσινο Τζετ; Αφού θα το //δουν//, θα χρησιμοποιήσουμε τον αισθητήρα //Βλέπω (// // See //// ) //. Ο αισθητήρας αυτός θα πρέπει να έχει ως προσδιοριστικό το αντικείμενο //Τζετ//. Συνεπώς, για την συμπεριφορά των μαύρων Τζετ, δημιουργούμε τις εξής εντολές: <span style="font-family: arial,helvetica,sans-serif; font-size: 10pt; line-height: 19px;"> **ΌΤΑΝ**[Δω (See) ][ένα Τζετ]**ΤΟΤΕ** [Κινούμαι (Move) ][προς αυτό]. <span style="font-family: arial,helvetica,sans-serif; font-size: 10pt; line-height: 19px;"> **ΌΤΑΝ**[Δω (See) ][ένα Τζετ]**ΤΟΤΕ** [Εκτοξεύω (Shoot)][πυραύλους].

<span style="font-family: arial,helvetica,sans-serif; font-size: 13px; line-height: 19px;"> Είναι το παράδειγμά μας ολοκληρωμένο όμως; Αν προγραμματίσουμε τον αισθητήρα //Βλέπω (// // See //// ) // με προσδιοριστικό το αντικείμενο //Τζετ// //, // τότε κάθε μαύρο Τζετ θα επιδεικνύει την ίδια συμπεριφορά όταν δει και όλα τα υπόλοιπα Τζετ είτε μαύρα είτε πράσινα είτε κόκκινα! θα αρχίσει να τα ακολουθεί ανεξαρτήτως χρώματος και θα πυροβολεί οποιοδήποτε είναι κοντά του! Μήπως θα έπρεπε να προσθέσουμε ένα επιπλέον προσδιοριστικό στον αισθητήρα //Βλέπω (// // See //// ) //, για παράδειγμα το χρώμα; Δεν επιθυμούμε τα μαύρα Τζετ να αντιδρούν μόνο όταν βλέπουν το **πράσινο** Τζετ; Βελτιώστε τις εντολές σας όπως φαίνεται στο παρακάτω σχήμα: <span style="font-family: arial,helvetica,sans-serif; font-size: 10pt; line-height: 19px;"> **ΌΤΑΝ**[Δω (See) ][ πράσινο] [Τζετ ]**ΤΟΤΕ** [Κινούμαι (Move) ][προς αυτό]. <span style="font-family: arial,helvetica,sans-serif; font-size: 10pt; line-height: 19px;"> **ΌΤΑΝ**[Δω (See) ][ πράσινο] [Τζετ ]**ΤΟΤΕ** [Εκτοξεύω (Shoot) ][πυραύλους].



<span style="font-family: arial,helvetica,sans-serif; font-size: 10pt; line-height: 19px;"> Αποθηκεύστε τις αλλαγές και τρέξτε το πρόγραμμα.



<span style="font-family: arial,helvetica,sans-serif; font-size: 10pt; line-height: 19px;"> [Πονηρή ερώτηση: Πως εξασφαλίζουμε ότι οι πύραυλοι κατευθύνονται προς το στόχο τους; Έχει σημασία η σειρά των εντολών μας;]

<span style="font-family: arial,helvetica,sans-serif; font-size: 13px; line-height: 19px;"> Το Kodu μας προσφέρει μία πληθώρα προσδιοριστικών που μπορούμε να χρησιμοποιήσουμε σε συνδυασμό με τον αισθητήρα //Βλέπω (// // See //// ) //. Μπορούμε να ορίσουμε ως προσδιοριστικό οποιοδήποτε αντικείμενο του κόσμου μας, οποιοδήποτε χρώμα (δηλαδή όταν βλέπει το αντικείμενό μας κόκκινο μπορεί να κινείται πιο αργά!), οποιαδήποτε έκφραση άλλου αντικειμένου (όταν βλέπει π.χ. ένα θυμωμένο αντικείμενο μπορεί να το εξολοθρεύει!). Στην επιλογή επιλογές (options) της πρώτης πίτας προσδιοριστικών, εμφανίζονται νέα προσδιοριστικά που έχουν να κάνουν με τη θέση του αντικειμένου σε σχέση με τα άλλα αντικείμενα του κόσμου. Έτσι αν επιθυμούμε ο Kodu να ενεργεί όταν βλέπει κάποια αντικείμενα που βρίσκονται σε μακρινή θέση, μπορούμε να χρησιμοποιήσουμε το προσδιοριστικό Mακρυά (Far away).

<span style="font-family: arial,helvetica,sans-serif; font-size: 10pt; line-height: 19px;">[tip: το πόσο μακριά «βλέπει» το αντικείμενό σας, μπορείτε να το προσδιορίσετε από την ιδιότητα //Mακρυά (Far away range)//.]

**__<span style="color: black; font-family: Arial,sans-serif; font-size: 10pt;">6.3.2 Ο αισθήτηρας: __** **__<span style="color: black; font-family: Arial,sans-serif; font-size: 10pt;">Ακούω ( __****__<span style="color: black; font-family: Arial,sans-serif; font-size: 10pt;">Hear __****<span style="color: black; font-family: Arial,sans-serif; font-size: 10pt;">) **

<span style="background-color: transparent; color: #000000; display: block; font-family: Calibri; font-size: 11pt; font-style: normal; font-weight: normal; line-height: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> Ο αισθητήρας αυτός είναι στην ουσία τα αυτιά κάθε αντικειμένου. Έτσι όταν προγραμματίζουμε ένα αντικείμενο να διαθέτει τον αισθητήρα αυτόν είναι σαν να αποκτάει την αίσθηση της ακοής. Μπορεί να σας φαίνεται παράξενο που υπάρχει ο αισθητήρας αυτός. Τι μπορεί δηλαδή να ακούσει ένα αντικείμενο στον κόσμο του Kodu; Μα φυσικά τα πάντα! Μπορούμε να προγραμματίσουμε έναν φίλο του Kodu ώστε να τον ακούει προκειμένου να τον ακολουθήσει. Ακόμη μπορούμε να προγραμματίσουμε ένα μπαλόνι να εκτοξεύει Σφαιρίδια όταν ακούσει κοντά του κάποιο Τζετ. Δεν πρέπει να ξεχνάμε ότι από την στιγμή που θα εισάγουμε οποιοδήποτε αντικείμενο σε ένα παιχνίδι τότε αυτό παράγει αυτόματα κάποιον ήχο. Ο αισθητήρας //Ακούω (// // Hear //// ) // πάντα συνοδεύεται με προσδιοριστικό στοιχείο είτε κάποιο αντικείμενο που θέλουμε να αφουγκράζεται ο χαρακτήρας μας ή κάποιον ήχο από τους πολλούς που μας προσφέρει το περιβάλλον MSKodu. Ένα παράδειγμα εντολής με χρήση του αισθητήρα:

<span style="background-color: transparent; color: black; display: block; font-family: Arial; font-size: 10pt; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Ο προγραμματιστής που προγραμμάτισε την παραπάνω εντολή θα είχε στο μυαλό του: <span style="background-color: transparent; color: #000000; display: block; font-family: Calibri; font-size: 11pt; font-style: normal; font-weight: normal; line-height: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">** ΌΤΑΝ ** [ακούσεις][κάποιο Ντραμ]**ΤΟΤΕ**[κινούμαι][μακρυά από αυτό]

<span style="background-color: transparent; color: black; display: block; font-family: Arial; font-size: 10pt; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Ρήματα συμπεριφορών που θα πρέπει να μας φέρουν στο μυαλό τον αισθητήρα Ακούω (Hear) είναι: <span style="background-color: transparent; color: black; display: block; font-family: Arial; font-size: 10pt; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Ακούω,αφουγκράζομαι,αντιλαμβάνομαι. <span style="background-color: transparent; color: #000000; display: block; font-family: Calibri; font-size: 11pt; font-style: normal; font-weight: normal; line-height: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> Ας μάθουμε λοιπόν να προγραμματίζουμε τον αισθητήρα με τον καλύτερο δυνατό τρόπο, προγραμματίζοντας ένα παιχνίδι δράσης! Ο κόσμος του παιχνιδιού αποτελείται από ανισόπεδο έδαφος, από γρασίδι και είναι σχεδιασμένο ένα μονοπάτι που οδηγεί σε ένα Κάστρο. Τα αντικείμενα που υπάρχουν είναι ο Kodu, ο καλός του φίλος //Μηχανάκιας//, το //Κάστρο// στο τέλος του μονοπατιού, ένα //Κανόνι// //, // //Σύννεφα// και //Φώτα//. Σκοπός του παιχνιδιού είναι ο Kodu τον οποίο χειρίζεται ο παίχτης να οδηγήσει τον φίλο του Μηχανάκια στο Κάστρο. Το μονοπάτι όμως που ακολουθούν είναι δύσβατο καθώς το κανόνι όταν ακούει τον μηχανάκια να περνάει από μπροστά του εκτοξεύει πυραύλους εναντίον του. Τα Σύννεφα και τα φώτα αποτελούν στοιχεία του περιβάλλοντος και δεν παρουσιάζουν καποια συμπεριφορά. <span style="background-color: transparent; color: black; display: block; font-family: Arial; font-size: 10pt; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Ο κόσμος λοιπόν του παιχνιδιού περιγράφεται με την εικόνα που ακολουθεί: <span style="background-color: transparent; color: #000000; display: block; font-family: Calibri; font-size: 15px; font-style: normal; font-weight: normal; line-height: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">

<span style="background-color: transparent; color: black; display: block; font-family: Arial; font-size: 10pt; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Ανοίξτε το παιχνίδι Help Μηχανάκια και θα προγραμματίσουμε μαζί τα αντικείμενα του παιχνιδιού με σκοπό να δημιουργήσουμε το παιχνίδι αυτό. <span style="background-color: transparent; color: black; display: block; font-family: Arial; font-size: 10pt; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Ας ξεκινήσουμε με τον προγραμματισμό του Kodu. Ο Kodu αντιλαμβάνεται μέσω του αισθητήρα Πληκτρολόγιο (Keyboard) πότε ο παίχτης έχει πατήσει κάποιο από τα βέλη του Πληκτρολογίου (Keyboard) ώστε να κινηθεί προς την αντίστοιχη κατεύθυνση γρήγορα. Η συμπεριφορά αυτή είναι γνωστή σε εσάς και περιγράφεται ως εξής : <span style="background-color: transparent; color: black; display: block; font-family: Arial; font-size: 10pt; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ΌΤΑΝ[στο Πληκτρολόγιο][πατηθεί κάποιο από τα βέλη]ΤΟΤΕ[κινήσου][γρήγορα] <span style="background-color: transparent; color: black; display: block; font-family: Arial; font-size: 10pt; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Στο MSKodu η εντολή που περιγράφει την παραπάνω συμπεριφορά όπως θα έχετε ίσως σκεφτεί είναι <span style="background-color: transparent; color: #000000; display: block; font-family: Arial; font-size: 13px; font-style: normal; font-weight: normal; line-height: 14px; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">

<span style="background-color: transparent; color: #000000; display: block; font-family: Calibri; font-size: 11pt; font-style: normal; font-weight: normal; line-height: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> Ας προγραμματίσουμε τώρα τον //Μηχανάκια// //. // <span style="background-color: transparent; color: #000000; display: block; font-family: Calibri; font-size: 11pt; font-style: normal; font-weight: normal; line-height: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> Κάθε φορά που ο μηχανάκιας αφουγκράζεται τον Kodu, τότε θα πρέπει να τον ακολουθεί. Από την περιγραφή του παιχνιδιού καταλαβαίνουμε ότι δεν επιθυμούμε ο μηχανάκιας να ακολουθεί τον Kodu όταν τον βλέπει (θυμηθείτε τη περίπτωση των πράσινων τζετ στο παιχνίδι Air Fight). Συνεπώς δεν θα χρησιμοποιήσουμε τον αισθητήρα //Βλέπω (// // See //// ) //. Ποιον αισθητήρα μπορούμε λοιπόν να χρησιμοποιήσουμε; Αφού ο μηχανάκιας αντιλαμβάνεται τον Kodu από τον ήχο΄που κάνει, θα χρησιμοποιήσυμε τον αισθητήρα //Ακούω (// // Hear //// ) //. Το προσδιοριστικό που θα συνοδεύσει τον προγραμματισμό του αισθητήρα είναι ο Kodu. Επομένως για την συμπεριφορά του μηχανάκια, δημιουργούμε την παρακατώ εντολή : <span style="background-color: transparent; color: black; display: block; font-family: Arial; font-size: 10pt; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ΌΤΑΝ[ακούω][τον Kodu]ΤΟΤΕ[κινούμαι][προς αυτόν]

<span style="background-color: transparent; color: #000000; display: block; font-family: Calibri; font-size: 11pt; font-style: normal; font-weight: normal; line-height: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> <span style="background-color: transparent; color: black; display: block; font-family: Arial; font-size: 10pt; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Αποθηκεύστε τις αλλαγές και τρέξτε το παιχνίδι για να επιβεβαιώσετε ότι όλα λειτουργούν όπως πρέπει. <span style="background-color: transparent; color: #000000; display: block; font-family: Calibri; font-size: 11pt; font-style: normal; font-weight: normal; line-height: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> Δεν τελειώσαμε όμως με τον προγραμματισμό όλων των αντικειμένων! Μας μένει ο προγραμματισμός του //Κανονιού// //. // Η περιγραφή του παιχνιδιού μας οδηγεί και πάλι στην χρήση του αισθητήρα //Ακούω (// // Ηear //// ). // Αυτή τη φορά όμως οι εντολές που θα χρησιμοποιήσουμε είναι διαφορετικές. Τώρα επιθυμούμε το Κανόνι να ακούει τον Μηχανάκια, επομένωςτο προσδιοριστικό αντικείμενο είναι ο Μηχανάκιας. Η περιγραφή όμως του προβλήματος κρύβει και ένα άλλο προσδιοριστικό. Μπορείτε να το φανταστείτε; Έχουμε πει ότι το //Κανόνι// αντιλαμβάνεται τον Μηχανάκια όταν περνάει από μπροστά του και τότε εκτοξεύει πυραύλους εναντίων του. Συνεπώς χρειαζόμαστε ένα ακόμη προσδιοριστικό για τον αισθητήρα μας το οποίο έχει να κάνει με την θέση του Μηχανάκια. Όπως και στο παράδειγμα της προηγούμενης παραγράφου από το μενού επιλογές (options) μπορούμε να βρούμε το προσδιοριστικό που χρειαζόμαστε. Αυτό είναι το προσδιοριστικό Μπροστά (In Front). Άρα η συμπεριφορά που θα εμφανίζει το Kανόνι είναι <span style="background-color: transparent; color: black; display: block; font-family: Arial; font-size: 10pt; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ΌΤΑΝ[ακούω][Mηχανάκια][μπροστά μου]ΤΟΤΕ[εκτόξευσε][πυραύλους εναντίων του] <span style="background-color: transparent; color: #000000; display: block; font-family: Calibri; font-size: 11pt; font-style: normal; font-weight: normal; line-height: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> <span style="background-color: transparent; color: black; display: block; font-family: Arial; font-size: 10pt; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Αποθηκεύστε τις αλλαγές που έχετε κάνει και τρέξτε το παιχνίδι. <span style="background-color: transparent; color: #000000; display: block; font-family: Calibri; font-size: 11pt; font-style: normal; font-weight: normal; line-height: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> <span style="background-color: transparent; color: #000000; display: block; font-family: Calibri; font-size: 11pt; font-style: normal; font-weight: normal; line-height: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> Ποιά άλλα όμως προσδιοριστικά μπορούμε να χρησιμοποιήσουμε σε συνδυασμό με τον αισθητήρα //Ακούω (// // Hear //// ) // ; Μπορούμε να ορίσουμε ως προσδιοριστικό <span style="background-color: transparent; color: #000000; display: block; font-family: Calibri; font-size: 11pt; font-style: normal; font-weight: normal; line-height: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> οποιοδήποτε αντικείμενο του κόσμου μας, οποιοδήποτε χρώμα (μπορεί να σας φαίνεται παράξενο αλλά για παράδειγμα μπορεί ο Kodu όταν ακούει έναν μαύρο Μηχανάκια να τον κλωτσάει), ακριβώς όπως κάναμε και για τον αισθητήρα Βλέπω (Kodu). Όταν όμως ένα αντικείμενο διαθέτει τον αισθητήρα αυτό εμφανίζεται μια επιπλέον κατηγορία προσδιοριστικών με το όνομα //Ήχοι (// // Sounds //// ). // Μπορούμε λοιπόν να χρησιμοποιήσουμε ως προσδιοριστικό όχι μόνο ένα αντικείμενο αλλά και κάποιον συγκεκριμένο ήχο (όταν ο Kodu ακούει π.χ. έναν ήχο δράματος τότε να εκφράζει λύπη). <span style="background-color: transparent; color: #000000; display: block; font-family: Calibri; font-size: 11pt; font-style: normal; font-weight: normal; line-height: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">** [ ** πονηρή ερώτηση**:** Υπάρχει μία ιδιότητα η οποία όταν είναι ενεργοποιημένη τότε ένα αντικείμενο δεν μπορεί να γίνει αντιληπτό από τον αισθητήρα //Ακούω (// // Hear //// ) //. Μπορείτε να βρείτε ποια είναι αυτή; Απ : Mute] <span style="background-color: transparent; color: #000000; display: block; font-family: Calibri; font-size: 11pt; font-style: normal; font-weight: normal; line-height: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> [tip: Μπορούμε να ρυθμίσουμε το πόσο μακρυά ακούει το αντικείμενο μας ρυθμίζοντας την ιδιότητα //Aκοή (// // Hearing) // ].

<span style="background-color: transparent; color: #000000; display: block; font-family: Calibri; font-size: 11pt; font-style: normal; line-height: normal; vertical-align: baseline; white-space: pre-wrap;">__**6.3.3 Ο αισθήτηρας: Πέφτω Πάνω (Bump)**__ Ο αισθητήρας αυτός, επιτρέπει στα αντικείμενα να αντιλαμβάνονται το γεγονός ότι έχουν ακουμπήσει άλλα αντικείμενα. Θα μπορούσαμε δηλαδή να πούμε ότι ο συγκεκριμένος αισθητήρας αποτελεί την αίσθηση της αφής. Θα μπορούσαμε λοιπόν να προγραμματίσουμε τον Kodu όταν // πέφτει πάνω // σε ένα μήλο να το τρώει ή ότα//ν πέφτει πάνω// σε κάποιον εχθρό να χάνει ενέργεια. Κάποια ρήματα συμπεριφορών που μας οδηγούν στη χρήση του αισθητήρα αυτού είναι πέφτω πάνω, ακουμπώ, αγγίζω, έρχομαι σε επαφή, συγκρούομαι. Στα περισσότερα παιχνίδια που έχετε παίξει, ο ήρωας μαζεύει κάποια αντικείμενα για να πετύχει το στόχο του. Για παράδειγμα αν ακουμπήσει ένα νόμισμα τότε αυξάνονται τα χρήματα που διαθέτει. Όταν πέσει πάνω σε μια καρδιά, προστίθεται μια ζωή στις υπάρχουσες.

Ρίξτε μια ματιά στην παρακάτω συμπεριφορά. Μπορείτε να καταλάβετε τι είχε ο προγραμματιστής στο μυαλό του όταν προγραμμάτιζε το συγκεκριμένο αντικείμενο;

Ας πάρουμε τα πράγματα με την σειρά. Προγραμματίσαμε το αντικείμενο να διαθέτει έναν αισθητήρα που θα του επιτρέπει να αντιλαμβάνεται πότε έχει ακουμπήσει ένα νόμισμα. Ο αισθητήρας που θα επιτρέψει στο αντικείμενο να αντιληφθεί το γεγονός αυτό είναι ο αισθητήρας //Πέφτω Πάνω (// // Βump) και έχει ως αποτέλεσμα να παίξει τον ήχο του Νομίσματος. // Όπως γνωρίζουμε όμως για να λειτουργήσει σωστά ένας αισθητήρας θα πρέπει να τον συνδυάσουμε με τα κατάλληλα προσδιοριστικά. Στο συγκεκριμένο παράδειγμα μας ενδιαφέρει η επαφή του αντικειμένου με ένα Νόμισμα. Συνεπώς το προσδιοριστικό που θα χρησιμοποιήσουμε είναι το //Νόμισμα//. Αυτό θα γίνει με την παρακάτω εντολή :

**ΌΤΑΝ**[πέσω πάνω][σε ένα νόμισμα]**ΤΟΤΕ**[να παίξω][τον ήχο νομίσματος].

Όπως και κάθε άλλος αισθητήρας έτσι κι αυτός διαθέτει μία μεγάλη ποικιλία προσδιοριστικών που μπορούμε να χρησιμοποιήσουμε. Σε ένα παιχνίδι ράλυ για παράδειγμα θα μπορούσαμε να προγραμματίσουμε τον Kodu όταν πέφτει πάνω σε //οτιδήποτε(// // anything) // αντί για κάποιο συγκεκριμένο αντικείμενο, να χάνει ενέργεια. Ακόμη θα μπορούσαμε να χρησιμοποιήσουμε κάποια από τα προσδιοριστικά που δηλώνουνε θέση (π.χ ο Kodu να αντιλαμβάνεται όταν πέφτει πάνω του μια Χελώνα από τα αριστερά και τότε να καταστρέφεται)

[Tip: Μία από τις ιδιότητες που μπορούμε να δώσουμε στα αντικείμενά μας είναι η ιδιότητα Φάντασμα (Ghost). Όταν κάποιο αντικείμενο διαθέτει αυτή την ιδιότητα και τον αισθητήρα Πέφτω Πάνω (Bump) τότε ο αισθητήρας δεν λειτουγεί!]

**__<span style="color: black; font-family: Arial,sans-serif; font-size: 10pt;">6.2.4 Ο αισθήτηρας: __** **__<span style="color: black; font-family: Arial,sans-serif; font-size: 10pt;">Πετυχαίνω __**

Ο αισθητήρας αυτός βοηθάει τον Kodu να αντιληφθεί πότε ένας Πύραυλος (Missile) ή ένα Σφαιρίδιο (Blip) που έχει εκτοξεύσει έχει χτυπήσει κάποιο άλλο αντικείμενο. Όπως μπορείτε να φανταστείτε, εαν προγραμματίσουμε ένα αντικείμενο να εκτελεί την ενέργεια Πυροβολώ (Shoot) τότε είναι πολύ πιθανό ότι θα χρειαστούμε να προγραμματίσουμε και τον αισθητήρα Πετυχαίνω (Shot Hit). Έτσι λοιπόν στο MSKodu θα μπορούσαμε να προγραμματίσουμε όταν ο Kodu πετύχει ένα κανόνι να το καταστρέψει ή όταν το πράσινο Κανόνι πετύχει τον Μηχανάκια να τον βάψει και αυτόν πράσινο! Με τον αισθητήρα αυτόν λοιπόν θα μπορείτε να προγραμματίζετε όλες τις παραπάνω συμπεριφορές και πολλές άλλες! Ένα παράδειγμα εντολής με χρήση του αισθητήρα:


 * ΌΤΑΝ ** [πετυχαίνω][αερόπλοιο (blimp)]**ΤΟΤΕ**[ανατίναξέ][το αερόπλοιο]

Ρήματα συμπεριφορών που θα πρέπει να μας φέρνουν στο μυαλό τον αισθητήρα Πετυχαίνω είναι: Ευστοχώ, βρίσκω στόχο

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



Σύμφωνα με την εμπειρία σας μέχρι τώρα είναι εύκολο να δημιουργήσετε έναν κόσμο που μοιάζει με τον παραπάνω. Το αντικείμενο που θα παρουσιάζει κάποια συμπεριφορά είναι μόνο ο Kodu. Αρχικά θα πρέπει ο Kodu να αλληλεπιδρά με τον παίχτη προκειμένου να μπορεί να γυρνάει (turn) αριστερά και δεξιά και να εκτοξεύει πυραύλους.. Ας υποθέσουμε ότι το αντικείμενο αντιλαμβάνεται τα κουμπιά του πληκτρολογίου για την περιστροφή και το πάτημα του αριστερού κουμπιού του ποντικιού για την εκτόξευση πυραύλων. Ο προγραμματισμός των παραπάνω συμπεριφορών δεν θα πρέπει να σας δυσκολεύει ιδιαίτερα. Επιθυμούμε: ΌΤΑΝ[στο πληκτρολόγιο][πατηθεί το πλήκτρο Α]ΤΟΤΕ[στρίψε][αριστερά] ΌΤΑΝ[στο πληκτρολόγιο][πατηθεί το πλήκτρο D]ΤΟΤΕ[στριψε][δεξιά] ΌΤΑΝ[στο ποντίκι][πατηθεί το αριστερό κλικ]ΤΟΤΕ[εκτόξευσε][πύραυλο]

Πως θα είναι όμως ο Kodu ικανός να αντιληφθεί ότι ο πύραυλος που έχει εκτοξεύσει έχει χτυπήσει κάποιο μήλο; Η χρήση του αισθητήρα //Πέφτω Πάνω (// // Bump //// ) // δεν θα ήταν σωστή αφού αφορά μόνο το αν ο Kodu έχει χτυπήσει κάποιο άλλο αντικείμενο. Εμείς επιθυμούμε ο αισθητήρας που θα χρησιμοποιήσουμε να αντιλαμβάνεται αν ο πύραυλος (missile) που έχει εκτοξεύσει ο Kodu έχει χτυπήσει κάποιο αντικείμενο. Ο Kodu μπορεί να το αντιληφθεί το γεγονός αυτό αν τον προγραμματίσουμε με τον αισθητήρα //Πετυχαίνω (// // Shot // // Hit //// ) //. Έτσι λοιπόν, ο αισθήρας αυτός θα αντιλαμβάνεται την πρόσκρουση του πυραύλου με κάποιο μήλο. Συνεπώς θα έχει σαν προσδιοριστικό το αντικείμενο Μήλο (apple). Η ενέργεια που θα εκτέλεσει ο Kodu όταν το γεγονός είναι αληθές είναι να χρωματίσει τον εαυτό του με το αντίστοιχο χρώμα του μήλου. Επομένως, μήπως είναι απαραίτητο να προσθέσουμε κάποιο επιπλέον προσδιοριστικό στον αισθητήρα; Θα πρέπει να προσδιορίσουμε και το χρώμα του μήλου που ο Κodu πετυχαίνει κάθε φορά. Το ίδιο προσδιοριστικό χρώματος θα πρέπει να προσθέσουμε και στην ενέργεια. Γενικά η συμπεριφορά του Kodu μπορούμε να πούμε ότι είναι :
 * ΌΤΑΝ ** [πετυχαίνω][Μήλο][χρώμα]**ΤΟΤΕ**[χρωμάτισε][εμένα][χρώμα]

Συγκεκριμένα όταν ο Kodu πετυχαίνει το κόκκινο Μήλο: Παρατηρείστε ότι στην παραπάνω εικόνα λείπει το κόκκινο Μήλο.Αρα ο Kodu πέτυχε το κόκκινο Μήλο και έτσι χρωμάτισε τον εαυτό του κόκκινο. Όταν ο Kodu πετυχαίνει το πράσινο Μήλο:
 * ΟΤΑΝ ** [πετυχαίνω][Μήλο][κόκκινο]**ΤΟΤΕ**[χρωμάτισε][εμένα][κόκκινο]
 * ΟΤΑΝ ** [πετυχαίνω][μήλο][πράσινο]**ΤΟΤΕ**[χρωμάτισε][εμένα][πράσινο]

Όταν ο Kodu πετυχαίνει το κίτρινο Μήλο:
 * ΟΤΑΝ ** [πετυχαίνω][Μήλο][κίτρινο]**ΤΟΤΕ**[χρωμάτισε][εμένα][κίτρινο]



Εκτός από οποιοδήποτε αντικείμενο ή οποιοδήποτε χρώμα, μπορούμε να χρησιμοποιήσουμε πολλά άλλα προσδιοριστικά για τον αισθητήρα //Πετυχαίνω (// // Shot // // Hit //// ). // Για παράδειγμα θα μπορούσαμε να χρησιμοποιήσουμε το //δεν (// // not //// ) // στο παραπάνω παράδειγμα έτσι ώστε όταν ο Kodu δεν πετυχαίνει κάποιο Mήλο να χρωματίζει τον εαυτό του μαύρο. Ακόμη φανταστείτε σε ένα παιχνίδι μάχης τον Kodu να εκτοξεύει πυραύλους εναντίων ακίνητων κανονιών και κινούμενων Χελωνών. Δεν θα ήταν δίκαιο να επιβραβεύουμε με περισσότερους πόντους τον παίκτη κάθε φορά που χτυπάει ένα κινούμενο αντικείμενο από ότι όταν χτυπάει ένα ακίνητο; Για να το πετύχουμε αυτό θα πρέπει να χρησιμοποιήσουμε το προσδιοριστικό κινούμενο (moving) μετά το αντικείμενο που επιθυμούμε να αντιλαμβάνεται ο αισθητήρας ότι ο Kodu έχει πετύχει.


 * __<span style="color: black; font-family: Arial,sans-serif; font-size: 10pt; line-height: 14.25pt; margin-bottom: 0cm;">6.2.5 Ο αισθητήρας Έχω (Got) __** <span style="color: black; font-family: Arial,sans-serif; font-size: 10pt; line-height: 14.25pt; margin-bottom: 0cm;">[[image:got.png]]

Ο αισθητήρας αυτός αναγνωρίζει το γεγονός ότι ο Kodu κρατάει κάποιο άλλο αντικείμενο. Μα πως είναι αυτό δυνατόν, αφού δεν έχει χέρια! Και όμως στο MSKodu κάποιο αντικείμενο είναι ικανό να κρατήσει κάποιο άλλο αντικείμενο. Θα μπορούσαμε λοιπόν να προγραμματίσουμε τον Kodu έτσι ώστε όταν //έχει// μία Καρδιά να εκπέμπει κόκκινο φως ή όταν κρατάει την φίλη του Χελώνα (turtle) να Πηδάει (jump) ώστε να την βοηθήσει να διασχίσει ένα ποτάμι! Ένα αντιπροσωπευτικό παράδειγμα με χρήση του αισθητήρα είναι : Ο μάλλον «ερωτοχτυπημένος» προγραμματιστής είχε στο μυαλό του:
 * ΌΤΑΝ ** [έχω][μια Kαρδιά]**ΤΟΤΕ**[λάμπω][εγώ][με κόκκινο χρώμα]

Πάμε λοιπόν να δούμε πως μπορούμε να προγραμματίζουμε τον αισθητήρα αυτό δημιουργώντας ένα παιχνίδι δράσης/ επιβίωσης. Φορτώστε το παιχνιδι **__Save__** **__ The __** **__ Wounded __** **__ Kodus __** [|Save The Wounded Kodus!.Kodu]

Η πίστα αυτού του παιχνιδιού αποτελείται από ένα μακρύ διάδρομο από γρασίδι. Στην αρχή του διαδρόμου υπάρχει ο άσπρος Kodu που είναι ο χαρακτήρας του παίχτη όπως και αρκετά γκρι Kodu που περιφέρονται.Στο τέλος του διαδρόμου υπάρχουν δύο Κάστρα και μία Καλύβα, ενώ στον ουρανό περιφέρονται εχθρικά Τζετ τα οποία ρίχνουν πυραύλους προς τα κάτω. Ο παίκτης θα πρέπει να πάρει ένα προς ένα όλα τα γκρι Kodu και να τα μεταφέρει με ασφάλεια στην άλλη πλευρά. Τα γκρι Kodu είναι ασφαλή μόνο όταν ακουμπήσουν την Καλύβα. Ο παίκτης είναι νικητής όταν δεν υπάρχει κανένα γκρι Kodu στην πίστα. Τα Κάστρα αποτελούν απλά διακοσμητικό στοιχείο της πίστας. Ας μελετήσουμε την συμπεριφορά καθενός από τα αντικείμενα που υπάρχουν στο παιχνίδι. Αρχικα ο Kodu αλληλεπιδρά με τον χρήστη μέσω του αισθητήρα //Πληκτρολόγιο (// // keyboard //// ) // και συγκεκριμένα όταν ο παίκτης πατάει κάποιο από τα πλήκτρα WASD. Όταν συμβεί κάτι τέτοιο τότε ο Kodu κινείται προς την αντίστοιχη κατεύθυνση. Επιπλέον ο παίκτης ελέγχει τον Kodu και μέσω του αισθητήρα //Ποντίκι// // ( //// mouse // ). Μάλιστα ο αισθητήρας αυτός έχει προγραμματιστεί για δύο γεγονότα. Το πρώτο γεγονός αφορά το πάτημα του αριστερού κουμπιού. Όταν ο Kodu αντιληφθεί μέσω του αισθητήρα Ποντίκι ότι έχει πατηθεί το αριστερό κοθμπί του ποντικιού τότε Aρπάζει (Grab) ότι βρει μπροστά του. Η συμπεριφορά αυτή επιτρέπει στον Kodu να παίρνει ένα-ένα τα γκρι Kodu και να τα μεταφέρει όπου επιθυμεί. Όταν πλέον ο Kodu φτάσει στο τέλος του διαδρόμου θα πρέπει να αφήσει το γκρι Kodu που κρατάει. Για την υλοποίηση της συμπεριφοράς αυτής μας βοηθάει το δεύτερο γεγονός που αντιλαμβάνεται ο αισθητήρας //Ποντίκι (// // mouse //// ) //. Όταν ο Kodu αντιληφθει ότι έχει πατηθεί το δεξί κλικ του ποντικιού τότε // Αφήνει ( //// Drop //// ) // το γκρι Kodu. Εύκολα μπορούμε να κατανοήσουμε από το προηγούμενο κεφάλαιο για ποιο λόγο έχουμε προγραμματίσει τον Kodu ως εξής:

Ας εξετάσουμε λοιπόν την τελευταία συμπεριφορά με την οποία έχει προγραμματιστεί ο Kodu. Από την στιγμή που ο Kodu εκτελεί την ενέργεια //Aρπάζω (// // Grab //// ) // προκειμένου να κρατήσει ένα γκρι Kodu θα πρέπει να διαθέτει και έναν αισθητήρα για να αντιληφθεί το γεγονός αυτό. Ποιος άραγε μπορεί να είναι ο αισθητήρας αυτός; Μα φυσικά ο αισθητήρας Έχω (Got)! Μάλιστα θα πρέπει να συνοδεύεται με δύο προσδιοριστικά. Το πρώτο προσδιοριστικό αφορά το αντικείμενο που έχει ο Kodu και το δεύτερο είναι το χρώμα του δηλαδή το γκρι. Όταν συμβεί κάτι τέτοιο τότε ο Kodu κινείται πάρα πολύ γρήγορα προκειμένου να φτάσει το συντομότερο δυνατό στο Κάστρο.

<span style="font-family: Arial,Helvetica,sans-serif;"> ΌΤΑΝ[έχω][ένα γκρι][Kodu] ΤΟΤΕ[να κινηθώ][πολύ γρήγορα] [πονηρή ερώτηση : η χρήση του αισθητήρα //Έχω (// // Got //// ) // έχει νόημα μόνο αν έχουμε προγραμματίσει κάποιο αντικείμενο να εκτελεί την ενέργεια //Aρπάζω (// // Grab //// ). // Γιατί συμβαίνει αυτό άραγε;]

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

[tip: αν δεν προγραμματίσουμε ένα αντικείμενο να διαθέτει κάποιον αισθητήρα παρά μόνο να εκτελεί μία ενέργεια τότε είναι ακριβώς το ίδιο με το να έχουμε προγραμματίσει το αντικείμενο με τον αισθητήρα Πάντα (Αlways)]

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

Τέλος η Kαλύβα είναι προγραμματισμένη να εκδηλώνει δύο συμπεριφορές. Αρχικά θα πρέπει να είναι εφοδιασμένη με τον αισθητήρα "Πέφτω Πάνω (Bump)" για να αντιλαμβάνεται πότε ένα γκρι Kodu την έχει ακουμπήσει. Όταν συμβεί κάτι τέτοιο τότε το εξαφανίζει. Η καλύβα όμως είναι και υπέυθυνη για να ανακυρρήξει τον Kodu νικητή. Θυμηθείτε ότι ο Kodu είναι νικητής μόνο όταν δεν υπάρχει κάποιο γκρι Kodu. Όπως είδαμε στο κεφάλαιο αυτό μπορούμε να χρησιμοποιήσουμε τον αισθητήρα Βλέπω (See) προκειμένου η καλύβα να αντιληφθεί την απουσία των γκρι Kodu από την πίστα.



Τρέξτε τώρα το παιχνίδι και διασκεδάστε!



Ποιά άλλα όμως προσδιοριστικά να μπορούμε να χρησιμοποιήσουμε με τον αισθητήρα //Έχω (// // Got //// ) // ; Όπως θα έχετε καταλάβει μπορούμε να χρησιμοποιήσουμε οποιοδήποτε αντικείμενο και χρώμα. Μπορούμε ακόμα όπως και με τους άλλους αισθητήρες να χρησιμοποιήσουμε το προσδιοριστικό δεν (not). Για παράδειγμα θα μπορούσαμε να εμπλουτίσουμε το παραπάνω παράδειγμα προγραμματίζοντας μία καινούρια συμπεριφορά του Kodu. Θα μπορούσαμε να τον προγραμματίσουμε όταν δεν κρατάει τίποτα (anything) τότε να εκφράζει λύπη.

Ο αισθητήρας //Κουβαλιέμαι (// // Ηeld // // Βy //// ), // επιτρέπει στα αντικείμενα να αντιδρούν στο γεγονός ότι κάποιο άλλο αντικείμενο τα κρατάει. Έτσι λοιπόν θα μπορούσαμε να προγραμματίσουμε την φίλη του Kodu να λέει βοήθεια όταν την κρατάει ένας διαβολικός Μηχανάκιας ή ένα Αστέρι να λάμπει όταν το κρατάει ο Kodu. Ο αισθητήρας //Κουβαλιέμαι (// // Ηeld // // Βy //// ) // συνοδεύεται πάντα με προσδιοριστικό το αντικείμενο που κρατάει τον χαρακτήρα μας.
 * __ 6.2.6 Ο αισθητήρας Κουβαλιέμαι ( __****__ Ηeld __** **__ Βy __****__ ) __** [[image:held_by.png]]

[tip : θα μπορούσατε να υποψιαστείτε ότι ίσως χρειαστεί ο αισθητήρας //Κουβαλιέμαι (// // Ηeld // // Βy //// ) // αν κάποιο αντικείμενο εκτελεί την //ενέργεια Αρπάζω (// // Grab // ). Μάλιστα το προσδιοριστικό του αισθητήρα //Kουβαλιέμαι (// // Held // // By //// ) // θα είναι το αντικείμενο που εκτελεί την ενέργεια //Aρπάζω (// // Grab //// ) // !] Ένα παράδειγμα εντολής με χρήση του αισθητήρα είναι : Τι είχε ο προγραμματιστής στο μυαλό του: ΌΤΑΝ[με κρατάει][ένας Μηχανάκιας] ΤΟΤΕ[να εκφράζομαι][με κακιές κουβέντες]

Ρήματα συμπεριφορών που θα πρέπει να μας φέρνουν στο μυαλό τον αισθητήρα: Κουβαλιέμαι, κρατιέμαι,μεταφέρομαι Προκειμένου να κατανοήσουμε την χρήση του αισθητήρα αυτού θα προσθέσουμε μία επιπλέον συμπεριφορά στα γκρι Kodu του παιχνιδιού Save the wounded kodus της προηγούμενης υποενότητας. Συγκεριμένα, στόχος μας είναι να τα προγραμματίσουμε έτσι ώστε όταν αντιλαμβάνονται ότι τα κρατάει ο Kodu τότε αυτά να εκπέμπουν μία πράσινη λάμψη. Πως λοιπόν μπορούν να αντιληφθούν τα γκρι Kodu ότι τα μεταφέρει ο Kodu; Αφού θα μεταφέρονται από τον Kodu, θα χρησιμοποιήσουμε τον αισθητήρα //Κουβαλιέμαι (// // Held // // By //// ) // με προσδιοριστικό το αντικείμενο Kodu. Από τη στιγμή που κανένα άλλο αντικείμενο δεν μπορεί να κρατήσει κάποιο από τα γκρι Kodu εκτός από τον Kodu δεν θα έχουμε πρόβλημα έτσι ώστε να χρειαζόμαστε επιπλέον προσδιοριστικό (χρώμα). Συνεπώς για την καινούρια συμπεριφορά των «πληγωμένων» Kodu, δημιουργούμε την εξής εντολή: ΌΤΑΝ[κουβαλιέμαι][από τον Kodu] ΤΟΤΕ[ να λάμπω][εγώ][με πράσινο χρώμα]

Φορτώστε λοιπόν το παιχνίδι και πάλι και προσθέστε την παραπάνω συμπεριφορά στα γκρι Kodu. Σώστε το και τρέξτε το. Όπως και οι υπόλοιποι αισθητήρες έτσι κι ο αισθητήρας //Κουβαλιέμαι (// // Ηeld // // Βy //// ) // μπορεί να συνδυαστεί με αρκετά προσδιοριστικά. Μπορούμε να ορίσουμε ως προσδιοριστικό οποιοδήποτε αντικείμενο του κόσμου μας, οποιοδήποτε χρώμα (π.χ. όταν ο Kodu κουβαλιέται από έναν μωβ Μηχανάκια να βάφεται και αυτός μωβ), οποιαδήποτε έκφραση άλλου αντικειμένου ( π.χ όταν ο Kodu κρατιέται από μία στενοχωρημένη Χελώνα να εκφράζει στενοχώρια και αυτός!). Στην επιλογή επιλογές (options) της πρώτης πίτας προσδιοριστικών, εμφανίζεται ένα επιπλέον προσδιοριστικό που έχει να κάνει με το αν το αντικείμενο που κουβαλάει το αντικείμενο μας κινείται. Έτσι για παράδειγμα αν επιθυμούμε ο Kodu να αντιλαμβάνεται ότι κουβαλιέται από ένα κινούμενο Ψάρι και τότε να το κλωτσάει, πρέπει να χρησιμοποιήσουμε και το προσδιοριστικό κινούμενο (moving).

<span style="font-family: Arial,Helvetica,sans-serif;">Στο προηγούμενο κεφάλαιο προγραμματίσαμε τον Kodu να εκτελεί ενέργειες χωρίς να υπάρχει αλληλεπίδραση με άλλα αντικείμενα. Στη παράγραφο αυτή θα γνωρίσουμε ενέργειες που αφορούν την αλληλεπίδραση αντικειμένων μεταξύ τους.
 * __<span style="font-family: Arial,Helvetica,sans-serif;">6.4 H συμπεριφορά του Kodu: ενέργειες __**


 * __<span style="color: black; font-family: Arial,sans-serif; font-size: 10pt; line-height: 115%;">6.4.1 Ενέργεια Τρώω ( __****__ Eat __****__<span style="color: black; font-family: Arial,sans-serif; font-size: 10pt; line-height: 115%;">) __**<span style="color: black; font-family: Arial,sans-serif; font-size: 10pt; line-height: 115%;">[[image:eat.png]]

Η ενέργεια αυτή ικανοποιεί την όρεξη του πεινασμένου Kodu. Αστειευόμαστε! Είτε πεινάει ή όχι, από την στιγμή που ο Kodu είναι προγραμματισμένος να εκτελεί την ενέργεια αυτή (στα πλαίσια πάντα κάποιας συμπεριφοράς) μπορεί να φάει οποιοδήποτε αντικείμενο βάλουμε σαν προσδιοριστικό της. Θα μπορούσαμε δηλαδή να προγραμματίσουμε τον Kodu όταν βλέπει ένα Mήλο να το // Tρώει ( //// Eat //// ) // ή ένα Ψάρι όταν πέσει πάνω σε ένα άλλο Ψάρι τότε να το τρώει. Συνεπώς η ενέργεια //Τώω (// // Εat //// ) // συνοδεύεται πάντα με προσδιοριστικό το στοιχείο που θέλουμε να καταβροχθίζει ο χαρακτήρας μας. Ένα παράδειγμα εντολής με χρήση της ενέργειας :

Τι είχε ο προγραμματιστής στο μυαλό του:

ΌΤΑΝ[δεις] [τον Κodu] ΤΌΤΕ [φάε]

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

Ας μάθουμε όμως περισσότερα για την ενέργεια αυτή προγραμματίζοντας τον Kodu κατάλληλα. Ανοίξτε έναν // άδειο κόσμο ( //// empty // // world //// ) // και προσθέστε τον Kodu, δύο Μήλα, ένα κόκκινο και ένα μωβ καθώς και ένα Δέντρο. Ο κόσμος θα μπορούσε να είναι όπως φαίνεται στην παρακάτω εικόνα :

Σκοπός μας είναι να προγραμματίσουμε τον Kodu όταν //Bλέπει (// // See //// ) // ένα κόκκινο Μήλο τότε να το καταπίνει. Αρχικά για την κίνηση του Kodu τον προγραμματίζουμε με τον αισθητήρα πληκτρολόγιο έτσι ώστε όταν πατηθεί κάποιο από τα τέσσερα βέλη να το αντιληφθεί και να κινηθεί προς την αντίστοιχη κατεύθυνση.



Αποθηκεύστε το παιχνίδι και τρέξτε το.

Παρατηρούμε ότι ο kodu το μόνο που κάνει είναι να σπρώχνει το Μήλο προς οποιαδήποτε κατεύθυνση κινείται. Πώς άραγε θα μπορούσαμε να προγραμματίσουμε τον Kodu να καταπίνει το κόκκινο μήλο όταν το βλέπει; Εφόσον πρόκειται για ένα λαχταριστό κόκκινο μήλο θα μπορούσαμε να προγραμματίσουμε τον Κodu έτσι ώστε όταν //Βλέπει (// // See //// ) // ένα κόκκινο Mήλο να το //Tρώει (// // Eat //// ) // ! Προσθέτουμε λοιπόν στις συμπεριφιρές του Kodu τις εξής εντολές: ΌΤΑΝ[δω][Mήλο][κόκκινο] ΤΟΤΕ[φάε][το κόκκινο Mήλο]

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

Η ενέργεια //Tρώω (// // Eat //// ) // μπορεί να πάρει δύο προσδιοριστικά, το //συγκεκριμένο (// // it //// ) // και το //μόνο μία φορά (// // once //// ). // Το πρώτο προσδιοριστικό χρησιμοποιείτε όταν επιθυμούμε o Kodu να τρώει μόνο το αντικείμενο που αντιλαμβάνεται ο αισθητήρας όσες φορές και αν το βλέπει. Εαν στην πίστα μας υπάρχουν πολλά Μήλα και επιθυμούμε ο Κodu να φάει μόνο το πρώτο που θα αντιληφθεί τότε εκτός από το προσδιοριστικό //συκεκριμένο (// // it //// ) // θα πρέπει να προσθέσουμε και το δεύτερο προσδιοριστικό δηλαδή το μια φορά (once).

Η ενέργεια αυτή είναι διαθέσιμη στο μενού //μάχη (// // combat //// ) //. Ας σκεφτούμε λίγο την προηγούμενη ενέργεια, δηλαδή την ενέργεια «Tρώω (Eat) ». Στην περίπτωση που στην θέση του Μήλου είχαμε ένα Νόμισμα ή μια Καρδιά, θα μπορούσαμε και πάλι να χρησιμοποιήσουμε την ενέργεια //Τρώω (// // Εat //// ) // όπως ήδη έχει αναφερθεί. Ωστόσο στις περιπτώσεις αυτές αυτό που στην ουσία επιθυμούμε να γίνεται είναι το αντικείμενο στο οποίο πέσει πάνω ο Kodu να εξαφανιστεί από τον κόσμο, και όχι να φαγωθεί. Για αυτό το λόγο μπορούμε να προγραμματίσουμε τον Kodu με την ενέργεια //Εξαφανίζω (// // Vanish //// ) //. Θα μπορούσαμε γαι παράδειγμα να προγραμματίσουμε τον Kodu όταν //Πετυχαίνει (// // Shot // // Hit //// ) // ένα εχθρικό Kανόνι αυτό να εξαφανίζεται. Φανταζόμαστε λοιπόν ότι η ενέργεια αυτή συνδυάζεται πάντα με προσδιοριστικό ένα αντικείμενο. Αυτό όμως δεν είναι πάντα σωστό. Αν δεν βάλουμε κάποιο προσδιοριστικό στην ενέργεια τότε ο Κodu θα εξαφανίζει οποιοδήποτε αντικείμενο για το οποίο αληθεύει το γεγονός που οδηγεί στην εκτέλεση της ενέργειας αυτής. Ένα παράδειγμα εντολής με χρήση της ενέργειας //Εξαφανίζω (// // Vanish //// ): // Τι είχε ο προγραμματιστής στο μυαλό του: ΌΤΑΝ [πετυχαίνω][οτιδήποτε]ΤΟΤΕ [Eξαφάνιζε]
 * __<span style="font-family: Calibri,sans-serif; font-size: 11pt; line-height: 115%;">6.4.2 Ενέργεια Εξαφανίζω __**<span style="font-family: Calibri,sans-serif; font-size: 11pt; line-height: 115%;">[[image:vanich.png]]

Ρήματα συμπεριφορών που θα πρέπει να μας φέρνουν στο μυαλό την ενέργεια: Εξαφανίζω, καταστρέφω, σκοτώνω, εξολοθρεύω, αφανίζω

Ας υποθέσουμε λοιπόν ότι σε ένα κόσμο υπάρχει ο //Μηχανάκιας// και μία //Χελώνα// όπως φαίνεται στην παρακάτω εικόνα. Θα προγραμματίσουμε τον Μηχανάκια να παρουσιάζει μία συμπεριφορά που είναι σίγουρο ότι έχετε συναντήσει σε κάποιο άλλο παιχνίδι. Πρόκειται για μία από τις κλασικότερες συμπεριφορές σε παιχνίδια δράσης! Επιθυμούμε να προγραμματίσουμε τον Μηχανάκια έτσι ώστε αν μετά την εκτέλεση ενός άλματος πέσει πάνω στην Χελώνα να την καταστρέψει! Για να δούμε λοιπόν πως θα μπορούσαμε να προγραμματίσουμε τον Μηχανάκια έτσι ώστε να επιδεικνύει την παραπάνω συμεριφορά. Για ακόμη μια φορά θα χρειαστούμε να προγραμματίοσυμε την αλληλεπίδραση του Μηχανάκια με τον πάικτη μέσω του πληκτρολογίου έτσι ώστε να κινείται και να εκτελεί άλμα. Αυτές τις συμπεριφορές θα πρέπει να είστε πλέον σε θέση να τις προγραμματίζετε. Πώς όμως μπορούμε να προγραμματίσουμε τον Μηχανάκια έτσι ώστε όταν προσγειωθεί πάνω στην Χελώνα να την καταστρέψει; Ο Μηχανάκιας θα πρέπει να διαθέτει κάποιον αισθητήρα που να αντιλαμβάνεται πότε έχει ακουμπήσει την Χελώνα. Σωστά; Θυμηθείτε τον αισθητήρα //Πέφτω Πάνω (// // Βump //// ) // που μάθαμε σε αυτό το κεφάλαιο. Θα έχει σαν προσδιοριστικό αντικείμενο την Χελώνα και θα χρεαστούμε και το προσδιοριστικό που υποδηλώνει κατεύθυνση. Εφόσον ο μηχανάκιας θα πέφτει πάνω στην χελώνα από τον αέρα η Χελώνα θα βρίσκεται από κάτω του. Άρα θα πρέπει να χρησιμοποιήσουμε και το προσδιοριστικό //κάτω (// // below //// ) //. Αυτό είναι το γεγονός που θα οδηγεί τον Μηχανάκια στην εκτέλεση της ενέργειας του, η οποία είναι να σκοτώνει την Χελώνα. Θυμηθείτε λίγο τα εναλλακτικά ρήματα που παρουσιάστηκαν ως τώρα σε αυτή τη παράγραφο. Ποιά ενέργεια σας έρχεται στο μυαλό; Αυτή θα πρέπει να είναι η ενέργεια //Εξαφανίζω (// // Vanish //// ), // την οπία μάλιστα θα πρέπει να την συνδυάσουμε με το προσδιοριστικό //συγκεκριμένο (// // it //// ) // έτσι ώστε να εξαφανίζει μόνο την Χελώνα. Οι συμπεριφορές λοιπόν που περιγράψαμε παραπάνω είναι: ΌΤΑΝ[στο πήκτρολόγιο πατηθεί][κάποιο από τα βέλη] ΤΟΤΕ [κινήσου] Όταν[στο πληκτρολόγιο πατηθεί][το πλήκτρο κενό] ΤΟΤΕ [πήδα][χαμηλά] ΌΤΑΝ[ακουμπήσεις][μία Xελώνα][από κάτω σου ] ΤΟΤΕ[εξαφάνισε][την Xελώνα] Και σε μορφή εντολών στο MSKodu είναι:



[ο Mηχανάκιας εκτελεί άλμα προκειμένου να προσγειωθεί πάνω στην Xελώνα για να την σκοτώσει]

[ο Mηχανάκιας προσγειώθηκε πάνω στην Xελώνα και την εξαφάνισε]

Η ενέργεια εξαφανίζω μπορεί να συνδυαστεί μόνο με δύο προσδιοριστικά. Το //συγκεκριμένο (// // it //// ) // και το //εμένα(// // me //// ). // Για το προσδιοριστικό εμένα θα μπορούσαμε να προγραμματίσουμε τον Μηχανάκια του παραδείγματος μας να εξαφανίζει τον εαυτό του αν πέσει πάνω στην Χελώνα από οποιαδήποτε άλλη κατεύθυνση εκτός της από κάτω (below)


 * __<span style="font-family: Calibri,sans-serif; font-size: 11pt; line-height: 115%;">6.4.3 Ενέργεια Εκτινάζω (Launch) __**<span style="font-family: Calibri,sans-serif; font-size: 11pt; line-height: 115%;">[[image:launch.png]]

Η ενέργεια αυτή δίνει την ικανότητα στον Kodu να εκτινάζειι άλλα αντικείμενα. Θα μπορούσαμε για παράδειγμα να προγραμματίσουμε τον Kodu σε ένα παιχνίδι μάχης όταν πέφτει πάνω σε ένα Μηχανάκια να τον πετάει μακρυά. Θα την βρείτε στο μενού //ενέργειες (// // actions //// ) //. Ωστόσο πρόκειται για μία ιδιαίτερη ενέργεια καθώς ανάλογα με τα προσδιοριστικά που θα χρησιμοποιήσουμε αλλάζει τελείως τον τρόπο με τον οποίο ο Κodu την εκτελεί. Κάντε λίγη υπομονή και όλα αυτά θα τα ξεκαθαρίσουμε στην συνέχεια. Ένα παράδειγμα εντολών περιγραφής της ενέργειας είναι



ΌΤΑΝ[συγκρουστείς][με τον Κodu] ΤΟΤΕ[Εκτίναξε][τον kodu] Ρήματα που μπορούν να μας φέρουν στο μυαλό την ενέργεια αυτή: Εκτινάζω, πετάω, κλωτσάω. Ας δούμε πρακτικά όμως την ενέργεια αυτή σε ένα παιχνίδι εκτέλεσης πέναλτι το οποίο θα ολοκληρωθεί στην επόμενη παράγραφο. Συνεπώς βάλτε τα δυνατά σας τώρα έτσι ώστε στο τέλος του κεφαλαίου να έχετε ένα ολοκληρωμένο παιχνίδι! Έστω ότι ο κόσμος του παιχνιδιού αποτελείται από ένα γήπεδο ποδοσφαίρου. Στο βάθος ακούγεται πλήθος να ζητωκραυγάζει ενώ στο κέντρο του υπάρχει ο Κodu τον οποίο χειρίζεται ο παίκτης με το πληκτρολόγιο και μία Μπάλα, όπως φαίνεται και στην παρακάτω εικόνα. Σκοπός του παιχνιδιού είναι ο κodu να βάλει γκολ στην εστία που βρίσκεται στα αριστερά του.

Ας ξεκινήσουμε με τον προγραμματισμό του Kodu δηλαδή του αντικειμένου που θα χειρίζεται ο παίχτης. Ο Kodu θα πρέπει να αξιοποιήσει τον αισθητήρα πληκτρολόγιο για να καταλαβαίνει πότε ο χρήστης έχει πατήσει τα πλήκτρα αριστερό και δεξί βέλος και το space. Για την κίνηση του Κodu λοιπόν χρειαζόμαστε τις ΌΤΑΝ[στο πληκτρολόγιο][πατηθεί το πλήκτρο αριστερά] ΤΟΤΕ [στρίψε][αριστερα] ΌΤΑΝ[στο πληκτρολόγιο][πατηθεί το πλήκτρο δεξιά] ΤΟΤΕ [στρίψε][δεξιά] Πως όμως μπορούμε να προγραμματίσουμε τον Κodu έτσι ώστε να βαράει την μπάλα και αυτή να εκτοξεύεται στην εστία προκειμένου να βάλει γκολ; Από την στιγμή που επιθυμούμε ο πάικτης να εκτελεί το πέναλτι θα πρέπει να αποφασίζει εκείνος πότε να κλωτσίσει την μπάλα. Συνεπώς και πάλι θα προγραμματίσουμε τον Κodu με τον αισθητήρα πληκτρολόγιο και προσδιοριστικό το πλήκτρο //κενό (// // space //// ). // Ποια ενέργεια όμως θα μπορούσαμε να χρησιμοποιήσουμε έτσι ώστε ο Κodu να κλωτσάει την μπάλα; Ενέργεια που να ονομάζεται κλωτσάω δεν υπάρχει. Θα μπορούσαμε συνεπώς να χρησιμοποιήσουμε την ενέργεια //Εκτινάζω (// // Launch //// ) //. Μάλιστα δεν θα πρέπει να την συνδιάσουμε με κανένα προσδιοριστικό. Έτσι λοιπόν μπορούμε να προσθέσουμε στον Κodu την εξής συμπεριφορά: ΌΤΑΝ [στο πληκτρολόγιο][πατηθεί το κενό] ΤΟΤΕ[εκτίναζε] Ακολουθεί το σύνολο των εντολών για τον Κodu: Αποθηκεύστε το παιχνίδι και τρέξτε το.



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

Αποθηκεύστε τις αλλαγές και τρέξτε πάλι το πρόγραμμα. Αυτή τη φορά κρατείστε πατημένο το πλήκτρο //κενό (// // space //// ). // Όσο κρατάτε πατημένο το πλήκτρο ο κόσμος θα πρέπει να μοιάζει όπως φαίνεται στην εικόνα που ακολουθει :

Όταν σταματήσετε να πατάτε το πλήκτρο ο κόσμος θα μοιάζει κάπως έτσι : Γέμισε ο τόπος Μπάλες! Επιπλέον παρατηρείστε ότι το αρχικό αντικείμενο Μπάλα που έχουμε εισάγει στον κόσμο του παιχνιδιού δεν έχει κινηθεί καθόλου. Αυτό συμβαίνει διότι στην περίπτωση που προσθέσουμε ως προσδιοριστικό στοιχείο κάποιο από τα αντικείμενα που μας προσφέρει το MSKodu στην ενέργεια εκτινάζω (Launch), ο Kodu δημιουργεί το αντικείμενο που έχουμε προσθέσει ως προσδιοριστικό και το εκτοξεύει ασχέτως με ότι βρίσκεται μπροστά του. Θα συμφωνείτε τώρα ότι η ενέργεια αυτή είναι αρκετά παράξενη! Η ενέργεια εκτινάζω (Launch) συνδιάζεται με προσδιοριστικά που αφορούν την δύναμη και το ύψος που εκτοξεύει ο Kodu το αντικείμενο (για παράδειγμα αν επιθυμούσαμε όταν πατηθεί το πλήκτρο κενό (space) ο Κodu να ρίξει ψηλοκρεμαστό σουτ τότε θα προσθέταμε στην ενέργεια εκτινάζω τα προσδιοριστικά δυνατά (strong) και ψηλά (high) ), όπως και την κατεύθυνση στην οποία επιθυμούμε να εκτοξεύει κάποιο αντικείμενο (όπως για παράδειγμα όταν ο Κodu δει από πάνω του ένα αερόπλοιο να εκτινάξειι ένα μήλο προς τα πάνω (up)).

[tip: Η δύναμη Κλωτσιάς και ο Ρυθμός κλωτσιάς είναι δύο ιδιότητες που επηρεάζουν την λειτουργία της ενέργειας //Εκτινάζω (// // Launch //// ) // .]

[Προσδιοριστικό // M //// ία φορά ( //// once //// ) // : Το προσδιοριστικό αυτό όπως μπορεί να έχετε παρατηρήσει μέχρι τώρα μπορεί να επιλεχθεί με οποιαδήποτε ενέργεια. Για να συμβαίνει αυτό θα πρέπει να υπάρχει κάποιος σοβαρός λόγος. Δεν συμφωνείτε; Ας μην ξεχνάμε ότι όταν προγραμματίζουμε έναν αισθητήρα εκείνος ελέγχει συνέχεια αν συμβαίνει το γεγονός που έχουμε προγραμματίσει. Στην περίπτωση που το γεγονός συμβεί τότε ο Kodu θα εκτελεί την ενέργεια που έχουμε προγραμματίσει για όση χρονική διάρκεια συμβαίνει. Σκεφτείτε την εξής συμπεριφορά ΌΤΑΝ [στο πληκτρολόγιο][πατηθεί το πλήκτρο κενό] ΤΟΤΕ[εκτόξευε][Σφαιρίδια]. Για όσο χρονικό διάστημα πατάμε το πλήκτρο κενό, ο Κodu θα εκτοξεύει Σφαιρίδια. Στην περίπτωση που προσθέσουμε και το προσδιοριστικό μία φορά (once) τότε για όσο χρονικό διάστημα κι αν κρατήσουμε πατημένο το πλήκτρο τότε ο Kodu θα εκτοξευσεί μόνο ένα Σφαιρίδιο. Προσοχή όμως! Αυτό δεν σημαίνει ότι θα είναι και η μοναδική φορά. Αν ξαναπατήσουμε το πλήκτρο κενό τότε ο Kodu θα εκτοξευσεί και πάλι ένα Σφαιρίδιο.]


 * __6.4.4 Ενέργεια Αρπάζω (Grab)__[[image:grab.png]]**
 * Η ενέργεια //Αρπάζω (// ****// Grab //****// ) //**** επιτρέπει στα αντικείμενα να κρατήσουν ένα αντικείμενο. ** Η ενέργεια αυτή ανήκει στην "οικογένεια" ενεργειών //Kρατάω (// // Holding //// ) // . ** Έτσι λοιπόν ο **** Kodu ** ** μπορεί να αρπάξει ένα Nόμισμα για να το δώσει σε ένα Περισκόπιο έτσι ώστε να τον αφήσει να περάσει μία γέφυρα ή ένας κακός Μηχανάκιας να αρπάξει την φίλη του **** Κodu ** ** όταν την δει για να την απαγάγει. Ένα παράδειγμα εντολής με χρήση της ενέργειας: **
 * Τι είχε ο προγραμματιστής στο μυαλό του: **
 * ΌΤΑΝ [ακούω][τον **** Κodu **** ] ΤΟΤΕ[άρπαξε][τον **** Κodu **** ] **


 * Ρήματα συμπεριφορών που θα πρέπει να μας φέρνουν στο μυαλό την ενέργεια: **
 * Αρπάζω, αιχμαλωτίζω, κρατάω, πιάνω. **

Όπως σας υποσχεθήκαμε στο τέλος αυτής της παραγράφου θα έχουμε ένα ολοκληρωμένο παιχνίδι πέναλντι! Ας συμπληρώσουμε το προηγούμενο παιχνίδι προσθέτοντας στο στάδιο έναν Μηχανάκια ο οποίος θα είναι ο τερματοφύλακας. Συνεπώς ο κόσμος του παιχνιδιού τώρα θα αποτελείται από τον Kodu, την Μπάλα και τον Μηχανάκια. Σκοπός του παιχνιδιού είναι ο χειρηστής του Κodu να βάλει γκολ στην εστία του Μηχανάκια. Ας ρίξουμε μία ματιά στον κόσμο έτσι όπως έχει διαμορφωθεί τώρα.

Η συμπεριφορά του Kodu δεν χρειάζεται να αλλάξει. Συνεπώς δεν χρειάζεται να προγραμματίσουμε τον Κodu εκ νέου. Θα πρέπει όμως να προγραμματίσουμε τον Μηχανάκια έτσι ώστε να συμπεριφέρεται σαν πραγματικός τερματοφύλακας. Ο Μηχανάκιας θα πρέπει με κάποιο τρόπο να αντιλαμβάνεται την Μπάλα που εκτινάζει ο Κodu προς την εστία έτσι ώστε να κατευθυνθεί προς αυτή και να την πιάσει. Άρα με όσα έχουμε πει μέχρι τώρα πρέπει να τον προγραμματίσουμε είτε με τον αισθητήρα Βλέπω (See) ή με τον αισθητήρα Aκούω (Hear). Συνεπώς επιλέγουμε τον αισθητήρα Bλέπω ( See ) με προσδιοριστικό την Mπάλα. Όταν αντιληφθεί την Mπάλα θα πρέπει ο Μηχανάκιας να κινηθεί προς το μέρος της. Θα πρέπει ωστόσο να προσθέσετε κάποια επιπλέον προσδιοριστικά στον αισθητήρα αυτόν. Αν προγραμματίσετε τον αισθητήρα αυτό μόνο για να αντιλαμβάνεται μία Μπάλα, τότε όταν θα τρέξουμε το παιχνίδι ο Μηχανάκιας θα κατευθυνθεί προς αυτή οπουδήποτε κι αν βρίσκεται. Η συμπεριφορά αυτή δεν είναι σωστή. Θα πρέπει να προγραμματίσετε τον αισθητήρα έτσι ώστε ο Μηχανάκιας να αντιλαμβάνεται την Μπάλα μόνο όταν κινείται και είναι κοντά σε αυτόν. Αυτή είναι η πρώτη συμπεριφορά με την οποία θα πρέπει να προγραμματίσουμε τον Μηχανάκια. Όταν πλέον ο Μηχανάκιας θα έχει φτάσει στην Μπάλα θα πρέπει με κάποιον τρόπο να την αποκρούσει. Επομένως θα πρέπει πρώτα να αισθανθεί ότι έχει έρθει σε επαφή με την Μπάλα και στην συνέχεια να την κρατήσει προκειμένου να μην μπει γκολ. Για να δούμε λοιπόν πως μπορούμε να προγραμματίσουμε την παραπάνω συμπεριφορά. Το γεγονός ότι ο Μηχανάκιας έχει αγγίξει την Μπάλα μπορεί να το αντιληφθεί μέσω του αισθητήρα //Πέφτω Πάνω (// // Βump //// ) // με προσδιοριστικό την Μπάλα. Εφόσον επιθυμούμε να κραταει την Μπάλα όταν την αγγίξει θα πρέπει να χρησιμοποιήσουμε την ενέργεια Αρπάζω ( Grab ) με προσδιοριστικό το //συγκεκριμένο (// // it //// ) // το οποίο αντιστοιχεί στο προσδιοριστικό αντικείμενο του αισθητήρα //Πέφτω Πάνω (// // Βump //// ). // Συνεπώς για την συμπεριφορά του Μηχανάκια δημιουργούμε τις εξής εντολές: ΌΤΑΝ[δω][Μπάλα][που κινείται][κοντά μου] ΤΟΤΕ[κινούμαι][προς αυτή] ΌΤΑΝ[πέσω πάνω σε][Μπάλα] ΤΟΤΕ[αρπάζω][την μπάλα]

Αποθηκεύστε τις αλλαγές και τρέξτε το παιχνίδι.

Η ενέργεια αυτή μπορεί να συνδυαστεί μόνο με ένα προσδιοριστικό και αυτό είναι το συγκεκριμένο ( it ). Ωστόσο μπορούμε να μην χρησιμοποιήσουμε κάποιο προσδιοριστικό στην ενέργεια //Αρπάζω (// // Grab //// ). // Για παράδειγμα θα μπορούσε ο Kodu να αρπάζει οποιοδήποτε αντικείμενο έριχνε καταπάνω του ένα Kανόνι.

__**<span style="font-family: Arial,Helvetica,sans-serif;">6.5 Ο επεξεργαστής εντολών(editor) **__ Η συνεχής ενασχόλησή με τον προγραμματισμό, μας οδηγεί στην ανάπτυξη των προγραμματιστικών ικανοτήτων μας. Έτσι θα είμαστε σε θέση να γράφουμε όλο και πιο σύνθετα προγράμματα. Αυτό σημαίνει ότι θα ξοδεύουμε περισσότερη ώρα στον //επεξεργαστή εντολών// προκειμένου να τα υλοποιήσουμε. Έτσι λοιπόν, προκειμένου οι σχεδιαστές του Kodu να κάνουν την προγραμματιστική μας εμπειρία πιο εύκολη έχουν προσθέσει στον επεξεργαστή εντολών κάποιες λειτουργίες. Ας ρίξουμε λοιπόν μια προσεκτική ματιά στον επεξεργαστή εντολών. Φορτώστε το παιχνίδι Shooting Fish v.3. Ο κόσμος του παιχνιδιού αποτελείται από τον Kodu και έξι Χελιδονόψαρα διαφορετικού χρώματος το καθένα. Σκοπός του παιχνιδιού είναι ο Kodu, τον οποίο χειρίζεται ο παίκτης από το πληκτρολόγιο, να σκοτώσει όλα τα χελιδονόψαρα που υπάρχουν εκτοξεύοντας πυραύλους. Ο κόσμος του παιχνιδιού όπως περιγράφτηκε φαίνεται στην ακόλουθη εικόνα. Τα αντικείμενα του παιχνιδιού είναι ήδη προγραμματισμένα έτσι ώστε να εμφανίζουν τις εξής συμπεριφορές: Χελιδονόψαρα: ΌΤΑΝ[]ΤΟΤΕ[κινήσου][στο μονοπάτι] ΌΤΑΝ[δεις][χελιδονόψαρο]ΤΟΤΕ[κινήσου][μακρυά του] Kodu: ΌΤΑΝ [στο πληκτρολόγιο][πατηθεί το πλήκτρο αριστερά]ΤΟΤΕ[στρίψε ][αριστερά] ΌΤΑΝ[στο πληκτρολόγιο][πατηθεί το πλήκτρο κενό]ΤΟΤΕ[εκτόξευε][πυραύλους][τυχαίου χρώματος]

Ας δούμε λοιπόν ποιες λειτουργίες μας προσφέρει ο επεξεργαστής εντολών.

Η λειτουργία αυτή μας επιτρέπει να αντιγράψουμε γραμμές εντολών και να τις προσθέσουμε τόσο στο αντικείμενο από το οποίο τις πήραμε (π.χ. αν ένα αντικείμενο έχει παρόμοιες συμπεριφορές), όσο και σε κάποιο άλλον αντικείμενο. Όπως μπορεί να έχετε παρατηρήσει ήδη, ο Kodu μπορεί να στρίψει μόνο αριστερά. Ας τον προγραμματίσουμε να μπορεί να στρίψει και δεξιά. Δεν χρειάζεται να συντάξουμε από την αρχή ολόκληρη την εντολή. Μπορούμε να την αντιγράψουμε και να αλλάξουμε μόνο τα προσδιοριστικά που είναι διαφορετικά.
 * //Αντιγραφή Γραμμής (copy// //row////)// και //Επικόλληση Γραμμής (////paste// //row////)//

1. Επιλέγουμε την γραμμή εντολής που επιθυμούμε να αντιγράψουμε πατώτας το αριστερό κουμπι του ποντικιού μας στον αριθμό που βρίσκεται στην αρχή της. Καταλαβαίνουμε ότι έχουμε επιλέξει την γραμμή από τα βέλη με έντονο γκρι που εμφανίζονται. <span style="font-family: Arial,Helvetica,sans-serif;">

2. Πατάμε το δεξί κουμπί του ποντικιού και επιλέγουμε //αντιγραφή γραμμής (////copy// //row////)//

3. Κάνουμε αριστερό κλίκ στον αριθμό μιας κένης γραμμής προκειμένου να την επιλέξουμε.

4. Πατάμε το δεξί πλήκτρο του ποντικιού και επιλέγουμε την //επικόλληση γραμμής (////paste// //row////)//

5. Στον επεξεργαστή εντολών εμφανίζεται ένα αντίγραφο της γραμμής. <span style="font-family: Arial,Helvetica,sans-serif;">

Το μόνο που μένει τώρα είναι να αλλάξουμε το προσδιοριστικό του αισθητήρα και της ενέργειας από //αριστερά (////left////)// σε //δεξιά (////right////).//

Η λειτουργία της //αποκοπής γραμμής (////cut// //row////)// μπορεί να μας φανεί πολύ χρήσιμη εαν θέλουμε να μετακινήσουμε μία εντολή από ένα αντικείμενο σε ένα άλλο (π.χ. αν έχουμε μπερδευτεί και προγραμματίζουμε άλλο αντικείμενο από αυτό που θέλουμε). Φανταστείτε να είχαμε μπερδευτεί και να είχαμε προσθέσει την εξής συμπεριφορά στον Kodu και όχι στο Χελιδονόψαρο:
 * // Αποκοπή ( //// cut //// ) // και //Επικόλληση (// // paste //// ) //

Με την αποκοπή γραμμής θα μπορούσαμε να την μεταφέρουμε από τον Kodu στο Χελιδονόψαρο με την εξής απλή διαδικασία: 1. Επιλέγουμε την γραμμή εντολής που επιθυμούμε να αποκόψουμε, πατώτας το αριστερό κουμπί του ποντικιού μας στον αριθμό που βρίσκεται στην αρχή της. Καταλαβαίνουμε ότι έχουμε επιλέξει την γραμμή από τα βέλη με έντονο γκρι που εμφανίζονται.

2. Πατάμε το δεξί κουμπί του ποντικιού μας και επιλέγουμε την αποκοπή γραμμής (cut row).

3. Παρατηρούμε ότι η γραμμή εξαφανίζεται <span style="color: black; font-family: Arial; font-size: 10pt; line-height: 0px; overflow-x: hidden; overflow-y: hidden; text-indent: -18pt;">﻿ <span style="font-family: Arial,Helvetica,sans-serif;">

4. Βγαίνουμε από τον επεξεργαστή εντολών του Kodu πατώντας το πλήκτρο escape και ανοίγουμε τον επεξεργαστή εντολών του χελιδονόψαρου. <span style="color: black; font-family: Arial; font-size: 10pt; line-height: 0px; overflow-x: hidden; overflow-y: hidden; text-indent: -18pt;">﻿ <span style="font-family: Arial,Helvetica,sans-serif;">

5. Κάνουμε αριστερό κλίκ στον αριθμό μιας κενής γραμμής προκειμένου να την επιλέξουμε. <span style="font-family: Arial,Helvetica,sans-serif;">

6. Πατάμε το δεξί πλήκτρο του ποντικιού και επιλέγουμε την //επικόλληση γραμμής (////paste// //row////)//

7. Η εντολή που αποκόψαμε, επικολήθηκε με επιτυχία.

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

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

[Παρατηρείστε τους αριθμούς που υπάρχουν δίπλα από κάθε γραμμή. Οι αριθμοί δεν υπάρχουν μόνο για να βλέπετε πόσες γραμμές εντολών έχουμε εισάγει. Δηλώνουν και την προτεραιότητα των ενεργειών. Μπορεί οι ενέργειες να εκτελούνται παράλληλα στο MSKodu εφόσον συμβούν τα αντίστοιχα γεγονότα από τα οποία εξαρτώνται, ωστόσο κάθε μία έχει διαφορετική προτεραιότητα ανάλογα με την σειρά που την έχουμε γράψει.]

Ο επεγερξαστής εντολών είναι σχεδιασμένος έτσι ώστε να μας βοηθάει να συντάξουμε σωστά τις συμπεριφορές των αντικειμένων. Ωστόσο μερικές φορές κατά την διάρκεια που προγραμματίζουμε ένα αντικείμενο μπορεί να ξεχάσουμε τι σημασία μίας εντολής. Σίγουρα να ανατρέξετε σε αυτό το βιβλίο θα ήταν ένας τρόπος για να λύσετε την απορία σας αλλά δεν θα ήταν και ο πιο γρήγορος. Σωστά; Αρκεί λοιπόν να αφήσετε τον κέρσορα του ποντικιού σας πάνω στην εντολή που επιθυμείτε και θα εμφανιστεί μία γκρι φούσκα που θα περιγράφει τι σημασία της εντολής. Αν πάλι δεν είστε σίγουροι ότι έχετε καταλάβει ακριβώς πως συντάσσετε μια εντολή και ποια είναι η λειτουργία της ή απλά έχετε στερέψει από έμπνευση αρκεί να πατήσετε το πλήκτρο Υ στο πληκτρολόγιό σας. Αμέσως θα ξεπροβάλλει μπροστά σας μία σειρά από παραδείγματα με χρήση της εντολής που έχετε επιλέξει.
 * Βοήθεια

=<span style="font-size: 1.4em; margin: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 5px;">** Περίληψη ** = ====<span style="font-size: 1.066em; font-weight: normal; margin: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 5px;">Στο κεφάλαιο αυτό είδαμε αναλυτικότερα τα αντικείμενα του MSKodu και εξετάσαμε πως αλληλεπιδρούν μεταξύ τους. Πιο συγκεκριμένα μάθαμε να αλλάζουμε τις ιδιότητες των αντικειμένων από το μενού //αλλαγή ιδιοτήτων (change settings)//, όπως για παράδειγμα την ταχύτητα κίνησης, ώστε να δημιουργούμε αντικείμενα με τις επιθυμητές ιδιότητες που ταιριάζουν καλύτερα στα παιχνίδια μας (παιχνίδια μάχης, αγωνιστικά κτλ). Μελετήσαμε επίσης εκτενέστερα τους αισθητήρες με τους οποίους μπορούμε να προγραμματίσουμε τα αντικείμενα έτσι ώστε να αντιλαμβάνονται με διάφορους τρόπους τα υπόλοιπα αντικείμενα ενός παιχνιδιού προκειμένου να αντιδρούν σε διάφορα γεγονότα εκτελώντας κάποιες ενέργεις. Αναλύσαμε μια σειρά ενεργειών που μπορούν να εκτέλουν τα αντικείμενά μας σε συνδυασμό με άλλα αντικείμενα. Τέλος, παρουσιάσαμε τον επεξεργαστή εντολών (editor) ώστε να γράφετε τις εντολές πιο εύκολα και γρήγορα (π.χ με χρήση της αντιγραφής και επικόλλησης). ====

1) Στο παιχνίδι εκτέλεσης πέναλντι που δημιουργήσατε στην παράγραφο 6.4 μπορείτε να εντοπίσετε ποιες ιδιότητες επηρεάζουν την συμπεριφορά του Μηχανάκια – τερματοφύλακα;
 * Ερωτήσεις**

2)Μπορείτε να αναφέρετε τους λόγους για τους οποίους οι παρακάτω συμπεριφορές δεν είναι ίδιες;

3) Θα μπορούσατε να αλλάξετε την παραπάνω συμπεριφορά έτσι ώστε το αντικείμενο που την εμφανίζει όταν πέσει πάνω στην χελώνα από τα δεξιά τότε να εξαφανιστεί αυτό;

4) Μπορείτε να καταλάβετε αν οι παρακάτω συμπεριφορές είναι ίδιες;

5) Στον κόσμο ενός παιχνιδιού υπάρχουν ο Kodu και ένας Μηχανάκιας. Ποιά από τις δύο συμπεριφορές θα εκτελέσει ο Kodu;

= =


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

Δημιουργία Παιχνιδιού Friend Rescue Δημιουργείστε ένα κόσμο όπως φαίνεται στην παρακάτω εικόνα. Εισάγεται στον κόσμο τα εξής αντικείμενα:
 * Δραστηριότητα 1η**
 * τον μπλε Kodu τον οποίο χειρίζεται ο παίκτης
 * ένα ροζ Kodu που είναι η φίλη του Kodu
 * μία άσπρη Χελώνα
 * τρία κόκκινα Δέντρα
 * Ένα κάστρο
 * πέντε κόκκινα Μήλα διαφορετικού μεγέθους
 * τρεις Πέτρες διαφορετικού μεγέθους

Σκοπός του παιχνιδιού είναι ο Kodu, τον οποίο χειρίζεται ο παίκτης από το πληκτρολόγιο να καταστρέψει την χελώνα εκτοξεύοντας πυραύλους προκειμένου να σώσει την φίλη του. Η χελώνα όταν αντιλαμβάνεται τον ήχο που κάνει ο Kodu τον ακολουθεί πολύ αργά και όταν τον χτυπήσει τον εκτινάσει μακρυά. Όταν η χελώνα σκοτωθεί τότε η ροζ Kodu πετάει μια καρδιά στον Kodu, την οποία και πρέπει να ακουμπήσει ο Kodu για να τερματιστεί με επιτυχία το παιχνίδι. Προκειμένου να κάνετε το παιχνίδι να φαίνεται ρεαλιστικό προγραμματείστε τα μήλα και της πέτρες έτσι ώστε όταν χτυπηθούν από κάποιο πύραυλο να εξαφανιστούν από τον κόσμο. Τα Δέντρα και το Κάστρο αποτελούν στοιχεία του περιβάλλοντος και δεν παρουσιάζουν κάποια συμπεριφορά. Ωστόσο δεν θα πρέπει να καταστρέφονται από τους πυραύλους του Kodu σε περίπτωση που χτυπηθούν από αυτούς.

Δημιουργία παιχνιδιού Υποβρύχια Περιπέτεια!
 * Δραστηριότητα 2η**

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


 * Συγκεντρωτικοί Πίνακες Ιδιοτήτων Αντικειμένων**
 * **__ Ιδιότητες Κίνησης __** ||  ||
 * [[image:K06_forwardSpeedMultiplier.PNG]] || Ταχύτητα κίνησης: ρυθμίζει την ταχύτητα με την οποία κινείται ένα αντικείμενο ||
 * [[image:K06_forwardAccelarationMultiplier.PNG]] || Επιτάχυνση κίνησης: ελέγχει τον ρυθμό μεταβολής της ταχύτητα κίνησης ||
 * [[image:K06_turningSpeedMultiplier.PNG]] || Ταχύτητα Περιστροφής: ταχύτητα με την οποία περιστρέφεται ένα αντικείμενο ||
 * [[image:K06_turningAccelarationMultiplier.PNG]] || Επιτάχυνση περιστροφής: ρυθμός μεταβολής της ταχύτητας περιστροφής ||
 * [[image:K06_immobile.PNG]] || Ακινησία: ελέγχει αν το αντικείμενο μπορεί να κινηθεί ή όχι. Εαν είναι ενεργοποιημένη το αντικείμενο είναι ακίνητο αλλά μπορεί να περιστραφεί. ||

Η ιδιότητα αυτή ρυθμίζει τον χρόνο μνήμης του Kodu. || διαθέτει τον αισθητήρα //Bλέπω (See)//, η ιδιότητα αυτή δείχνει ποιά αντικείμενα μπορεί ο Kodu να δει ή να ακούσει. || 1.εαν δημιουργήσουμε κλώνους από αυτό το αντικείμενο τότε οι κλώνοι διαθέτουν την ίδια συμπεριφορά με αυτό. 2.Μπορούμε να προγραμματίσουμε άλλα αντικείμενα να δημιουργούν το αντικείμενο αυτό. Περισσότερα για τους κλώνους θα δείτε στο κεφάλαιο 9. || ενεργοποιημένη αυτή η ιδιότητα, τα άλλα αντικείμενα μπορούν να ακούσουν το αντικείμενο. Ο παίκτης μόνο δεν το ακούει! ||
 * **__ Ιδιότητες Αλληλεπίδρασης Με Το Περιβάλλον __** ||  ||
 * [[image:K06_Friction.PNG]] || Τριβή: ελέγχει κατά πόσο ένα αντικείμενο γλιστράει πάνω στο έδαφος, στους τοίχους ή σε άλλα αντικείμενα ||
 * [[image:K06_Ghost.PNG]] || Φάντασμα: ελέγχει εαν το αντικείμενο μπορούν να το δουν,να το ακούσουν ή να πέσουν πάνω του άλλα αντικείμενα. Όταν είναι ενεργοποιημένη τότε το αντικείμενο μπορεί να δει και να ακούσει άλλα αντικείμενα αλλά δεν μπορεί να πέσει πάνω τους ||
 * [[image:K06_Bounciness.PNG]] || Αναπήδηση: καθορίζει κατά πόσο ένα αντικείμενο αναπηδά όταν συγκρουστεί με κάποιο άλλο αντικείμενο, με ένα τοίχο ή μετά την προσγείωση από ένα άλμα. ||
 * [[image:K06_invisible.PNG]] || Αόρατος: καθορίζει το αν ένα αντικείμενο φαίνεται στην οθόνη. Τα άλλα αντικείμενα εξακολουθούν όμως να βλέπουν και να ακούν το αντικείμενο που έχει ενεργοποιημένη αυτή την ιδιότητα ||
 * [[image:K06_stayAboveWater.PNG]] || Επιπλέω: όταν είναι ενεργοποιημένη αυτή η ιδιότητα τότε το αντικείμενο επιπλέει στο νερό,διαφορετικά βουλιάζει! ||
 * [[image:K06_Hearing.PNG]] || Ακοή: ελέγχει την απόσταση από την οποία ένα αντικείμενο μπορεί να ακούσει τα άλλα αντικείμενα. Δεν αλλάζει την ένταση του ήχου που παράγει το ίδιο το αντικείμενο ||
 * [[image:K06_closeByRange.PNG]] || Κοντά: Την ρυθμίζουμε όταν έχουμε προγραμματίσει τα αντικείμενα να διαθέτουν τους αισθητήρες //Ακούω (////Hear////) και Bλέπω (See////)// με το προσδιοριστικό //κοντά (////close// //by////).// Αντιπροσωπεύει το εύρος του προσδιοριστικού. Οι μονάδες είναι σε μέτρα. Ένα //πλακάκι (////tile////) εδάφους(ground////)// είναι μισό μέτρο. ||
 * [[image:K06_farAwayRange.PNG]] || Μακρυά: Την ρυθμίζουμε όταν έχουμε προγραμματίσει τα αντικείμενα να διαθέτουν τους αισθητήρες //Aκούω (////Hear////) και Bλέπω (See////)// με το προσδιοριστικό //μακρυά (////far// //away////).// Αντιπροσωπεύει το εύρος του προσδιοριστικού. Οι μονάδες είναι σε μέτρα. Ένα //πλακάκι (////tile////)// ||
 * [[image:K06_DebugLinesToBarriers.PNG]] || Γραμμές Αποσφαλμάτωσης Εμποδίων: όταν έχουμε προγραμματίσει ένα αντικείμενο να περιπλανάτε,να κάνει κύκλους, ή να απομακρύνεται από κάποιο άλλο αντικείμενο η ιδιότητα αυτή δείχει τυχόν εμπόδια που το εμποδίζουν. ||
 * [[image:K06_memoryLifeTime.PNG]] || Μνήμη : όταν ο Kodu δει ένα αντικείμενο, μπορεί να το "θυμάται" για λίγα δευτερόλεπτα.
 * [[image:K06_debugLinesOfSightAndSound.PNG]] || Γραμμές Αποσφαλμάτωσης όρασης και ήχου: όταν έχουμε προγραμματίσει τον Kodu να
 * [[image:K06_creatable.PNG]] || Κλώνος: κάθε αντικείμενο που έχει ενεργοποιημένη αυτή την ιδιότητα είναι ξεχωριστό για δυο λόγους.
 * [[image:K06_Mute.PNG]] || Βουβός: ενεργοποιεί οποιοδήποτε ήχο παράγει ένα αντικείμενο. Σημειώστε ότι ακόμη και αν είναι

Όσο πιο δυνατή είναι η κλωτσιά τόσο πιο μακρυά εκτοξεύεται το αντικείμενο! || και πάλι κάποιο άλλο! ||
 * **__ Ιδιότητες Μάχης __** ||  ||
 * [[image:K06_blipDamage.PNG]] || <span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; vertical-align: baseline;">Ζημιά που προκαλεί ένα Σφαιρίδιο: καθορίζει πόση απώλεια ενέργειας προκαλεί ένα Σφαιρίδιο όταν χτυπήσει ένα αντικείμενο. ||
 * [[image:K06_blipRange.PNG]] || <span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; vertical-align: baseline;">Εύρος Κίνησης Σφαιριδίου: Καθορίζει την απόσταση που μπορεί να διανύσει ένα Σφαιρίδιο πρωτού εξαφανιστεί αν δεν χτυπήσει κάποιο αντικείμενο. ||
 * [[image:K06_blipReloadTime.PNG]] || <span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; vertical-align: baseline;">Χρονικό διάστημα μεταξύ εκτοξεύσεων Σφαιριδίων:ρυθμίζει μετά από πόση ώρα μπορεί ο Kodu να ξαναρίξει ένα Σφαιρίδιο. ||
 * [[image:K06_blipsAtonce.PNG]] || Αριθμός Εκτοξευμένων Σφαιριδίων : ελέγχει πόσα Σφαιρίδια μπορούνε να ταξιδεύουν ταυτόχρονα στον αέρα, μέχρι ο Kodu να μπορεί να ξαναπυροβολήσει. ||
 * [[image:K06_BlipSpeed.PNG]] || Ταχύτητα Σφαιριδίου: καθορίζει την ταχύτητα του Σφαιριδίου που εκτοξεύει ένα αντικείμενο. ||
 * [[image:K06_missileRange.PNG]] || <span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; vertical-align: baseline;">Εύρος Κίνησης Πυραυλου: Καθορίζει την απόσταση που μπορεί να διανύσει ένας πύραυλος πρωτού εξαφανιστεί αν δεν χτυπήσει κάποιο αντικείμενο. ||
 * [[image:K06_missilesAtOnce.PNG]] || Αριθμός Εκτοξευμένων Πυραύλων : ελέγχει πόσοι πύραυλοι μπορούνε να ταξιδεύουν ταυτόχρονα στον αέρα, μέχρι ο Kodu να μπορεί να ξαναπυροβολήσει. ||
 * [[image:K06_missileDamage.PNG]] || <span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; vertical-align: baseline;">Ζημιά που προκαλεί ένας πύραυλος: καθορίζει πόση απώλεια ενέργειας προκαλεί ένας πύραυλος όταν χτυπήσει ένα αντικείμενο. ||
 * [[image:K06_missileSpeed.PNG]] || <span style="background-color: transparent; border-collapse: separate; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; margin: 0px; padding: 0px; vertical-align: baseline;">Ταχύτητα Πυραύλου: καθορίζει την ταχύτητα του πυραύλου που εκτοξεύει ένα αντικείμενο. ||
 * [[image:K06_missilereloadTime.PNG]] || <span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; vertical-align: baseline;">Χρονικό διάστημα μεταξύ εκτοξεύσεων πυραύλων:ρυθμίζει μετά από πόση ώρα μπορεί ο Kodu να ξαναρίξει έναν πύραυλο. ||
 * [[image:K06_kickStrength.PNG]] || Δύναμη Κλωτσιάς: ελέγχει το πόσο δυνατά ένα αντικείμενο κλωτσάει κάποιο άλλο.
 * [[image:K06_kickRate.PNG]] || Ρυθμός Κλωτσιών: αφορά το χρονικό διάστημα που ένα αντικείμενο μπορεί να κλωτσίσει

χτυπάει κάπου(αντικείμενο,τοίχος) ή δέχεται μία βολή(πύραυλος,Σφαιρίδιο). || όταν εκτελεί την ενέργεια Λάμπω (Glow). || όταν εκέινο εκτελεί την ενέργεια Λάμπω (Glow). Όσο μεγαλύτερη τιμή έχει τόσο πιο έντονο είναι το φως. ||
 * __** Καλαισθητικές ιδιότητες **__ ||  ||
 * [[image:K06_sizeScale.PNG]] || Μέγεθος: όπως φανερώνει και το όνομα της ιδιότητας καθορίζει το μέγεθος ενός αντικειμένου. ||
 * [[image:K06_MissileSmoke.PNG]] || Εφέ Καπνού: α φορά το αν οι πύραυλοι αφήνουν ίχνος καπνού στο πέρασμά τους. ||
 * [[image:K06_shieldEffects.PNG]] || Εφέ Ασπίδας: ελέγχει αν θα εμφανίζεται η ασπίδα ενός αντικειμένου κάθε φορά που το αντικείμενο
 * [[image:K06_glowSelflighting.PNG]] || Φωτεινότητα: ρυθμίζει την ένταση του φωτός που ένα αντικείμενο εκπέμπει! ||
 * [[image:K06_glowLightStrength.PNG]] || Ένταση Ενέργειας Λάμπω: επηρεάζει την ένταση της λάμψης που παράγει ένα αντικείμενο
 * [[image:K06_glowStrength.PNG]] || Εκπομπή Φωτός: προσδίδει σε ένα αντικείμενο την ικανότητα να ρίχνει φώς πάνω σε άλλα αντικείμενα

που μπορεί να δεχτεί ένα αντικείμενο. || που δείχνει την ενέργεια που του έχει απομείνει. ||
 * **__ Ιδιότητες Ζωής __** ||  ||
 * [[image:K06_invulnerable.PNG]] || Άτρωτος: κάθε αντικείμενο που διαθέτει την ιδιότητα αυτή δεν μπορεί να καταστραφεί. ||
 * [[image:K06_maxHitPoints.PNG]] || Ενέργεια: η ιδιότητα αυτή καθορίζει τον αριθμό των χτυπημάτων (πύραυλοι,Σφαιρίδια)
 * [[image:K06_showhitPoints.PNG]] || Εμφάνιση Ενέργειας: όταν είναι ενεργοποιημένη μία μικρή μπάρα εμφανίζεται πάνω από το αντικείμενο

= =