Ομάδα+8η

Σπανού Μαρία media type="skypestatus" key="marspanou_uth" ARG0="balloon" height="52" width="119"email : marspanou@gmail.com, twitter : [|maria_spanou]

Χαλκιάς Κωνσταντίνος media type="skypestatus" key="constantine.halkias" ARG0="balloon" height="42" width="105" email: constantine.uot@gmail.com, twitter : [|Kwstis_uth]

include component="comments" page="Ομάδα 8η" limit="10"

//__ ΠΡΟΤΑΣΗ ΠΕΡΙΕΧΟΜΕΝΟΥ ΒΙΒΛΙΟΥ __//
(γίνεται αναφορά στο πλήθος των προγραμμάτων που χρησιμοποιούμε καθημερινά χωρίς να το ξέρουμε και στην χρησιμότητα αυτών)
 * 1) Κάθε αρχή και ... εύκολη!**
 * 1.1** Σκοπός του βιβλίου
 * 1.2** Σχετικά με τον προγραμματισμό
 * 1.2.1** Γιατί να μάθω προγραμματισμό?
 * 1.2.2** Εδώ πρόγραμμα,εκεί πρόγραμμα που είναι το πρόγραμμα?
 * 1.3** Kodu και προγραμματισμός

(έχοντας πάρει το παιδί μία πρώτη γεύση μέσω των παιχνιδιών που είδε παραπάνω εξηγούμε ποια είναι τα συστατικά στοιχεία ενός προγράμματος π.χ. χαρακτήρας Kodu,αντικείμενα,περιβάλλον).
 * 2) Καλως ήλθες στον κόσμο σου! Στον κόσμο του Kodu!**
 * 1.1** Εύρεση Kodu στο Διαδίκτυο και εγκατάσταση
 * 1.2** Configure Kodu Game Lab
 * 1.3** Αντιπροσωπευτικά προγράμματα στο Kodu
 * 1.4** Περιγραφή του κόσμου του Kodu


 * 3) Εξερεύνηση του προγράμματος Kodu**
 * 3.1** Εισαγωγή στο μενού πλοήγησης
 * 3.2** Χρήση βοηθητικών tutorials
 * 3.3** Πρώτη γνωριμία με τα εργαλεία του Kodu


 * 4) Δημιούργησε τον κόσμο σου!**
 * 4.1** Έδαφος (Ground Brush : Paint, add or delete ground)
 * 4.2** Βουνά και λόφοι (Up/Down : create hills or valleys)
 * 4.3** Πεδιάδες και επίπεδα (Flatten : Make ground smooth or level)
 * 4.4** Επεξεργασία επιφάνειας (Roughen : Create Spikey or hill ground)
 * 4.5** Εργαλείο νερού (Water tool : add,remove,or tint water)

Εναλλακτικός τίτλος:Do στο Kodu! - Δίνοντας ζωή στα αντικείμενα και στους χαρακτήρες μας
 * 5) Το παιχνίδι.... α λα προγραμματιστικά!**
 * 5.1** Αντικείμενα και χαρακτήρες Kodu(εισαγωγή και επεξεργασία)
 * 5.2** Κινήσεις και ενέργειες(γνωριμία με τις εντολές)
 * 5.3** Kodu και σύνταξη εντολών
 * 5.4** Κοιτάζοντας “πίσω” από τα παιχνίδια(παρατίθεται ο κώδικας πολύ απλών παιχνιδιών και γίνεται η επεξήγησή του )

(να δοθεί ιδιαίτερη σημασία ποιόν αφορά η συνθήκη και η “κατάργηση” της γραμμικότητας στην εκτέλεση του προγράμματος)
 * 6) Όταν, ίσως , μπορεί...χμμμ....**
 * 6.1** Δομές ελέγχου(συνθήκες) - Από την καθημερινότητα στον προγραμματισμό
 * 6.2** When-do
 * 6.3** Αλληλεπίδραση χαρακτήρων με i)χρήστη ii)χαρακτήρες iii)αντικείμενα
 * 6.4** Παραδείγματα - Μελέτη περίπτωσης


 * 7) Συγγνώμη...Επαναλάβετε παρακαλώ!**
 * 7.1** Εισαγωγή στην Επανάληψη
 * 7.2** Απλή Επανάληψη
 * 7.3** “Φωλιασμένες” Επαναλήψεις
 * 7.4** Συνδυασμός επαναλήψεων και δομών ελέγχου
 * 7.5** Ανακεφαλαίωση


 * 8) Πρόγραμμα χωρίς μεταβλητή προκοπή δεν κάνει!!!**
 * 8.1** Η μεταβλητή και η σημασία της στα προγράμματα
 * 8.2** Μεταβλητή vs Αντικείμενα και χαρακτήρες
 * 8.3** Ζωές,Σκορ,Χρόνος,Ενέργεια
 * 8.4** Παραδείγματα


 * 9) Από την φαντασία στην υλοποίηση**
 * 9.1** Η λογική περιγραφή του προγράμματος - παιχνιδιού
 * 9.2** Υλοποίηση βήμα-βήμα
 * 9.3** Κάν’το αλλιώς
 * 9.4** Έλεγχος για λογικά σφάλματα


 * 10) Προχωρημένα θέματα Kodu**
 * 10.1** Ήχος και περιβάλλον
 * 10.2** Κατασκευή κλώνων (Creatables)
 * 10.3** Αλλαγή συμπεριφοράς (Pages)


 * 11) Ώρα για παιχνίδι**


 * 12) Τελικά είμαστε μεγάλη οικογένεια!!**
 * 12.1** Γνώρισε την κοινότητα Kodu
 * 12.2** Επίλογος


 * __Χρήση αισθητήρων/ενεργειών σε κάθε κεφάλαιο__**


 * __Αισθητήρες__**
 * ΚΕΦΑΛΑΙΟ 5 || ΚΕΦΑΛΑΙΟ 6 || ΚΕΦΑΛΑΙΟ 7 || ΚΕΦΑΛΑΙΟ 8 || ΚΕΦΑΛΑΙΟ 9 ||
 * Πληκτρολόγιο ||  See  ||  On land  ||  Scored  ||  -  ||
 * Ποντίκι ||  Hear  ||  On water  ||  Timer  || ||
 * Gamepad ||  Bump  || ||  health  || ||
 * Always ||  Shot hit  || || || ||
 * || Got  || || || ||
 * || Held by  || || || ||


 * __Ενέργειες__**
 * ΚΕΦΑΛΑΙΟ 5 ||  ΚΕΦΑΛΑΙΟ 6  || ΚΕΦΑΛΑΙΟ 7 ||  ΚΕΦΑΛΑΙΟ 8  || ΚΕΦΑΛΑΙΟ 9 ||
 * Turn ||  Eat  ||  Express  ||  Substract  ||  Create  ||
 * Move on path ||  Vanish  ||  Say  ||  Add  ||  switch  ||
 * Jumb ||  Launch  ||  Color  ||  End  ||  boom  ||
 * shoot ||  Grab  ||  Camera  ||  Win  ||  Stun  ||
 * || || Play  ||  Damage  ||  Knockout  ||
 * || || quiet  ||  Reset  || ||
 * || || || score  || ||


 * το anything χρησιμοποιείται στο κεφάλαιο 6 για το bump
 * το me θα χρησιμοποιηθεί στο κεφάλαιο 6 στο shot hit προσδιοριστικό της ενέργειας color**
 * το not αναφέρεται στο κεφάλαιο 8

Τα κεφάλαια που χρησιμοποιούν τα παραπάνω προσδιοριστικά (anything,me,not) καλό θα ήταν να βάλουν και μια σύντομη περιγραφή τους σε ένα πλαίσιο στα αντίστοιχα παραδείγματα.

**__Πρόταση τρόπου ανάπτυξης παραδειγμάτων (παράδειγμα με αισθητήρα)__**
6.3.1 Ο αισθητήρας: Βλέπω( see ) Ο αισθητήρας //Βλέπω (// // see //// ) //, επιτρέπει στα αντικείμενα να αντιδρούν στην παρουσία άλλων αντικειμένων στο κόσμο των παιχνιδιών μας. Με απλά λόγια αποτελεί τα μάτια των πρωταγωνιστών μας που πλέον μπορούν να αναλάβουν δράση αν «δουν» ένα φίλο τους, ένα νόμισμα ή κάποιον εχθρό. Θα μπορούσαμε λοιπόν να προγραμματίσουμε ένα υποβρύχιο έτσι ώστε όταν //βλέπει// τον Kodu να εκτοξεύει πυραύλους εναντίον του, ή να προγραμματίσουμε έναν μηχανάκια-εχθρό ώστε όταν //δει// τον Kodu να προσπαθεί να τον πλησιάσει για να τον εξολοθρεύσει. Ο αισθητήρας //Βλέπω (// // see //// ) // πάντα συνοδεύεται με προσδιοριστικό το στοιχείο που θέλουμε να αναγνωρίσει ο χαρακτήρας μας. Ένα παράδειγμα εντολής με χρήση του αισθητήρα:

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

Όταν [βλέπω] [τον Kodu ] τότε [κινούμαι] [προς αυτόν]

[ Tip : παρατηρήστε ότι το προσδιοριστικό ενέργειας //προς (// // towards //// ) // εξαρτάται από το αντικείμενο που θα χρησιμοποιήσουμε στον αισθητήρα της συγκεκριμένης συμπεριφοράς]

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

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



Ανοίξτε το παιχνίδι Air Fight και ας ξεκινήσουμε βήμα βήμα τον προγραμματισμό των αντικειμένων προκειμένου να δημιουργήσουμε το παιχνίδι __ Air __ __ fight __

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



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

Είναι το παράδειγμά μας ολοκληρωμένο; Αν προγραμματίσουμε τον αισθητήρα //βλέπω (// // see //// ) // με προσδιοριστικό το αντικείμενο //τζετ (// // jet //// ), // τότε κάθε μαύρο τζετ θα επιδεικνύει την ίδια συμπεριφορά όταν δει και όλα τα υπόλοιπα τζετ είτε μαύρα είτε πράσινα είτε κόκκινα! θα αρχίσει να τα ακολουθεί ανεξαρτήτως χρώματος και θα πυροβολεί οποιοδήποτε είναι κοντά του! Μήπως θα έπρεπε να προσθέσουμε ένα επιπλέον προσδιοριστικό στον αισθητήρα //βλέπω (// // see //// ) //, για παράδειγμα το χρώμα; Δεν επιθυμούμε τα μαύρα τζετ να αντιδρούν μόνο όταν βλέπουν το **πράσινο** τζετ; Βελτιώστε τις εντολές σας όπως φαίνεται στο παρακάτω σχήμα: **ΌΤΑΝ**[δω][ πράσινο] [τζετ ]**ΤΟΤΕ** [κινούμαι][προς αυτό]. **ΌΤΑΝ**[δω][ πράσινο] [τζετ ]**ΤΟΤΕ** [εκτοξεύω][πυραύλους].



Αποθηκεύστε τις αλλαγές και τρέξτε το πρόγραμμα.



[Πονηρή ερώτηση: Πως εξασφαλίζουμε ότι οι πύραυλοι κατευθύνονται προς το στόχο τους; Έχει σημασία η σειρά των εντολών μας;]

Το Kodu μας προσφέρει μία πληθώρα προσδιοριστικών που μπορούμε να χρησιμοποιήσουμε σε συνδυασμό με τον αισθητήρα //βλέπω(// // see //// ) //. Μπορούμε να ορίσουμε ως προσδιοριστικό οποιοδήποτε αντικείμενο του κόσμου μας, οποιοδήποτε χρώμα (δηλαδή όταν βλέπει το αντικείμενό μας κόκκινο μπορεί να κινείται πιο αργά!), οποιαδήποτε έκφραση άλλου αντικειμένου (όταν βλέπει π.χ. ένα στεναχωρημένο αντικείμενο μπορεί να το εξολοθρεύει!). Στην επιλογή επιλογές ( options ) της πρώτης πίτας προσδιοριστικών, εμφανίζονται νέα προσδιοριστικά που έχουν να κάνουν με τη θέση του αντικειμένου σε σχέση με τα άλλα αντικείμενα του κόσμου. Έτσι αν επιθυμούμε ο kodu να ενεργεί όταν βλέπει κάποια αντικείμενα που βρίσκονται σε μακρινή θέση, μπορούμε να χρησιμοποιήσουμε το προσδιοριστικό μακρυά( far away ).

Tip : το πόσο μακριά «βλέπει» το αντικείμενό σας, μπορείτε να το προσδιορίσετε από την ιδιότητα…

Συνοψίζω τα στοιχεία που πρέπει να έχει η περιγραφή: Α) ποια είναι η δουλειά του αισθητήρα, παραδείγματα χρήσης, γενική περιγραφή προσδιοριστικού Β) μια παραδειγματική εντολή Γ) ρήματα συμπεριφορών Δ) παράδειγμα αξιοποίησης Ε) μεγαλύτερη ανάλυση προσδιοριστικών με λεκτικά παραδείγματα