To Scratch είναι ένα προγραμματιστικό περιβάλλον που απευθύνεται σε ανθρώπους κάθε ηλικίας (ιδιαιτέρως σε παιδιά) που θέλουν να μάθουν τις βασικές αρχές του προγραμματισμού. Παρέχει ένα πολύ εύκολο και διαισθητικό περιβάλλον διεπαφής (UI), με ρεπερτόριο εντολών (instructions) που αποκρύβει το συντακτικό του και διευκολύνει κάποιον να επικεντρωθεί στην επίλυση του προβλήματος. Παράλληλα, τον μαθαίνει τις βασικές αρχές του δομημένου προγραμματισμού, του τμηματικού προγραμματισμού, του οπτικού προγραμματισμού και εν μέρει του αντικειμενοστραφούς προγραμματισμού.
Στο τμήμα αυτό θα βρείτε εκπαιδευτικά έργα που έχω δημιουργήσει στο Scratch, χωρισμένα σε 3 κατηγορίες: Animation, Ζωγραφική και Games. Κάθε έργο στη λίστα, συνοδεύεται με δείγμα σε video και το source αρχείο σε δύο εκδόσεις: για Scratch v2 (.sb2) και Scratch v3 (.sb3). Επίσης, παρέχεται ο σύνδεσμος στη σχετική σελίδα του έργου στο site του Scratch, όπου μπορεί κάποιος να μελετήσει τον κώδικα. Σε νεότερα έργα, παρέχω μόνο τον κώδικα σε Scratch v3 (.sb3)
Να σημειώσω, ότι σε κάθε έργο κάνω εκτενή χρήση των διαδικασιών (custom blocks), μία βασική αρχή για την ανάπτυξη και οργάνωση μεγάλων προγραμμάτων κι ενθαρρύνω του μαθητές να την χρησιμοποιούν σε κάθε μικρό ή μεγάλο έργο.
Δύο ανεμόμυλοι όπου το φόντο εναλάσσεται σε τακτά διαστήματα. Για να δοθεί η προοπτική βάθους ο δεύτερος είναι πιο μικρός και γυρίζει πιο αργά.
Με μία μικρή τροποποίηση στο έργο μπορείτε να προσθέσετε περισσότερους ανεμόμυλους, ποικίλου μεγέθους, που η ρόδα τους θα γυρίζει με διαφορετική ταχύτητα.
Ένα παράδειγμα τοποθέτησης γραμμάτων μίας λέξης με εφέ. Τα γράμματα αρχικά τοποθετούνται τυχαία στο σκηνικό και κατόπιν μπαίνουν στη σωστή σειρά για να σχηματιστεί η λέξη.
Ένα τυπικό δείγμα κίνησης της γάτας μέσα σε δρόμο. Η γάτα κινείται με τα βελάκια του πληκτρολογίου και το ψάρι εμφανίζεται, τυχαία, σε προκαθορισμένα σημεία του δρόμου.
Το έργο χρησιμοποιεί τα εφέ αντίστροφης μέτρησης και zoom σε αντικείμενο. Επίσης, δεν έχει συνθήκη τερματισμού (μπορείτε να βάλετε όταν π.χ. το σκορ φτάσει στο 10 να εμφανιζεται ένα GAME OVER γραφικό). Με μία μικρή τροποποίηση στον κώδικα του ψαριού (στη διαδικασία ΕμφανίσουΣτηΘέση) μπορείτε να προσθέσετε κι άλλα προκαθορισμένα σημεία εμφάνισης (x,y) του ψαριού.
Μία μπάλα που κινείται αυτόματα μέσα σε ένα σωλήνα. Σε κάποιες γωνίες του έχουμε βάλει μαγνήτες που της αλλάζουν κατεύθυνση. Όταν η μπάλα χτυπάει έναν μαγνήτη, ο τελευταίος γίνεται για λίγο μπλε και ακούγεται ένας σύντομος ήχος, πετυχαίνοντας μία διάδραση (interaction).
Το έργο χρησιμοποιεί τα εφέ αντίστροφης μέτρησης και slide-in. Επίσης, όταν η μπάλα κάνει 3 γύρους τότε εμφανιζεται ένα GAME OVER γραφικό).
Αστέρια πέφτουν συνέχεια από τον ουρανό. Επιπλέον, σε τακτά χρονικά διαστήματα εμφανίζονται κομήτες από αριστερά ή δεξιά να διασχίζουν τον ουρανό.
Το έργο χρησιμοποιεί τον μηχανισμό της κλωνοποίησης για τη δημιουργία των αστεριών και κομητών. Παράλληλα, μπορεί κάποιος να το τροποποιήσει ώστε να γίνονται, σε τακτά χρονικά διαστήματα, εκρήξεις super-nova.
Ένα έργο που δείχνει ένα κινούμενο background. Κίνηση διαστημόπλοιου: Με τα βελάκια του πληκτρολογίου Πυρ: Με το πλήκτρο [Space].
Μελετώντας τον κώδικα (που είναι απλός) μαθαίνουμε την τεχνική του πώς δημιουργούμε ένα κινούμενο background. Εδώ το φόντο είναι το διάστημα (που κατεβαίνει).
Ένα δείγμα ομοιόμορφης κίνησης μίας στρατιάς. Η αυτόματη κίνηση γίνεται από αριστερά προς δεξιά και κατόπιν αλλάζει γραμμή και κατεύθυνση.
Το έργο χρησιμοποιεί τον μηχανισμό της κλωνοποίησης για τη δημιουργία των sprites. Ο κώδικας του animation μπορεί να αξιοποιηθεί σε ανάλογα παιχνίδια και όπως πάντα περιέχει πλούσια σχόλια. Το όλο θέμα είναι εμπνευσμένο από το παλιό αγαπημένο μου videogame Space invaders.
Περιέχει δύο εκδόσεις διαδικασιών (custom blocks):
Μία απλή, που σχεδιάζει το τετράγωνο με σταθερό μήκος πλευράς.
Μία με παράμετρο, όπου η παράμετρος αντιπροσωπεύει το μεταβλητό μήκος πλευράς. Η περίπτωση αυτή είναι πιο ευέλικτη διότι μας επιτρέπει να σχεδιάζουμε τετράγωνα με οποιοδήποτε μήκος πλευράς.
Περιέχει δύο εκδόσεις διαδικασιών (custom blocks):
Μία απλή, που σχεδιάζει το τρίγωνο με σταθερό μήκος πλευράς.
Μία με παράμετρο, όπου η παράμετρος αντιπροσωπεύει το μεταβλητό μήκος πλευράς. Η περίπτωση αυτή είναι πιο ευέλικτη διότι μας επιτρέπει να σχεδιάζουμε τρίγωνα με οποιοδήποτε μήκος πλευράς.
Περιέχει δύο εκδόσεις διαδικασιών (custom blocks):
Μία απλή, που σχεδιάζει το εξάγωνο με σταθερό μήκος πλευράς.
Μία με παράμετρο, όπου η παράμετρος αντιπροσωπεύει το μεταβλητό μήκος πλευράς. Η περίπτωση αυτή είναι πιο ευέλικτη διότι μας επιτρέπει να σχεδιάζουμε εξάγωνα με οποιοδήποτε μήκος πλευράς.
Περιέχει δύο εκδόσεις παραμετρικών διαδικασιών (custom blocks με παραμέτρους):
Με μία παράμετρο, που σχεδιάζει το πολυγωνικό σχήμα όπου η παράμετρος αυτή προσδιορίζει το πόσες πλευρές θα σχεδιάσει (το είδος του πολυγώνου) αλλά με σταθερό μήκος πλευράς.
Με δύο παραμέτρους, που σχεδιάζει το πολυγωνικό σχήμα όπου η πρώτη παράμετρος προσδιορίζει το πόσες πλευρές θα σχεδιάσει (το είδος του πολυγώνου) και η δεύτερη παράμετρος προσδιορίζει το μήκος της κάθε πλευράς.
Σχεδιάζει ένα μοτίβο με κεκλιμένα τετράγωνα, σε πολλές γραμμές.
Μπορούμε να τροποποιήσουμε το μοτίβο ώστε τα τετράγωνα να είναι διαφορετικού χρώματος, καθώς και να υπάρχει μεταβλητή οριζόντια απόσταση μεταξύ τους στη γραμμή και μεταβλητή κατακόρυφη απόσταση μεταξύ των γραμμών.
Σχεδιάζει ένα μοτίβο με τρίγωνα, σε πολλές γραμμές.
Μπορούμε να τροποποιήσουμε το μοτίβο ώστε τα τρίγωνα να είναι διαφορετικού χρώματος, μεγέθους, καθώς και να υπάρχει μεταβλητή οριζόντια απόσταση μεταξύ τους στη γραμμή και μεταβλητή κατακόρυφη απόσταση μεταξύ των γραμμών.
Χρησιμοποιούμε τον μηχανισμό της κλωνοποίησης ενός γραφικού (τετραγώνου με δύο ενδυμασίες, μαύρο-κίτρινο) για να δημιουργήσουμε πολλαπλά παρόμοια τετράγωνα.
Χρησιμοποιούμε τον μηχανισμό της κλωνοποίησης ενός γραφικού (δέντρου). Το ενδιαφέρον στοιχείο είναι ότι προσθέτουμε τυχαία και μία μικρή κύρτωση. Με μία μικρή τροποποίηση μπορούμε να προσθέσουμε επιπλέον γραφικά (ενδυμασίες) του δέντρου κάνοντας το δάσος πολυμορφικό.
Περιέχει δύο εκδόσεις διαδικασιών (custom blocks):
Η πρώτη, χρησιμοποιεί δύο ξεχωριστές διαδικασίες: τετράγωνο και τρίγωνο για να σχεδιάσει το σπίτι.
Η δεύτερη, χρησιμοποιεί μία γενική διαδικασία με παράμετρο, για να σχεδιάσει το σπίτι. Αυτή η γενική διαδικασία μπορεί, με βάση την παράμετρο, να σχεδιάσει οποιοδήποτε πολυγωνικό σχήμα (τρίγωνο, τετράγωνο κλπ)
Δύο παίκτες καθοδηγούν από μία γάτα και προσπαθούν να φτάσουν στην άλλη άκρη να φάνε το ψάρι. Πράσινη γάτα: Κινείται με τα arrow keys. Κόκκινη γάτα: Κινείται με τα WASD keys.
Μπορείτε να τροποποιήσετε το έργο ώστε να προσθέσετε τα εξής:
Σκορ για κάθε μία γάτα. Κάθε φορά που μία γάτα τρώει το ψάρι, να αυξάνεται το σκορ της.
Αν κάποια γάτα φτάσει το σκορ στο 5 (ή σε όποια άλλη τιμή θέλετε) να σταματάει το παιχνίδι και να βγάζει ένα κατάλληλο μήνυμα: Π.χ. "Κέρδισε η πράσινη γάτα" ή "Κέρδισε η κόκκινη γάτα". Αυτή θα είναι και συνθήκη τερματισμού του παιχνιδιού.
Για το μήνυμα νίκης μπορείτε να φτιάξετε 2 ωραία γραφικά: ένα για την νίκη της πράσινης κι ένα για τη νίκη της κόκκινης γάτας.
Ένα παιχνίδι όπου κινούμε το διαστημόπλοιο και προσπαθούμε να πετύχουμε όσους περισσότερους εξωγήινους μπορούμε. Το παιχνίδι τελειώνει όταν συγκρουστούμε 3 φορές με κάποιον εξωγήινο οπότε οι καρδιές θα χαθούν.
Ένα παιχνίδι που προσομοιάζει το γνωστό Arkanoid. Περιλαμβάνει και μπόνους καθώς και λίγο κλέψιμο (κούνημα της μπάλας-Tilt !).
Πλήκτρα:
A = Αριστερά
D = Δεξιά
SPACE = Κούνημα μπάλας (Tilt)
Τα bonus είναι:
L = Large bar
S = Small bar
F = Fast ball
Έχω βάλει πολλά σχόλια στον πηγαίο κώδικα, τον οποίο μπορείτε να τροποποιήσετε ώστε να προσθέστε επιπλέον bonus ή να βελτιώσετε την φυσική της μπάλας και την αντίδρασή της πάνω στην μπάρα. Σε κάθε περίπτωση, αφορά προχωρημένους στο Scratch!
Σελίδα του έργου στο Scratch (page in Scratch)