You are on page 1of 49

Σεμινάριο προγραμματισμού

στο περιβάλλον Kodu


KODU: ΟΠΤΙΚΟΠΟΙΗΜΕΝΗ ΓΛΩΣΣΑ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΟΥΣ
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΓΙΑ ΤΗΝ ΠΑΡΑΓΩΓΗ ΠΑΙΧΝΙΔΙΩΝ

ΕΙΣΗΓΗΤΗΣ: ΔΗΜΗΤΡΗΣ ΦΩΤΙΑΔΗΣ (ΠΕ19)


ΥΛΗ ΣΕΜΙΝΑΡΙΟΥ ΒΑΣΙΣΜΕΝΗ ΣΤΟ:
http://pdkap.sch.gr/praktika2011/Workshops/W1.pdf
Τι είναι το Kodu
2
 Είναι μία «οπτική» γλώσσα προγραμματισμού για την παραγωγή
παιχνιδιών.
 Σχεδιάστηκε με σκοπό να είναι εύχρηστη και προσβάσιμη από
παιδιά και να μπορούν να τη χρησιμοποιούν όλοι.
 Περιλαμβάνει εύκολα σε χρήση εργαλεία για τη δημιουργία
τρισδιάστατων κόσμων, τον έλεγχο των φωτισμών και της κάμερας.
 Ο προγραμματισμός με το Kodu:
 Επιλογή των κατάλληλων οπτικών αντικειμένων που θα χρησιμοποιηθούν
 σε συγκεκριμένες συνθήκες και
 σε συγκεκριμένες καταστάσεις.
 Είναι ένα πολυδιάστατο εργαλείο για την παραγωγή αφήγησης και
εξιστόρησης ιστοριών (storytelling) – προσελκύοντας τους χρήστες
στο να δημιουργήσουν τα δικά τους σενάρια.
 To Kodu προβάλλει τη δημιουργική πλευρά του προγραμματισμού.
Τι μπορεί να διδάξει το Kodu
3

 To Kodu παρουσιάζει τη
 λογική αλληλουχία
 και τη διερεύνηση προβλημάτων που διέπουν τον προγραμματισμό

δίχως περίπλοκη σύνταξη.


 Εισάγει συνθήκες και διαδοχές.
 Είναι αντικειμενοστρεφές.
 Μπορούμε να κατασκευάσουμε έναν πραγματικό κόσμο
 Έτσι οι χρήστες αναπτύσσουν τις λεγόμενες δεξιότητες του 21ου αιώνα.
 Καλούνται να αναλύσουν ένα πρόβλημα εκ βάθρων.
 Να δώσουν μια λύση – μια προσέγγιση που μπορεί να απαντά σε όλα τα
ακαδημαϊκά θέματα, στην εργασία αλλά και στις διαπροσωπικές σχέσεις.
 Οι μαθητές με το Kodu μπορούν να:
 καλλιεργήσουν συνεργατικούς δεσμούς,
 να κατανοήσουν τη λογική σειρά των πραγμάτων,
 να αναπτύξουν τη φαντασία τους, δίχως να εστιάζουν μόνο στον
προγραμματισμό.
Ποιος μπορεί να χρησιμοποιήσει το Kodu
4

O καθένας!
Κάθε εκπαιδευτικός, ανεξαρτήτως προτέρας ή μη
προγραμματιστικής γνώσης, μπορεί να το διδάξει.
Οι ηλικίες από 8 έως... 88.
 Στο Δημοτικό από την Δ (και ίσως και από την Γ) τάξη.
 Στο Γυμνάσιο σε όλες τις τάξεις.
 Ακόμα και στο Νέο Λύκειο, στα πλαίσια του ερευνητικού
πρότζεκτ.
Πώς ξεκινάμε
5

Κατεβάζουμε το Kodu δωρεάν από το:


 http://fuse.microsoft.com/project/kodu.aspx
Μπορούμε να ξεκινήσουμε παίζοντας τα παιχνίδια
που προϋπάρχουν στο Kodu – το Xevon 07 είναι ένα
από τα πιο δημοφιλή παιχνίδια στον κόσμο του
Kodu.
Μπορούμε είτε να χρησιμοποιήσουμε το ποντίκι, είτε
το Xbox Controller, για να παίξουμε το Kodu.
Ελάχιστες απαιτήσεις συστήματος
6

Υποστηριζόμενα ΛΣ:
 Windows 7
 Windows Vista
 Windows XP
Κάρτα γραφικών που υποστηρίζει (τουλάχιστον) το
DirectX 9.0c και το Shader Model 2.0.
Προαπαιτούμενες πλατφόρμες λογισμικού (αν δεν
υπάρχουν, εγκαθίστανται κατά την εγκατάσταση του
Kodu):
 .NET Framework 3.5 (τουλάχιστον)
 XNA Framework 3.1 Redistributable
Μπορώ να το τρέξω στο εργαστήριό μου;
7

Εξαρτάται...
 Στα παλιά εργαστήρια με Windows 2000 professional
  ΟΧΙ
 Αλλά ακόμη και σε νεώτερα μηχανήματα με Windows XP,
 Αν η κάρτα γραφικών είναι παλιά (δεν υποστηρίζει DirectX 9.0)
 OXI
 Μνήμη... Χμμ...
 Καλό θα ήταν να υπάρχει τουλάχιστον 1GB.
1ο Μάθημα
8

ΜΑΘΗΜΑ ΓΕΩΓΡΑΦΙΑΣ
Στόχοι παιχνιδιού
9

Να μάθουμε τα αρχικά βήματα ώστε να μπορέσουμε


να ξεκινήσουμε με το kodu.
Να εξοικειωθούμε με το πληκτρολόγιο και το
ποντίκι.
Να χρησιμοποιούμε τα εργαλεία για τη:
 Δημιουργία εδάφους στον μικρόκοσμό μας.
 Δημιουργία λόφων, κοιλάδων, ποταμιών και λιμνών.
Να εισάγουμε χαρακτήρες και αντικείμενα.
Να προγραμματίζουμε τους χαρακτήρες μας.
Να αποθηκεύουμε το παιχνίδι μας.
Σενάριο
10

Πρώτα θα δημιουργήσουμε έδαφος.


Μετά θα διαμορφώσουμε
 Λόφους και βουνά,
 Κοιλάδες,
 Λίμνες και ποταμούς.
Θα εισαγάγουμε ένα χαρακτήρα Kodu ο οποίος:
 Θα κινείται από τον παίκτη.
 Θα μαζεύει 5 πέτρες.
 Για κάθε πέτρα που μαζεύει θα κερδίζει 1 πόντο.
Το παιχνίδι θα τελειώνει επιτυχώς όταν ο Kodu έχει
μαζέψει όλες τις πέτρες.
Ας τα δούμε στην πράξη...
11
Βήματα του 1ου μαθήματος (1/4)
12

1. Από το Home Menu επιλέγουμε New empty world.


2. Στην κατάσταση Move Camera (με σήμα το ):
 Κλικ πατημένο και σέρνουμε το ποντίκι  Μετακινούμε το έδαφος.
 Δεξί κλικ πατημένο και σέρνουμε το ποντίκι  Αλλαγή της γωνίας της κάμερας
 Τράβηγμα της ροδέλας  Zoom out. Σπρώξιμο της ροδέλας  Zoom in.
3. Ground brush: Προσθήκη και διαγραφή εδάφους.
 Επιλογή υλικού.
 Επιλογή βούρτσας.
 Προσθήκη νέου υλικού με το Ctrl.
 Διαγραφή υλικού.
 Αλλαγή υλικού με διαγραφή του υπάρχοντος και προσθήκη νέου.
 Αλλαγή υπάρχοντος υλικού χωρίς προσθήκη νέου με το Shift.
 Εύκολη επιλογή υπάρχοντος υλικού με το Alt.
 Αλλαγή του μεγέθους της βούρτσας.
4. Εργαλείο αναίρεσης και ακύρωσης της αναίρεσης.
5. Up/Down: Δημιουργία λόφων και κοιλάδων.
 6 είδη βουρτσών.
 Δημιουργία βουνών με τη soft round brush.
6. Flatten: Δημιουργία λείων και επίπεδων επιφανειών.
 3 είδη βουρτσών.
 Δημιουργία επίπεδου εδάφους στους πρόποδες των βουνών με την hard round brush.
Βήματα του 1ου μαθήματος (2/4)
13

7. Δημιουργία λίμνης:
 Επιλογή υλικού εδάφους #21.
 Επιλογή βούρτσας υλικών hard round brush.
 Από το εργαλείο Flatten επιλέγουμε hard round brush και με δεξί
κλικ δημιουργούμε πτυχώσεις στο λόφο γύρω από τη λίμνη και
κάνουμε πιο επίπεδη την επιφάνεια γύρω από τη λίμνη.
 Βυθίζουμε την επιφάνεια της λίμνης ως εξής:
 Από το Up/Down εργαλείο, επιλέγουμε την magic brush και
επιλέγουμε την επιφάνεια της λίμνης.
 Με δεξί κλικ βυθίζουμε την επιλεγμένη επιφάνεια της λίμνης.
 Γεμίζουμε τη λίμνη με νερό:
 Με το εργαλείο Water Tool επιλέγουμε τύπο νερού.
 Με αριστερό κλικ στη βυθισμένη επιφάνεια της λίμνης τη γεμίζουμε
με νερό.
 Αν μας ξεχειλίσει το νερό, με δεξί κλικ αφαιρούμε νερό.
Βήματα του 1ου μαθήματος (3/4)
14

8. Προσθήκη χαρακτήρων/αντικειμένων:
 Ενός kodu.

 Ενός δένδρου.

 5 πετρών.

9. Προγραμματίζουμε το kodu:
1. When keyboard arrows – Do move quickly
2. When bump rock – Do eat it
3. When got rock – Do score 1 point
4. When see not rock – win
Βήματα του 1ου μαθήματος (4/4)
15

10. Αποθηκεύουμε τις αλλαγές μας:


1. Home menu.
2. Save my world.
3. Name: My first game!
4. Description: This is my first kodu game!
5. Προαιρετικά, προσθήκη ετικετών (tags): Action Adventure.

11. Διαμοιραζόμαστε το παιχνίδι μας:


1. Home menu.
2. Load world.
3. Επιλέγουμε το παιχνίδι μας  Πατάμε Export.
4. Εναλλακτικά διαμοιραζόμαστε το παιχνίδι μας στο
διαδίκτυο με την επιλογή Share.
2ο Μάθημα
16

ΜΑΘΗΜΑΤΙΚΑ
Περιγραφή παιχνιδιού
17

Επίλυση ενός μαθηματικού προβλήματος με


 Κλάσματα
 Ποσοστά
Σκοπός: μαζεύοντας τον κατάλληλο αριθμό
αντικειμένων, θα μπορέσει να ελευθερωθεί ο
μοτοσυκλετιστής (Cycle). Ο παίκτης θα πρέπει να
μαζέψει:
 ((1/5 + 1/10) x 10) αστέρια
 (25% του 8) καρδιές
Στόχοι παιχνιδιού
18

Να χρησιμοποιούμε έναν έτοιμο κόσμο και να τον


τροποποιούμε για να φτιάξουμε ένα νέο παιχνίδι.
Να αλλάζουμε τις ρυθμίσεις του κόσμου.
Να χρησιμοποιούμε το εργαλείο διαγραφής (από την
μπάρα εργαλείων).
Να εισάγουμε χαρακτήρες και να τους
προγραμματίζουμε.
Να μάθουμε βασικές εντολές προγραμματισμού.
Να εισάγουμε διαφορετικά σκορ.
Να μάθουμε την έννοια και τη χρήση του
Παραγόμενου αντικειμένου (Creatable).
Σενάριο
19
 Πρέπει να μαζέψουμε το σωστό αριθμό αντικειμένων:
 (1/5 + 1/10) x 10 = 3 αστέρια
 (25% του 8) = 2 καρδιές
 Για κάθε:
 Αστέρι – παίρνουμε 2 πόντους.
 Καρδιά – παίρνουμε 1 πόντους.
 Σύνολο πόντων που πρέπει να μαζέψουμε:
 3 x 2 + 2 x 1 = 8.

 Εμφανίζεται το μήνυμα πού βρίσκεται κρυμμένος ο μοτοσυκλετιστής.


 Εμφανίζεται ο μοτοσυκλετιστής δίπλα από το μαύρο κάστρο.
 Το παιχνίδι τελειώνει με νίκη του παίκτη μόλις πέσει πάνω στο
μοτοσυκλετιστή.
 Αν μαζέψουμε πάνω από 8 πόντους, το παιχνίδι τελειώνει με ήττα του
παίκτη.
 Αν μαζέψουμε πάνω από
 3 αστέρια, ή
 2 καρδιές
το παιχνίδι τελειώνει με ήττα του παίκτη.
Ας τα δούμε στην πράξη...
20
Βήματα του 2ου μαθήματος (1/3)
21
1. Επιλέγουμε το Idyll v07 .
2. Το αποθηκεύουμε αμέσως με το όνομα Mathematika.
 Description: Get (1/5 + 1/10) * 10 STARS, 25% of 8 HEARTS and find out where your friend CYCLE is prisoner in
order to free him!
 Tag: Action Adventure Strategy Lessons
3. Κίνηση της κάμερας ώστε να φαίνεται καλά ο αρχικός κόσμος.
4. Διαγράφουμε όλα τα αντικείμενα με το Delete Tool.
5. Διαγράφουμε το μονοπάτι.
6. Εισαγωγή αντικειμένων:
 2 κάστρα
 2 σύννεφα
 2 δένδρα
 1 kodu
7. Αλλαγή ρυθμίσεων για τον κόσμο μας (Change world settings)
 Camera mode  Fixed Offset
 Sky  8
 Start Game With:  World Description
8. Αλλαγή των χρωμάτων των κάστρων (μαύρο, πράσινο).
9. Εισάγουμε ένα-δυό παραπάνω αντικείμενα απ’ ό,τι πρέπει για το κάθε είδος που μετράει στο
σκορ:
 Εισάγουμε 1 αστέρι.
 Αλλάζουμε το χρώμα του αστεριού σε μπλε και το αντιγράφουμε 3 φορές (δεξί κλικ στο αστέρι  Copy, δεξί κλικ
στο χώρο του παιχνιδιού  Paste(Star)).
 Εισάγουμε 1 καρδιά.
 Αλλάζουμε το χρώμα της πρώτης καρδιάς σε μωβ και την αντιγράφουμε 2 φορές.
Βήματα του 2ου μαθήματος (2/3)
22

10. Χρησιμοποιούμε 3 διαφορετικά σκορ:


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

11. Προγραμματισμός του Kodu:


1. When keyboard arrows – Do move quickly
2. When bump star – Do eat it
3. When got star – Do score 2 points red
4. -- Do score 1 point blue
5. When scored above 3 points blue – Do say “Wrong! You should get 3 stars and 2
hearts!” (Full Screen) once
6. -- Do end
7. Επαναλαμβάνουμε τον ίδιο κώδικα και τον προσαρμόζουμε για τις καρδιές
(μπορούμε να φάμε μέχρι 2 καρδιές).
8. When scored 5 points 3 points red – Do say “Well done! The Cycle was hidden in
the castle and is now being released. Go get it!”
9. When bump cycle – Do win
Βήματα του 2ου μαθήματος (3/3)
23

12. Εισάγουμε τον Cycle στον κόσμο μας.


13. Κάνουμε τον Cycle παραγόμενο (Creatable): δεξί
κλικ πάνω του  Change Settings  κλικ στο
Creatable.
14. Προγραμματισμός του μαύρου κάστρου:
1. When scored 3 points blue – Do
2. When scored 2 points purple – Do create (Creatables
) Cycle 1 once
15. Προγραμματισμός του Cycle 1:
1. When see kodu – Do express flowers
2. -- Do say “Thank you!!”
3ο Μάθημα
24

ΜΑΘΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ
Στόχοι παιχνιδιού
25

Να αναπτύξουμε την αλγοριθμική σκέψη των


μαθητών.
Να δημιουργούμε μονοπάτια ή διαδρομές (paths).
Να δημιουργούμε Παραγόμενα αντικείμενα
(Creatables).
Να αλλάζουμε τις ρυθμίσεις του κόσμου, των
αντικειμένων και των χαρακτήρων.
Να χρησιμοποιούμε την υγεία των χαρακτήρων.
Να εισάγουμε χρονόμετρο.
Να δημιουργούμε σελίδες για την καλύτερη
οργάνωση των εντολών μας.
Σενάριο
26
 Θα εισαγάγουμε έναν χαρακτήρα, π.χ., τη χελώνα, και θα την
προγραμματίσουμε να παίρνει τα πιάτα (pucks) και να κερδίζει πόντους.
 Η χελώνα θα αποφεύγει τους δίσκους (saucers), γιατί της μειώνουν την
υγεία και τερματίζει κάποια στιγμή το παιχνίδι.
 Θα κινείται με τα βελάκια γρήγορα μέσα στο περιβάλλον του παιχνιδιού.
 Θα εισαγάγουμε
 σκορ
 συγκεκριμένο χρονικό διάστημα
 και μέγιστο αριθμό σκορ που πρέπει να πετύχει μέσα σε αυτό το διάστημα.
Έτσι θα δυσκολέψουμε το παιχνίδι.
 Θα εισαγάγουμε ένα αντικείμενο (pushpad) που θα παράγει πιατάκια και
δίσκους.
 Τα πιατάκια και οι δίσκοι θα πρέπει να είναι παραγόμενα ή δημιουργήσιμα (creatables).
 Θα δημιουργήσουμε ένα μονοπάτι (path) στο οποίο θα κινούνται τα
πιατάκια και οι δίσκοι.
Ας τα δούμε στην πράξη...
27
Βήματα του 3ου μαθήματος (1/5)
28
1. Επιλέγουμε το Shooting Fish.
2. Το αποθηκεύουμε αμέσως με το όνομα Paradeigma Pliroforikis.
 Description: As paixoyme ena paixnidi!
 Tag: Action Adventure Shooter
3. Διαγράφουμε όλα τα αντικείμενα με το Delete Tool.
4. Διαγράφουμε το μονοπάτι.
5. Αλλαγή ρυθμίσεων για τον κόσμο μας (Change World Settings)
 Camera mode  Fixed Offset
 Sky  3
 Start Game With:  Description with Countdown
6. Εισαγωγή αντικειμένων:
 1 χελώνα (turtle)
 1 πιατάκι (puck)
 1 δίσκο (saucer)
 1 pushpad
7. Εισάγουμε ένα μονοπάτι πάνω στο οποίο θα κινούνται τα αντικείμενα.
 Δεξί κλικ πάνω σε έναν κόμβο του μονοπατιού  Add more nodes/Change Height/Change Type/Delete
8. Ορίζουμε το πιατάκι και το δίσκο ως παραγόμενα αντικείμενα (creatable):
 Επιλέγουμε το Object Tool.
 Δεξί κλικ στο αντικείμενο που θέλουμε να μετατρέψουμε σε παραγόμενο  Change Settings  Ενεργοποίηση της
επιλογής Creatable.
Βήματα του 3ου μαθήματος (2/5)
29

9. Θέλουμε τα πιατάκια να κινούνται αργά και να μην έχουμε μεγάλο αριθμό


παραγόμενων αντικειμένων:
 Δεξί κλικ στο πιατάκι  Change Settings  Forward Speed Multiplier  0,2.
 Δεξί κλικ στο πιατάκι  Change Settings  Forward Acceleration Multiplier  0,2.
 Δεξί κλικ στο πιατάκι  Change Settings  Max Created  5.
10. Μικραίνουμε το μέγεθός τους
 Δεξί κλικ στο πιατάκι  Change Settings  Size Scale  0,5.

11. Κάνουμε τα ίδια για τους δίσκους, με τις εξής διαφορές:


 Forward Speed Multiplier  0,1.
 Size Scale  1.

12. Αλλάζουμε τα ύψη των αντικειμένων (δεξί κλικ στο αντικείμενο  Change Height):
 Για το puck  0,10
 Για το saucer  1,02

13. Θέλουμε το pushpad να παράγει κάθε 1sec ένα puck και κάθε 2sec ένα saucer:
 When timer 1 second – Do create CreatablesPuck 1
 When timer 2 seconds – Do create CreatablesSaucer 1

14. Τα pucks και τα saucers θέλουμε να κινούνται πάνω στο μονοπάτι. Προσθέτουμε
στον κώδικα του Puck 1 και του Saucer 1 την εξής γραμμή.
 -- Do move on path
Βήματα του 3ου μαθήματος (3/5)
30

15. Αλλάζουμε τις ρυθμίσεις της χελώνας (Δεξί κλικ στη χελώνα 
Change Settings)
 Forward Speed Multiplier  5
 Forward Acceleration Multiplier  10
 Turning Speed Multiplier  5
 Turning Acceleration Multiplier  5
 Show Hit Points (για να εμφανίζεται πάνω από το κεφάλι της χελώνας μια μικρή
μπάρα που μας δείχνει πόση υγεία έχει απομείνει στη χελώνα)
 (Ο αριθμός της αρχικής υγείας που έχει η χελώνα ορίζεται με τη ρύθμιση Max Hit
Points – εν προκειμένω 50.)
16. Προγραμματίζουμε τη χελώνα να:
 Κινείται πολύ γρήγορα με τα βελάκια,
 Τρώει pucks,
 Αποφεύγει saucers.

ως εξής:
1. When keyboard Arrows – Do move quickly quickly quickly
2. When bump puck – Do eat it
Βήματα του 3ου μαθήματος (4/5)
31

17. Όταν η χελώνα φάει το puck, θέλουμε να κερδίζει 10 πόντους και, ανάλογα
με τον αριθμό των πόντων, να εισάγουμε κάποια εφέ.
18. Αυτό θα το κάνουμε σε άλλη σελίδα:
1. When got puck – Do switch page 2
19. Αλλάζουμε τώρα σελίδα με τη βοήθεια του tab (βρισκόμαστε τώρα στη
σελίδα 2).
20. Εδώ θέλουμε:
 Η χελώνα να λάμπει με κίτρινο χρώμα.
 Να προσθέσουμε 10 πόντους στο σκορ.
 Όταν το σκορ είναι < 100 πόντους, η χελώνα να εκφράζει ζάλη (1 φορά) ως προειδοποίηση
ότι οι πόντοι μας πέφτουν.
 Όταν το σκορ είναι >= 100 πόντους, η χελώνα να εκφράζει αγάπη (1 φορά) ως
προειδοποίηση ότι ο παίκτης είναι σε καλό δρόμο.
21. Οπότε ο κώδικας της σελίδας 2 είναι ο εξής:
1. -- Do glow yellow
2. -- Do score 10 points
3. When scored below 100 points – Do express stars once
4. When scored above 100 points – Do express hearts once
5. -- Do switch page 1
Βήματα του 3ου μαθήματος (5/5)
32

22. Ξαναγυρίζουμε στη σελίδα 1 της χελώνας.


23. Όταν η χελώνα πέσει πάνω σ’ έναν δίσκο, θέλουμε να
γίνεται ζημιά στην υγεία της 10 πόντων:
1. When bump saucer – Do damage 10 points me
24. Όταν η υγεία της χελώνας μηδενιστεί, θέλουμε να
τελειώνει το παιχνίδι:
1. When health 0 points – Do end
25. Όταν περνούν 60 δευτερόλεπτα, θέλουμε επίσης να
τελειώνει το παιχνίδι:
1. When timer 60 seconds – Do end
26. Όταν μαζευτούν 200 πόντοι, θέλουμε ο παίκτης να
νικά:
1. When scored 100 points 100 points – Do win
Μία Πιθανή Επέκταση
33

Θέλουμε να δίνεται η δυνατότητα να θεραπεύεται η


υγεία της χελώνας.
Ένα πιθανό σενάριο:
 Όταν η χελώνα πέφτει πάνω σε μία καρδιά, θα θεραπεύεται η υγεία
της κατά 5 μονάδες.
 Οι καρδιές θα δημιουργούνται από έναν νέο δημιουργό, π.χ., από
ένα σύννεφο, ώς δώρο στον παίκτη μόνο όταν το σκορ είναι πάνω
από 100 πόντους.
 Δεν θα πρέπει να υπάρχουν ταυτόχρονα πάνω από 3 καρδιές στον
κόσμο μας.
 Το σύννεφο θα παρακολουθεί το σκορ και όταν αυτό ξεπερνά τους
100 πόντους και επιπλέον δεν βλέπει να υπάρχουν καρδιές,
 θα παράγει καρδιές για ένα περιορισμένο χρονικό διάστημα, π.χ., για
10 δευτερόλεπτα.
 Τις καρδιές θα τις παράγει με συχνότητα μία κάθε 3 δευτερόλεπτα.
Επέκταση – Μία Πιθανή λύση
34

Προσθέτουμε το σύννεφο και τον κώδικά του.


 Σελίδα 1:
1. When scored above 100 – Do
2. When see heart not – Do switch page 2
 Σελίδα 2:
1. When timer 10 seconds – Do switch page 1
2. When timer 3 seconds – create heart
Στο τέλος του κώδικα της χελώνας, προσθέτουμε τις
εξής γραμμές:
1. When bump heart – Do eat it
2. When got heart – Do heal 5 points me
Κάτι πιο πολύπλοκο...
35

ΚΑΘΕ ΣΕΛΙΔΑ ΚΑΙ ΜΙΑ ΚΑΤΑΣΤΑΣΗ


Η δύναμη των σελίδων
36

Η μεγάλη δύναμη των σελίδων κώδικα:


 Δυνατότητα αντιστοίχισης των σελίδων σε διαφορετικές
καταστάσεις του παιχνιδιού (game states).
Η δυνανότητα αυτή πηγάζει από το εξής
χαρακτηριστικό του Kodu:
 Όταν μεταβαίνουμε σε μία σελίδα κώδικα, απενεργοποιείται ο
κώδικας όλων των άλλων σελίδων.

 Όταν θέλουμε να αλλάξουμε τη συμπεριφορά ενός χαρακτήρα,


μπορούμε να μεταβούμε σε διαφορετική σελίδα κώδικα που
υλοποιεί αυτή τη νέα συμπεριφορά.
Σενάριο
37

 Ο παίκτης οδηγεί τη χελώνα.


 Η χελώνα έχει ως στόχο να βομβαρδίσει το μοτοσυκλετιστή.
 Αυτό μπορεί να το κάνει μόνο όταν πάρει μία καρδιά. Έχει
στη διάθεσή της μόνο μία βόμβα για κάθε καρδιά που
παίρνει.
 Υπάρχουν 5 μόνο καρδιές.
 Ο μοτοσυκλετιστής περιπλανάται και μόλις πέσει πάνω σε μία
καρδιά την τρώει.
 Το παιχνίδι τελειώνει με νίκη του παίκτη μόλις η χελώνα
βομβαρδίσει επιτυχώς το μοτοσυκλετιστή.
 Το παιχνίδι τελειώνει με ήττα του παίκτη όταν συμβεί ένα από
τα εξής:
 Περάσουν 3 λεπτά χωρίς να έχει πετύχει η χελώνα το μοτοσυκλετιστή.
 Η χελώνα πετάξει την τελευταία της βόμβα χωρίς να βρει το στόχο της.
Σενάριο – Μερικές λεπτομέρειες
38

Όταν η χελώνα αρπάξει μία καρδιά, θέλουμε η


χελώνα να αρχίσει να λάμπει με κόκκινη λάμψη.
Θα πάψει να λάμπει μόλις ρίξει τη βόμβα.
Εάν η βόμβα πετύχει τον Cycle, δεν θέλουμε να
τελειώσει το παιχνίδι αμέσως, διότι θέλουμε ο
παίκτης να καταλάβει ότι πέτυχε το μοτοσυκλετιστή.
 Επομένως, θέλουμε να υπάρξει μία μικρή καθυστέρηση
ανάμεσα στο χτύπημα του Cycle και στο τέλος του παιχνιδιού.
Ομοίως, αν αστοχήσει στην τελευταία βόμβα που
έχει στη διάθεσή του ο παίκτης, δεν θέλουμε να
τελειώσει το παιχνίδι αμέσως.
Υλοποίηση – Πρώτα τα εύκολα
39

Θα έχουμε δύο σκορ:


 Το λευκό για την αντίστροφη μέτρηση του χρόνου σε
δευτερόλεπτα.
 Το κόκκινο για τη μέτρηση των καρδιών που απομένουν.
Την αρχικοποίηση και των δύο σκορ θα την
αναλάβει το κάστρο.
Μόλις το κάστρο αρχικοποιήσει τους δύο μετρητές,
θα μεταβεί στην κατάσταση αντίστροφης μέτρησης
και του ελέγχου για το τέλος του χρόνου.
Προγραμματισμός του κάστρου
40

Page 1
1. -- Do score 5 points red
2. -- Do score 100 points 50 points 20 points 10 points white
3. -- Do switch page 2
Page 2
1. When timer 1 second – Do subtract 1 point white
2. When scored 0 points – Do end
Προγραμματισμός του Cycle
41

1. -- Do move wander quickly


2. When bump heart – Do eat it
3. -- Do subtract 1 point red
Και τώρα στα δύσκολα...
42

Για να προγραμματίσουμε σωστά τη χελώνα, πρέπει να


πρώτα να:
 προσδιορίσουμε τις διαφορετικές καταστάσεις του παιχνιδιού και
 πώς (πότε) μεταβαίνουμε από την μία κατάσταση στην επόμενη.
 Κάθε κατάσταση θα υλοποιηθεί σε διαφορετική σελίδα.
Επομένως, αντιμετωπίζουμε το παιχνίδι ως μία Μηχανή
Πεπερασμένων Καταστάσεων (FSM - Finite State
Machine).
 Στην επόμενη διαφάνεια παρουσιάζεται μία πιθανή τέτοια μηχανή
που θα μας βοηθήσει στον προγραμματισμό της χελώνας.
 Η μηχανή έχει μία αρχική κατάσταση και δύο τελικές καταστάσεις.
Διάγραμμα Καταστάσεων του Παιχνιδιού
Συνθήκη που ελέγχουμε για να
ενεργοποιήσουμε τη μετάβαση

Ξεκινάμε
εδώ

Όνομα Σελίδα στον κώδικα


κατάστασης του Turtle όπου θα
υλοποιήσουμε την
Μετάβαση κατάσταση

Γεγονός που
ενεργοποιεί τη
μετάβαση

Ενέργειες που
κάνουμε όταν
βρισκόμαστε στη
συγκεκριμένη
κατάσταση

43
Προγραμματισμός της χελώνας (Turtle)
44

1. Σελίδα 1 (Page 1)
1. When keyboard arrows – Do move quickly
2. When bump heart – Do eat it
1. -- Do subtract 1 point red
2. -- Do switch page 2
2. Σελίδα 2 (Page 2)
1. -- Do glow red
2. When keyboard arrows – Do move quickly
3. When keyboard space – Do shoot down missile
1. -- Do switch page 3
Προγραμματισμός της χελώνας (συν.)
45

1. Σελίδα 3 (Page 3)
1. -- Do glow off
2. When keyboard arrows – Do move quickly
3. When shot hit cycle – Do switch page 4
4. When timer 1 second - Do switch page 5
2. Σελίδα 4 (Page 4)
1. When keyboard arrows – Do move quickly
2. When timer .25 second - Do win
3. Σελίδα 5 (Page 5)
1. When scored 0 points red – Do end
2. When scored above 0 points red – Do switch page 1
Πού θα μπορούσαμε να το διδάξουμε;
46

Είναι αρκετά πολύπλοκο (με τη διαχείριση των


καταστάσεων)...

Μάλλον μόνο στο Γυμνάσιο (και στο Λύκειο)...


Η προσέγγιση που θα προτείναμε θα ήταν εκείνη της
δοκιμής και λάθους.
 Σε καμία περίπτωση δεν θα δίναμε τη λύση έτοιμη.
 Θα προσπαθούσαμε να αφήσουμε πρώτα τα παιδιά να
πειραματιστούν, να αποτύχουν και σιγά – σιγά θα εκμαιεύαμε
τα βήματα της υλοποίησης σε συνάρτηση με την έννοια των
διαφορετικών καταστάσεων.
Επίλογος – Μια ακόμη Logo-ειδής γλώσσα;
47

Τι είναι το Kodu


 Γλώσσα προγραμματισμού για τη δημιουργία 3-διάστατων
παιχνιδιών (και μόνο).
 Υποστηρίζει δομές ελέγχου εξειδικευμένες στον προγραμματισμό
παιχνιδιών (π.χ., launch, damage, heal, 1st person, shot hit, κλπ).
 Γλώσσα αμιγώς οδηγούμενη από τα γεγονότα (event driven).
 Γλώσσα εστιάζουσα στις καταστάσεις του παιχνιδιού (game
states), μέσω των διαφορετικών σελίδων κώδικα.
Επίλογος – Μια ακόμη Logo-ειδής γλώσσα;
48

Τι δεν είναι το Kodu


 Μια ακόμη παραλλαγή της Logo.
 Η Kodu δεν είναι (ακριβώς) διαδικασιακή γλώσσα (procedural).
 Υποστηρίζει τη δομή της ακολουθίας, αλλά...
 Δεν διαθέτει γνωστές δομές ελέγχου:
• If then…else (παρά μόνο έμμεσα μέσω της δομής When…do)
• Διαφόρους τύπους βρόχου
 Δεν υποστηρίζει (ακριβώς) τις διαδικασίες, παρά μόνο έμμεσα,
μέσω των διαφορετικών σελίδων κώδικα.
 Δεν υποστηρίζει παραμέτρους και επιστρεφόμενες τιμές.
 Δεν υποστηρίζει (ακριβώς) την έννοια της (τοπικής)
μεταβλητής, παρά μόνο μέσω των σκορ.
 Δεν διαθέτει την έννοια της «πένας»  δεν είναι περιβάλλον
ζωγραφικής.
Ευχαριστούμε για τη
συμμετοχή σας
49

You might also like