«ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ ΓΛΩΣΣΑ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ BINARY DROIDS»



Σχετικά έγγραφα
Π Τ Υ Χ Ι Α Κ Η Ε Ρ ΓΑ Σ Ι Α

Η διάρκεια πραγματοποίησης της ανοιχτής εκπαιδευτικής πρακτικής ήταν 2 διδακτικές ώρες

ΚΕΦΑΛΑΙΟ 6. Περιβάλλοντα Ανάπτυξης Εφαρμογών. ΚΕΦΑΛΑΙΟ 6 Περιβάλλοντα Ανάπτυξης Εφαρμογών. Α Γενικού Λυκείου

Πώς το λένε Computer game στο Scratch

Games: Εξοικείωση με το περιβάλλον του Game Maker μέσα από την κατασκευή ενός παιχνιδιού

Οδηγίες Χρήσης Εφαρμογής

Έγγραφο Προδιαγραφών Απαιτήσεων Λογισμικού για το παιχνίδι: Asylum : The Escape

Slalom Race Computer Game on Scratch

ΚΕΦΑΛΑΙΟ 1. Εισαγωγή στην Python. 1.1 Εισαγωγή

A7.2 Δημιουργία Απλής Γραφικής Εφαρμογής σε Περιβάλλον Scratch

Κατερίνα Χατζηφωτεινού. Αλγοριθμικά παιχνίδια & Kodu

Προγραμματισμός. Το περιβάλλον του scratch

Γραφικά υπολογιστών Εργαστήριο 10 Εισαγωγή στα Sprites

Η ΕΚΠΑΙΔΕΥΤΙΚΗ ΡΟΜΠΟΤΙΚΗ ΣΤΟ ΔΗΜΟΤΙΚΟ ΣΧΟΛΕΙΟ

Σενάριο 16: Ο κόσμος του Robby

Tank Rescue Computer Game σε Scratch

Μαλούτα Θεανώ Σελίδα 1

Τιμή Τιμή. σκορ. ζωές

ΠΡΟΔΙΑΓΡΑΦΕΣ. Η προπαίδεια είναι παιχνίδι! Εκπαιδευτικό Παιχνίδι Μαθητές Δημοτικού Έτος Κυκλοφορίας 2017 Τιμή πλήρους έκδοσης 0.99 Λογισμικό.

1ο Φύλλο Εργασίας. της παλέτας Ήχος. Πώς μπορούμε να εισάγουμε και να αναπαράγουμε έναν ήχο;

Τεχνολογίες Πληροφορίας & Επικοινωνιών στην Εκπαίδευση (ΤΠΕ-Ε)

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Τσάπελη Φανή ΑΜ: Ενισχυτική Μάθηση για το παιχνίδι dots. Τελική Αναφορά

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

Τα Διδακτικά Σενάρια και οι Προδιαγραφές τους. του Σταύρου Κοκκαλίδη. Μαθηματικού

Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή

Ψυχαγωγικό Λογισμικό

RobotArmy Περίληψη έργου

αντίστοιχο γεγονός. Όταν όντως το κουμπί

Οδηγός για Αρχάριους. έκδοση 1.4.

Στέλιος Ξυνόγαλος Επίκουρος Καθηγητής Τμήμα Εφαρμοσμένης Πληροφορικής

Ανακύκλωσε το Computer Game σε Scratch

Breakdance Computer Game σε Scratch.

Η έννοια της μεταβλητής και της λίστας με την βοήθεια του λογισμικού Scratch

Α. Ερωτήσεις Ανάπτυξης

Εκπαιδευτικό Σενάριο 2

APP INVENTOR ΜΕΡΟΣ A - 1 Η ΕΒΔΟΜΑΔΑ. Σοφία Τζελέπη,

«Kάστρα και πραμάτειες- Πόλεις και βιωσιμότητα»

Εισαγωγή στις Αρχές της Επιστήμης των ΗΥ

Βασίλειος Κοντογιάννης ΠΕ19

Εισαγωγή στην επανάληψη

Εφαρμογές Προσομοίωσης

4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος

Αναπαραγωγή και stop/pause έτοιμων ηχητικών clips

Διαδραστικός πίνακας. Ναλμπάντη Θεοδώρα Σχολική Σύμβουλος Πληροφορικής Θράκης

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή

Γνωστικοί στόχοι: Μετά το τέλος της πρακτικής, οι μαθητές πρέπει να μπορούν να:

Παιχνιδοκεντρική μάθηση στο Scratch

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

Κατασκευή δικτυακής εφαρμογής στην αρχιτεκτονική ios iphone που υλοποιεί ένα παιχνίδι ερωτοαπαντήσεων

ANDROID Προγραμματισμός Εφαρμογών

Διδακτική της Πληροφορικής ΙΙ

Οδηγός ξεκινήματος. έκδοση 2.0.

ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ. Δημητρίου Σωτήρης 6417

Διδασκαλία γραμμάτων-συλλαβών

21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB. Αλγόριθμος Διαδικασία Παράμετροι

7.Α.1 Παρουσιάσεις. 7.Α.2 Περιγραφή περιεχομένων της εφαρμογής

Towards a Creative Education in the Classroom. Methodologies and Innovative Dynamics for Teaching. Bilbao - Spain, 27/06/ /07/2016

Μάθηση & διδασκαλία στην προσχολική εκπαίδευση: βασικές αρχές

CONNECT: Virtual Mobility

Τσικολάτας Α. (2011) Οι ΤΠΕ ως Εκπαιδευτικό Εργαλείο στην Ειδική Αγωγή. Αθήνα

Σχεδιασμός Ψηφιακών Εκπαιδευτικών Εφαρμογών ΙI

Βιωματικό εργαστήριο ηλεκτρονικών υπολογιστών. Οργάνωση εκπαιδευτικού υλικού με Η/Υ από δραστηριότητες στο Δημοτικό και στο Νηπιαγωγείο.

Τα Φύλλα Εργασίας αφορά την εκμάθηση της εκτέλεσης της δομής επιλογής μέσα από το περιβάλλον του SCRATCH.

Προγραμματισμός ΙI (Θ)

Εργαστηριακή Εισήγηση. «Οι μεταβλητές στη γλώσσα προγραμματισμού Scratch»

Λογισμικό Καθοδήγησης ή Διδασκαλίας

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή στην Access Κεφάλαιο 2 Χειρισμός πινάκων... 27

Ο ΓΥΡΟΣ ΤΟΥ ΚΟΣΜΟΥ ΣΕ 80 ΕΡΩΤΗΣΕΙΣ

ΡΟΜΠΟΤΙΚΗ ΚΑΙ ΕΚΠΑΙΔΕΥΣΗ

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010


ΨΗΦΙΑΚΑ ΠΑΙΧΝΙΔΙΑ ΣΕ ΣΥΣΚΕΥΕΣ ΚΙΝΗΤΗΣ

Επιµέλεια Θοδωρής Πιερράτος

Κεφάλαιο 4: Λογισμικό Συστήματος

Μάθημα 1: Εισαγωγή. Κάνε κλικ την εντολή "κινήσου" και με το ποντίκι πατημένο μετέφερε τη στη περιοχή σεναρίων.

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ 23/04/2012. Α. Να απαντήσετε με Σ ή Λ στις παρακάτω προτάσεις:

Πληροφορική Γυμνασίου. Δρ. Κοτίνη Ισαβέλλα Σχ. Σύμβουλος Πληροφορικής Πέλλας, Ημαθίας και Πιερίας

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Ηλεκτρονική Υγεία. Εργαστήριο 4 ο : MATLAB

Λογισμικό διδασκαλίας των μαθηματικών της Γ Τάξης Γυμνασίου

Μεταβλητές. Σενάριο για μαθητές Γ γυμνασίου διάρκειας 3+ ωρών

Ερωτήσεις- Απαντήσεις Πολυμέσα Απο το Βιβλίο Εφαρμογές Η/Υ Α,Β,Γ Λυκείου

Αριστείδης Παλιούρας Ανακαλύψτε το Scratch 2

1. Οι Τεχνολογίες της Πληροφορίας και των Επικοινωνιών στην εκπαιδευτική διαδικασία

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ

Εισαγωγή στην Γλώσσα Προγραμματισμού Python. 12/10/16 1

1ο μέρος 1. Φτιάχνουμε την πίστα. Μια ενδεικτική πίστα φαίνεται παρακάτω:

Π Τ Υ Χ Ι Α Κ Η Ε Ρ Γ Α Σ Ι Α

Πιο αναλυτικά, δημιουργήθηκε, μια ιστοσελίδα τύπου wiki όπου προστέθηκαν οι ανάλογες αναφορές σε δραστηριότητες από το Φωτόδεντρο.

Κεφάλαιο 1: Εισαγωγή. 1.1 Οι γλώσσες προγραμματισμού

Σενάριο 13. Προγραμματίζοντας ένα Ρομπότ

Ενότητα 1η. Εισαγωγή στην Πληροφορική

Scratch 2.0 Προκλήσεις

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ

Τεχνολογία Ψυχαγωγικού Λογισμικού και Εικονικοί Κόσμοι Ενότητα 1η - Εισαγωγή

Ο Οδηγός γρήγορης εκκίνησης

The Mind. Mind σε ένα νέο επίπεδο.επιλέξτε ένα από τα δύο μουσικά κομμάτια στο CD. Με το πρώτο κομμάτι

Εγχειρίδιο Χρήσης του «Μαθη.Συ.»

3 ο εργαστήριο Scratch for NinjaCoders

Scratch Δημοτικό 4: Οι μεταβλητές στη γλώσσα προγραμματισμού Scratch (οι μεταβλητές σαν απαριθμητές)

Transcript:

Α Ρ Ι Σ Τ Ο Τ Ε Λ Ε Ι Ο Π Α Ν Ε Π Ι Σ Τ Η Μ Ι Ο Θ Ε Σ Σ Α Λ Ο Ν Ι Κ Η Σ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΣΤΡΑΝΤΖΗ ΑΝΤΩΝΙΑ Α.Ε.Μ. 2090 «ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ ΓΛΩΣΣΑ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ BINARY DROIDS» (Learning Games Development in Python: The Binary Droids Game) ΕΠΙΒΛΕΠΩΝ ΚΑΘΗΓΗΤΗΣ: ΔΗΜΗΤΡΙΑΔΗΣ ΣΤΑΥΡΟΣ Επ. Καθηγητής ΘΕΣΣΑΛΟΝΙΚΗ 2015

ΠΕΡΙΛΗΨΗ Π Ε Ρ Ι Λ Η Ψ Η Αντικείμενο της παρούσας εργασίας είναι η παιχνιδοκεντρική μάθηση και η ανάπτυξη ενός εκπαιδευτικού παιχνιδιού. Με την ανάπτυξη της τεχνολογίας στις μέρες μας, η διαδικασία της εκπαίδευσης και της μάθησης έχουν αλλάξει δραματικά. Η μάθηση δεν είναι πλέον μια κλασσική διαδικασία που στηρίζεται μόνο στα βιβλία. Η εργασία ασχολείται με την παιχνιδοκεντρική μάθηση και τη χρήση των παιχνιδιών σε αυτή τη διαδικασία, ενώ περιγράφεται και η ανάπτυξη ενός τέτοιου εκπαιδευτικού παιχνιδιού. Στο πρώτο μέρος περιγράφεται η έννοια της παιχνιδοκεντρικής μάθησης, εκείνης της διαδικασίας μάθησης που χρησιμοποιεί ως μηχανισμό το παιχνίδι. Επίσης περιγράφονται οι διάφορες κατηγορίες εκπαιδευτικών παιχνιδιών. Στο δεύτερο μέρος γίνεται αναφορά στη γλώσσα Python, το μοντέλο εκτέλεσής της και την ιστορία της. Έπειτα γίνεται αναφορά στη βιβλιοθήκη Pygame και στα εργαλεία που χρησιμοποιήθηκαν στην ανάπτυξη του παιχνιδιού. Στο τρίτο μέρος της εργασίας αναλύεται η υλοποίηση ενός εκπαιδευτικού ψηφιακού παιχνιδιού με τίτλο «Binary Droids», υλοποιημένο σε Python, με χρήση της Pygame. Το παιχνίδι έχει σκοπό την εκμάθηση μιας βασικής έννοιας της Πληροφορικής, αυτήν του δυαδικού συστήματος αρίθμησης, και της μετατροπής αριθμών από το δυαδικό σύστημα στο γνωστό σε όλους δεκαδικό. Το παιχνίδι χρησιμοποιεί επιβραβεύσεις και ποινές, όταν ο χρήστης εκτελεί τις μετατροπές των αριθμών σωστά και όταν τις εκτελεί λάθος, αντίστοιχα. Όσο ο χρήστης επιβραβεύεται για τις επιδόσεις του στο παιχνίδι, ανεβαίνει επίπεδα και συνεπώς αυξάνεται και η δυσκολία. Μετά το πέρας του παιχνιδιού, ο παίκτης έχει μια καλύτερη εικόνα του δυαδικού αριθμητικού συστήματος και του τρόπου λειτουργίας του. ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS' III

ABSTRACT A BST R A C T The subject of this thesis is game-based learning and the subsequent development of a learning game. Given the steep rise of technology in our days, the learning and the education process have changed dramatically. Learning is no more a conventional process based solely on books. This thesis focuses on game-based learning and the use of games in that process, while the development of an educational game is described. The first part describes the concept of game-based learning, the learning process using games as a device. Furthermore, there are references to different educational game categories. The second part focuses on the programming language Python, its execution model and its history. Later on, the second part focuses on the Pygame library and specific modules that were used in the development of the game. In the third part, the development of the game, titled Binary Droids, which was developed in Python, with the aid of the Pygame library, is analyzed. The game s purpose is the teaching of a fundamental concept in computer science, that of the binary numerical system, and the conversion of binary numbers to the already known decimal system. The game uses rewards and penalties when the player converts the numbers correctly and when he converts them mistakenly, respectively. While the player receives rewards for his achievements, he climbs up the game levels, therefore climbing up the difficulty levels. After the game is over, the player has a clearer picture of the binary numerical system and its functionality. ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS' V

ΕΥΧΑΡΙΣΤΙΕΣ Ε Υ Χ Α Ρ Ι Σ Τ Ι Ε Σ Πριν την παρουσίαση των αποτελεσμάτων της παρούσας εργασίας, αισθάνομαι την υποχρέωση να ευχαριστήσω ορισμένους από τους ανθρώπους που γνώρισα, συνεργάστηκα μαζί τους και έπαιξαν πολύ σημαντικό ρόλο στην πραγματοποίησή της. Θα ήθελα να ευχαριστήσω τον επιβλέποντα καθηγητή κ. Δημητριάδη, για τη βοήθειά του και την καθοδήγησή του. Ευχαριστώ τους φίλους και συναδέλφους, πολλοί από τους οποίους έχουν ζήσει και οι ίδιοι τη διαδικασία της πτυχιακής εργασίας, για τις συμβουλές τους και το σημαντικό feedback για το παιχνίδι μου. Θέλω να ευχαριστήσω την οικογένειά μου για την ενθάρρυνση και την πολύτιμη συμπαράσταση της όλους αυτούς τους μήνες που ασχολούμαι με την εργασία, και όσα χρόνια φοιτώ στη σχολή, καθώς και τις φίλες μου και τους φίλους μου για τη σημαντική ψυχολογική υποστήριξη τους. Επίσης, θα ήθελα να ευχαριστήσω όσα άτομα έκαναν τη δουλειά μου όλον αυτόν τον καιρό πιο εύκολη, με ενέπνευσαν και έμμεσα με στήριξαν, μέσω της κωμωδίας και της μουσικής. 04/07/2015 Αντωνία Στράντζη ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS' VII

ΠΕΡΙΕΧΟΜΕΝΑ Π Ε Ρ Ι Ε Χ Ο Μ Ε Ν Α ΠΕΡΙΛΗΨΗ... III ABSTRACT... V ΕΥΧΑΡΙΣΤΙΕΣ... VII ΠΕΡΙΕΧΟΜΕΝΑ... IX ΚΕΦΑΛΑΙΟ 1: ΕΙΣΑΓΩΓΗ... 13 ΚΕΦΑΛΑΙΟ 2: ΕΚΠΑΙΔΕΥΤΙΚΑ ΠΑΙΧΝΙΔΙΑ ΚΑΙ ΠΑΙΧΝΙΔΟΚΕΝΤΡΙΚΗ ΜΑΘΗΣΗ... 17 2.1 ΨΗΦΙΑΚΑ ΠΑΙΧΝΙΔΙΑ... 19 2.1.1 Ο ΟΡΟΣ GAMEPLAY... 19 2.1.2 ΚΑΤΗΓΟΡΙΕΣ ΠΑΙΧΝΙΔΙΩΝ... 20 2.1.3 ΑΝΑΠΤΥΞΗ ΨΗΦΙΑΚΩΝ ΠΑΙΧΝΙΔΙΩΝ... 21 2.1.3.1 ΑΡΧΙΤΕΚΤΟΝΙΚΗ... 21 2.1.3.2 ΟΜΑΔΑ ΑΝΑΠΤΥΞΗΣ... 21 2.1.3.3 ΕΡΓΑΛΕΙΑ ΣΥΓΓΡΑΦΗΣ ΠΑΙΧΝΙΔΙΩΝ... 22 2.2 ΕΚΠΑΙΔΕΥΤΙΚΑ ΠΑΙΧΝΙΔΙΑ... 23 2.2.1 ΒΑΣΙΚΟΙ ΠΑΡΑΓΟΝΤΕΣ ΔΟΜΗΣ ΚΑΙ ΟΡΓΑΝΩΣΗΣ ΠΑΙΧΝΙΔΙΩΝ... 23 2.2.2 ΣΧΕΣΗ ΣΕΝΑΡΙΟΥ ΚΑΙ ΠΑΙΧΝΙΔΙΟΥ ΜΑΘΗΣΗΣ... 24 2.3 ΠΑΙΧΝΙΔΟΚΕΝΤΡΙΚΗ ΜΑΘΗΣΗ... 26 2.3.1 ΤΟ ΜΟΝΤΕΛΟ PRENSKY... 26 2.3.2 ΕΜΠΛΟΚΗ ΤΩΝ ΜΑΘΗΤΩΝ ΣΤΟ ΠΑΙΧΝΙΔΙ... 27 ΚΕΦΑΛΑΙΟ 3: Η ΓΛΩΣΣΑ PYTHON ΚΑΙ Η ΒΙΒΛΙΟΘΗΚΗ PYGAME... 29 3.1 Η ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ PYTHON... 31 3.1.1 ΤΟ ΜΟΝΤΕΛΟ ΕΚΤΕΛΕΣΗΣ... 32 ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS' IX

ΣΤΡΑΝΤΖΗ ΑΝΤΩΝΙΑ 3.1.2 ΙΣΤΟΡΙΑ... 32 3.1.3 ΕΚΔΟΣΕΙΣ... 33 3.1.4 ΧΡΗΣΗ... 34 3.1.5 ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΑ ΠΕΡΙΒΑΛΛΟΝΤΑ (IDE)... 34 3.2 Η ΒΙΒΛΙΟΘΗΚΗ PYGAME... 36 3.2.1 MODULES, ΜΕΘΟΔΟΙ ΚΑΙ ΚΛΑΣΕΙΣ ΤΗΣ PYGAME... 36 3.2.1.1 MODULE: PYGAME... 36 3.2.1.2 MODULE: DISPLAY... 36 3.2.1.3 ΚΛΑΣΗ: SURFACE... 36 3.2.1.4 MODULE: SPRITE... 37 3.2.1.5 ΚΛΑΣΗ: RECT... 37 3.2.1.6 MODULE: IMAGE... 37 3.2.1.7 MODULE: TRANSFORM... 37 3.2.1.8 MODULE: MOUSE... 37 3.2.1.9 MODULE: TIME... 37 3.2.1.10 MODULE: MUSIC... 38 3.2.1.11 MODULE: FONT... 38 ΚΕΦΑΛΑΙΟ 4: ΤΟ ΠΑΙΧΝΙΔΙ «BINARY DROIDS»... 39 4.1 ΤΟ ΣΕΝΑΡΙΟ ΚΑΙ Η ΛΕΙΤΟΥΡΓΙΑ ΤΟΥ ΠΑΙΧΝΙΔΙΟΥ... 41 4.1.1 ΤΟ ΣΕΝΑΡΙΟ ΤΟΥ ΠΑΙΧΝΙΔΙΟΥ... 41 4.1.2 Ο ΜΗΧΑΝΙΣΜΟΣ ΜΑΘΗΣΗΣ... 42 4.1.3 Η ΛΕΙΤΟΥΡΓΙΑ ΤΟΥ ΠΑΙΧΝΙΔΙΟΥ... 42 4.1.4 Ο ΣΚΟΠΟΣ ΤΟΥ ΠΑΙΧΝΙΔΙΟΥ... 43 4.1.5 ΕΠΙΒΡΑΒΕΥΣΕΙΣ / ΠΟΙΝΕΣ... 43 4.1.6 ΠΡΟΣΘΕΤΕΣ ΕΠΙΛΟΓΕΣ... 43 4.1.7 ΤΟ INTERFACE... 44 4.1.8 ΤΟ ΜΕΝΟΥ... 45 4.2 ΚΛΑΣΕΙΣ... 46 4.2.1 ΚΛΑΣΗ BUTTON... 46 4.2.2 ΚΛΑΣΗ PLANET... 48 4.2.3 ΚΛΑΣΗ DROID... 49 4.2.4 ΚΛΑΣΗ SPEECHBUBBLE... 50 4.2.5 ΚΛΑΣΗ HEALTHBAR... 51 4.2.6 ΚΛΑΣΗ TEXT... 52 4.3 ΜΕΘΟΔΟΙ... 53 4.3.1 CHECKAREA... 53 4.3.2 GENERATEBINARYNUMBER... 53 X ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS'

ΠΕΡΙΕΧΟΜΕΝΑ 4.3.3 GETDECIMALANSWER... 54 4.3.4 CHECKTOOMANY... 54 4.3.5 ADJUSTMINMAXBIN... 54 4.3.6 VIEWSCORES... 55 4.3.7 UPDATESCORES... 55 4.4 Η ΠΟΡΕΙΑ ΤΟΥ ΠΑΙΧΝΙΔΟΥ ΣΕ ΣΤΑΔΙΑ (STAGES)... 56 4.4.1 ΣΤΑΔΙΟ 0... 57 4.4.2 ΣΤΑΔΙΟ 1... 58 4.4.3 ΣΤΑΔΙΟ 2... 61 4.4.4 ΣΤΑΔΙΟ 3... 62 4.4.5 ΣΤΑΔΙΟ 4... 63 4.4.6 ΣΤΑΔΙΟ 5... 64 4.4.7 ΣΤΑΔΙΟ 6... 65 4.4.8 ΣΤΑΔΙΟ 7... 65 ΚΕΦΑΛΑΙΟ 5: ΣΥΜΠΕΡΑΣΜΑΤΑ... 67 ΠΑΡΑΡΤΗΜΑ I: ΑΝΑΦΟΡΕΣ... 71 ΠΑΡΑΡΤΗΜΑ II: ΑΚΡΩΝΥΜΑ... 77 ΠΑΡΑΡΤΗΜΑ III: ΓΛΩΣΣΑΡΙΟ... 81 ΠΑΡΑΡΤΗΜΑ IV: ΕΥΡΕΤΗΡΙΟ... 85 ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS' XI

Κ Ε Φ Α Λ Α Ι Ο 1 : Ε Ι Σ Α Γ Ω Γ Η

ΚΕΦΑΛΑΙΟ 1: ΕΙΣΑΓΩΓΗ ΕΙΣΑΓΩΓΗ Αντικείμενο της παρούσας εργασίας είναι η παιχνιδοκεντρική μάθηση και η υλοποίηση εκπαιδευτικών παιχνιδιών. Η εργασία δομείται σε κεφάλαια ως εξής: Στο Κεφάλαιο 2 περιγράφονται οι έννοιες της παιχνιδοκεντρικής μάθησης και των εκπαιδευτικών παιχνιδιών. Στο Κεφάλαιο 3 αναλύεται η γλώσσα Python και η βιβλιοθήκη Pygame. Στο Κεφάλαιο 4 γίνεται εμβάθυνση στο σενάριο και τον κώδικα του παιχνιδιού «Binary Droids». Στο Παράρτημα I παρουσιάζονται η βιβλιογραφία και οι δικτυακοί τόποι που αναφέρονται στην εργασία. Στο Παράρτημα IΙ παρουσιάζονται τα ακρωνύμια τα οποία χρησιμοποιούνται σε αυτή την εργασία για την διευκόλυνση του αναγνώστη. Στο Παράρτημα IIΙ παρουσιάζεται το γλωσσάριο ξενικών όρων οι οποίοι χρησιμοποιούνται σε αυτή την εργασία για την διευκόλυνση του αναγνώστη. Στο Παράρτημα IV παρουσιάζεται το ευρετήριο των όρων οι οποίοι χρησιμοποιούνται σε αυτή την εργασία για την διευκόλυνση του αναγνώστη. ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS' 15

Κ Ε Φ Α Λ Α Ι Ο 2 : Ε Κ Π Α Ι Δ Ε Υ Τ Ι Κ Α Π Α Ι Χ Ν Ι Δ Ι Α Κ Α Ι Π Α Ι Χ Ν Ι Δ Ο Κ Ε Ν Τ Ρ Ι Κ Η Μ Α Θ Η Σ Η

ΚΕΦΑΛΑΙΟ 2: ΕΚΠΑΙΔΕΥΤΙΚΑ ΠΑΙΧΝΙΔΙΑ ΚΑΙ ΠΑΙΧΝΙΔΟΚΕΝΤΡΙΚΗ ΜΑΘΗΣΗ ΕΚΠΑΙΔΕΥΤΙΚΑ ΠΑΙΧΝΙΔΙΑ ΚΑΙ ΠΑΙΧΝΙΔΟΚΕΝΤΡΙΚΗ ΜΑΘΗΣΗ Η ραγδαία ανάπτυξη της ψηφιακής τεχνολογίας στις μέρες μας, έχει κάνει τα ψηφιακά παιχνίδια ιδιαίτερα προσιτά, σε πολύ κόσμο και σε πολλές διαφορετικές πλατφόρμες. Αυτή η διείσδυση των ψηφιακών παιχνιδιών στην καθημερινότητά μας, έχει επηρεάσει και τομείς όπως η εκπαίδευση. Χρησιμοποιώντας την ψηφιακή τεχνολογία, τα ψηφιακά παιχνίδια και τεχνικές που βασίζονται πάνω σε αυτά, οι διαδικασίες της εκπαίδευσης και της μάθησης έχουν αλλάξει δραματικά. Η μάθηση πλέον δεν είναι η κλασική διαδικασία που ήταν παλιότερα, ενώ τα εργαλεία που χρησιμοποιούνται δεν είναι μόνο τα βιβλία. Για να χρησιμοποιηθεί ένα παιχνίδι αποτελεσματικά σε μια διαδικασία μάθησης, είτε είναι ψηφιακό είτε όχι, πρέπει να συνδυάζει μαθησιακά στοιχεία αλλά ταυτόχρονα και όλα αυτά τα χαρακτηριστικά που κάνουν ένα παιχνίδι ενδιαφέρον και διασκεδαστικό. Αν το παιχνίδι δεν είναι αρκετά διασκεδαστικό και δε βάζει το μαθητή σε μια «λειτουργία» ανταγωνισμού, είτε με τον εαυτό του είτε με άλλους, τότε η γνώση δεν εμπεδώνεται με την παραστατικότητα που μπορεί ένα καλό παιχνίδι να προσφέρει. 2.1 ΨΗΦΙΑΚΑ ΠΑΙΧΝΙΔΙΑ Οι Alessi και Trolip όρισαν το παιχνίδι ως «μια δομημένη ή ημιδομημένη δραστηριότητα ανταγωνιστικού χαρακτήρα, ατομική ή ομαδική, που γίνεται για ψυχαγωγικούς σκοπούς ακολουθώντας ορισμένους κανόνες για την επίτευξη κάποιου στόχου, ώστε να ανακηρυχθεί ένας η περισσότεροι νικητές». [2] Ως ψηφιακό παιχνίδι ορίζεται ένα παιχνίδι που παίζεται σε σύγχρονες ψηφιακές πλατφόρμες. Οι πλατφόρμες αυτές μπορεί να είναι: Οι γνωστές παιχνιδομηχανές τελευταίας τεχνολογίας: PlayStation και το φορητό του ανάλογο, το PSP (PlayStation Portable), Xbox, Wii, Nintendo. Υπολογιστές, όπου ο παίκτης μπορεί να παίξει ένα παιχνίδι είτε σε μορφή standalone εφαρμογής, είτε συνδεδεμένος σε κάποιο δίκτυο με άλλους παίκτες, οι οποίοι έχουν ρόλους συμμάχων και αντιπάλων. Φορητές συσκευές, όπως tablets και κινητά. Τα ψηφιακά παιχνίδια σε τέτοιου είδους συσκευές έχουν γίνει ιδιαίτερα δημοφιλή τα τελευταία χρόνια, με την παρουσία υπηρεσιών όπως το App Store της Apple και το Play Store της Google, όπου οι χρήστες μπορούν να επιλέξουν ανάμεσα σε εκατοντάδες δωρεάν παιχνίδια. [10] 2.1.1 Ο όρος gameplay Ένας όρος που χρησιμοποιείται στο χώρο των παιχνιδιών είναι το «gameplay». Με τον όρο «gameplay» εννοείται ο τρόπος με τον οποίο οι παίκτες αλληλεπιδρούν με το ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS' 19

ΣΤΡΑΝΤΖΗ ΑΝΤΩΝΙΑ παιχνίδι που παίζουν. Αρχικά ο όρος ήταν συνδεδεμένος κυρίως με ψηφιακά παιχνίδια αλλά πλέον χρησιμοποιείται και για παραδοσιακά παιχνίδια. Υπάρχουν κάποιες παραλλαγές στην ερμηνεία του gameplay. Οι Rollings και Adams υποστηρίζουν ότι «το gameplay αναφέρεται στο συνδυασμό των προκλήσεων που συναντά ο χρήστης στο παιχνίδι και των ενεργειών που εφαρμόζει ώστε να ανταποκριθεί σε αυτές». [6] Ο Juul δίνει τον ορισμό «η καθαρή διάδραση του παιχνιδιού». [3] Ο Rouse αναφέρει ότι το gameplay είναι «το αποτέλεσμα της συσχέτισης εισόδου και εξόδου μέσω επιλογών του χρήστη, και αποκρίσεων του παιχνιδιού». [7] Ο όρος gameplay έχει δεχτεί αρνητική κριτική γιατί δεν ορίζει κάποιο συγκεκριμένο χαρακτηριστικό ή κατάσταση του παιχνιδιού, καθώς μπορεί να αναφέρεται στη γενικότερη ποιότητα του παιχνιδιού, στο επίπεδο δυσκολίας του ή ακόμα και στη δυνατότητα έξαψης του ενδιαφέροντος στους παίκτες. Οι Rollings και Adams υποστηρίζουν πως δεν υπάρχει καθολικά αποδεκτός όρος για το gameplay, καθώς αποτελεί τη συνισταμένη διάφορων στοιχείων του παιχνιδιού. Για αυτό το λόγο, το gameplay εξετάζεται πάνω σε συγκεκριμένα παραδείγματα παιχνιδιών, ώστε να αποφανθεί κατά πόσο καλά εφαρμόζεται σε κάθε παιχνίδι η έννοια αυτή. [10] 2.1.2 Κατηγορίες παιχνιδιών Με βάση το gameplay τους, τα παιχνίδια χωρίζονται συνήθως στις εξής κατηγορίες: Παιχνίδια δράσης: ο παίκτης ελέγχει το avatar του πρωταγωνιστή, μέσω του οποίου συλλέγει αντικείμενα, αποφεύγει εμπόδια και χρησιμοποιεί διάφορες τεχνικές για να μάχεται εναντίον εχθρών. Παιχνίδια στρατηγικής: ο παίκτης εφαρμόζει μία γενική στρατηγική ώστε να φτάσει τους στόχους του. Παίζει μεγάλο ρόλο η δυνατότητα λήψης κατάλληλων αποφάσεων κατά τη διάρκεια του παιχνιδιού. Παιχνίδια άθλησης: λειτουργούν σαν περιβάλλοντα προσομοίωσης ενός πραγματικού αθλητικού παιχνιδιού. Σε προχωρημένα παιχνίδια, όπως Pro Evolution, NBA 2K κλπ., υπάρχουν ετησίως νέες εκδόσεις, έτσι ώστε τα παιχνίδια αυτά να συμβαδίζουν με τον πραγματικό κόσμο όσο το δυνατόν περισσότερο. Παιχνίδια περιπέτειας: τα παιχνίδια αυτά έχουν άμεση σχέση με αφηγηματικά μέσα όπως οι κινηματογραφικές ταινίες. Μέσα στα πλαίσια του παιχνιδιού, ο παίκτης υιοθετεί το ρόλο του πρωταγωνιστή και παίρνει μέρος σε μια διαδραστική ιστορία, μέσα στην οποία πρέπει να εξερευνήσει και να λύσει διάφορα είδη προβλημάτων που μπορούν να προκύψουν. Παιχνίδια προσομοίωσης: αναπαριστούν διάφορες καταστάσεις και δραστηριότητες που συμβαίνουν στον πραγματικό κόσμο. Ένα ιδιαίτερα δημοφιλές παιχνίδι προσομοίωσης είναι το Sims. Παιχνίδια ρόλου: οι παίκτες υιοθετούν ρόλους χαρακτήρων μέσα στο παιχνίδι, και έχουν την ευθύνη για την πρόοδο αυτού του χαρακτήρα μέσω δομημένων επιλογών. Παιχνίδια εξάσκησης ικανοτήτων και επιτραπέζια: είναι παιχνίδια στα οποία έχουν μεγάλη σημασία οι σωματικές ή διανοητικές ικανότητες του παίκτη, έτσι ώστε να φτάσει σε έναν τελικό στόχο. 20 ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS'

ΚΕΦΑΛΑΙΟ 2: ΕΚΠΑΙΔΕΥΤΙΚΑ ΠΑΙΧΝΙΔΙΑ ΚΑΙ ΠΑΙΧΝΙΔΟΚΕΝΤΡΙΚΗ ΜΑΘΗΣΗ Παιχνίδια τύχης: η έκβαση του παιχνιδιού καθορίζεται από την τύχη. Το πιο κλασσικό παιχνίδι τύχης είναι τα ζάρια. [10] 2.1.3 Ανάπτυξη ψηφιακών παιχνιδιών 2.1.3.1 Αρχιτεκτονική Η αρχιτεκτονική ενός ψηφιακού παιχνιδιού είναι βασική για τη διεκπεραίωση των επιμέρους εργασιών που θα εκτελεί. Σύμφωνα με τον McShaffry η αρχιτεκτονική ενός παιχνιδιού περιλαμβάνει πάντα τα εξής τρία τμήματα: Εφαρμογή: υλοποιεί τις βασικές λειτουργίες του παιχνιδιού. Το τμήμα αυτό περιλαμβάνει τη διαχείριση των περιφερειακών μονάδων εισόδου, της μνήμης, των αρχείων και του χρόνου εκτέλεσης του παιχνιδιού. Επίσης περιλαμβάνει την επικοινωνία με το λειτουργικό σύστημα και τη διαχείριση της εξέλιξης του παιχνιδιού. Λογική: υλοποιεί τους κανόνες εξέλιξης και διάδρασης του παιχνιδιού με τον εξωτερικό κόσμο. Οι κανόνες αυτοί αφορούν την κατάσταση του παιχνιδιού, τις δομές δεδομένων καθώς και τη βάση δεδομένων για τα αντικείμενα, τους νόμους φυσικής που ισχύουν ανάλογα με το σενάριο του παιχνιδιού και τη διαχείριση των γεγονότων στον κόσμο του παιχνιδιού και από τη μεριά του χρήστη. Εκτός από αυτά, μέρος του τμήματος της λογικής είναι η διαχείριση των προγραμματιστικών διεργασιών και ο διερμηνέας των εντολών του χρήστη από τη διεπαφή στο χαμηλότερο επίπεδο του προγραμματιστικού κώδικα. Οπτική: υλοποιεί την παρουσίαση του παιχνιδιού με χρήση (συνήθως) πολλαπλών οπτικών ανάλογα με τις ανάγκες εξέλιξης του παιχνιδιού. Μπορεί να διακρίνεται σε: «Human View», δηλαδή οι οπτικές θέασης του παιχνιδιού που αφορούν τον άνθρωπο-παίκτη, και «AI Agent View», που αφορούν αντίστοιχα το τμήμα τεχνητής νοημοσύνης του παιχνιδιού. Το τμήμα του «Human View» αυτό περιλαμβάνει τα εξής μικρότερα τμήματα: την οθόνη, τον ήχο, το διερμηνέα της εισόδου διεπαφής χρήστη, τη διαχείριση εργασιών που αφορούν την οπτική και τις επιλογές που έχει ο χρήστης για να ρυθμίσει τις λειτουργίες του παιχνιδιού με βάση τις προτιμήσεις του. Το τμήμα «AI (Artificial Intelligence) Agent View» περιλαμβάνει διερμηνέα ερεθισμάτων, για να ερμηνεύει οποιαδήποτε πληροφορία συμβάλλει στην εξέλιξη του παιχνιδιού, τμήμα αποφάσεων, όπου αποφασίζεται ποια θα είναι η απόκριση σε κάθε ερέθισμα, διαχείριση εργασιών για την AI οπτική και τις επιλογές που έχει ο χρήστης για να ρυθμίσει τη λειτουργία του AI τμήματος. [8][10] 2.1.3.2 Ομάδα ανάπτυξης Σε μεγάλα παιχνίδια υψηλών απαιτήσεων, πρέπει να συγκροτηθεί μια ομάδα ανθρώπων από διάφορες ειδικότητες, έτσι ώστε να αναπτυχθεί το παιχνίδι αποτελεσματικά. Οι ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS' 21

ΣΤΡΑΝΤΖΗ ΑΝΤΩΝΙΑ τέσσερις βασικές ειδικότητες που πρέπει να εμπλακούν στη διαδικασία της ανάπτυξης είναι: Σεναριογράφος/Ψυχολόγος: ο άνθρωπος της ομάδας με αυτήν την ειδικότητα ασχολείται με τη δημιουργία του σεναρίου του παιχνιδιού και τις διάφορες εκδοχές που μπορεί να πάρει αυτό το σενάριο. Οι γνώσεις ψυχολογίας είναι απαραίτητες ώστε το σενάριο να είναι ενδιαφέρον, διασκεδαστικό και να προκαλεί συναισθήματα και σκέψεις. Σχεδιαστής/Αναλυτής: ο υπεύθυνος για τη μετατροπή του σεναρίου σε gameplay. Ο ρόλος περιλαμβάνει το σχεδιασμό των οθονών (storyboards) και την ανάλυση των τεχνικών θεμάτων που μπορούν να προκύψουν βάσει του σεναρίου. Προγραμματιστής: ο υπεύθυνος για τη συγγραφή του κώδικα με βάση τις οδηγίες του σχεδιαστή/αναλυτή. Η γλώσσα C++ είναι το βασικό εργαλείο του προγραμματιστή, αλλά συνήθως μπορούν να χρησιμοποιηθούν και άλλες γλώσσες για τη συγγραφή επιμέρους κομματιών. Ειδικός πολυμέσων: είναι αυτός ο οποίος έχει την ευθύνη όλων των πολυμέσων που θα συμμετέχουν στο παιχνίδι, όπως ήχοι, γραφικά, animation και βίντεο. [10] 2.1.3.3 Εργαλεία συγγραφής παιχνιδιών Στις μέρες μας δεν είναι απαραίτητη η καλή γνώση προγραμματισμού, έτσι ώστε κάποιος να φτιάξει ένα παιχνίδι. Με συγκεκριμένα εργαλεία και κάποιες βασικές προγραμματιστικές γνώσεις, ο χρήστης μπορεί να φτιάξει το δικό του παιχνίδι. Τα εργαλεία αυτά είναι περιβάλλοντα που δίνουν τη δυνατότητα στο χρήστη να δημιουργήσει ένα παιχνίδι χρησιμοποιώντας ένα ενδιάμεσο επίπεδου προγραμματισμού, μέσω μιας διεπαφής. Σε αυτά τα περιβάλλοντα ο χρήστης μπορεί να δημιουργήσει εικονικούς κόσμους και οντότητες, τη λειτουργία και συμπεριφορά των οποίων μπορεί να ρυθμίσει με σχετικά απλές προγραμματιστικές τεχνικές. Με αυτές τις τεχνικές μπορεί επίσης να ρυθμίσει την εξέλιξη και τους κανόνες του παιχνιδιού. [10] Κάποια από τα πιο γνωστά εργαλεία συγγραφής παιχνιδιών είναι: Kodu (Microsoft) GameMaker (YoYo Games) Unity (Unity Technologies) Scratch (MIT, Media Lab) 22 ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS'

ΚΕΦΑΛΑΙΟ 2: ΕΚΠΑΙΔΕΥΤΙΚΑ ΠΑΙΧΝΙΔΙΑ ΚΑΙ ΠΑΙΧΝΙΔΟΚΕΝΤΡΙΚΗ ΜΑΘΗΣΗ 2.2 ΕΚΠΑΙΔΕΥΤΙΚΑ ΠΑΙΧΝΙΔΙΑ Ένα εκπαιδευτικό παιχνίδι (ή παιχνίδι μάθησης) ορίζεται ως «μια οργανωμένη δραστηριότητα με μορφή παιχνιδιού που αποσκοπεί στο να προσφέρει συνδυασμό ψυχαγωγίας και μάθησης, δηλαδή στοχεύει σαφώς στην επίτευξη κάποιων μαθησιακών στόχων». [10] Πιο συγκεκριμένα, τα ψηφιακά παιχνίδια μάθησης μπορούν να οριστούν, σύμφωνα με τους Michael και Chen, ως «λογισμικό τύπου ψηφιακού παιχνιδιού που έχει όμως σχεδιαστεί ώστε να υποστηρίξει συγκεκριμένους εκπαιδευτικούς στόχους». [9] Ένα παιχνίδι μάθησης είναι ένα ψηφιακό παιχνίδι τα δύο εξής χαρακτηριστικά: Σενάριο παιχνιδιού: το γενικό σενάριο του παιχνιδιού που εμπλέκει το μαθητήπαίκτη δημιουργικά, του προκαλεί το ενδιαφέρον και τον διασκεδάζει. Συνηθισμένα σενάρια είναι ο παίκτης που πρέπει να αποφύγει εχθρούς ή να συγκρουστεί μαζί τους, να συλλέξει αντικείμενα, να μαζέψει πόντους κλπ.. Μηχανισμός μάθησης: οι τεχνικές μάθησης που χρησιμοποιούνται στα πλαίσια του παιχνιδιού. Πρόκειται για κάθε μηχανισμό που ενεργοποιεί γνωστικές διεργασίες του μαθητή-παίκτη ώστε να επεξεργαστεί όλες τις απαραίτητες πληροφορίες για την επίτευξη των στόχων του. Παράδειγμα μηχανισμού μάθησης είναι η εφαρμογή κάποιας συγκεκριμένης στρατηγικής ώστε ο παίκτης να μπορεί να περιηγηθεί μέσα στο παιχνίδι και να προχωρήσει στα επόμενα επίπεδα. [10] 2.2.1 Βασικοί παράγοντες δομής και οργάνωσης παιχνιδιών Οι Alessi και Trolip περιγράφουν τους εξής παράγοντες που αφορούν τη δομή και οργάνωση ενός παιχνιδιού. Στόχος-σκοπός: ο στόχος που πρέπει να επιτευχθεί από τον παίκτη, και ο οποίος πρέπει να δηλώνεται εξ αρχής ή να συνάγεται στην πορεία του παιχνιδιού. Παραδείγματα είναι το κέρδισμα συγκεκριμένων πόντων, η άφιξη σε κάποιον συγκεκριμένο προορισμό, η εύρεση κάποιου αντικειμένου κ.α.. Κανόνες: οι οποίοι ορίζουν τις ενέργειες που επιτρέπονται στον παίκτη, καθώς οι περιορισμού που μπορεί να υπάρχουν. Ανταγωνισμός: η οντότητα την οποία πρέπει να ανταγωνιστεί ο παίκτης. Η οντότητα αυτή μπορεί να είναι ο εαυτός του, ο χρόνος, κάποιος άλλο παίκτης ή και ο υπολογιστής. Δυσκολία-πρόκληση: η δυσκολία που πρέπει να υπερνικήσει ο παίκτης για να φτάσει στο στόχο του. Το επίπεδο δυσκολίας συνήθως είναι προσαρμόσιμο ώστε ο παίκτης να παίζει το παιχνίδι που είναι συμβατό με τις ικανότητες του. Φαντασία: κατά πόσο το παιχνίδι μοιάζει με τον πραγματικό κόσμο. Τα περισσότερα παιχνίδια στηρίζονται σε φανταστικά σενάρια που προσομοιώνουν ρεαλιστικές συνθήκες του πραγματικού κόσμου. ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS' 23

ΣΤΡΑΝΤΖΗ ΑΝΤΩΝΙΑ Παίκτες (και ρόλοι παικτών): θέματα που αφορούν τους παίκτες του παιχνιδιού και τους ρόλους που υιοθετούν μέσα σε αυτό. Θέματα όπως πόσοι παίκτες μπορούν να συμμετέχουν, αν οι ρόλοι των παικτών μπορούν να αλλάζουν ή είναι συγκεκριμένοι, αν μπορούν να σχηματιστούν ομάδες μεταξύ των παικτών, αν ο υπολογιστής αποτελεί κι εκείνος έναν παίκτη, και πως θα εμφανίζονται οι παίκτες μέσα στο παιχνίδι. Κάποιοι ειδικοί παράγοντες είναι οι εξής: Εξοπλισμός: αν χρειάζεται να χρησιμοποιηθεί ειδικός εξοπλισμός για να παιχτεί το παιχνίδι. Οδηγίες: οι γενικές οδηγίες που εμφανίζονται στην αρχή του παιχνιδιού και οι τοπικές οδηγίες που μπορεί να εμφανιστούν στην πορεία. Περιορισμοί: συγκεκριμένες ενέργειες στις οποίες δεν μπορεί να προβεί ο χρήστης. Κυρώσεις: οι ποινές που επιβάλλονται σε περίπτωση που ο παίκτης παραβεί τους κανονισμούς. Επιλογές/ρυθμίσεις: ρυθμίσεις που μπορεί να κάνει ο παίκτης στην αρχή του παιχνιδιού, όπως να επιλέξει ταχύτητα, δυσκολία κλπ. Ασφάλεια: τα παιχνίδια προσφέρουν ένα ασφαλές περιβάλλον όπου ο παίκτης μπορεί να προβεί σε ενέργειες τις οποίες δε θα πραγματοποιούσε στον πραγματικό κόσμο. Σε ένα εκπαιδευτικό παιχνίδι ο σχεδιαστής πρέπει να δημιουργήσει συνθήκες που θα ενθαρρύνουν τους παίκτες να δοκιμάσουν στρατηγικές που μπορεί να οδηγήσουν ακόμα και σε αποτυχία, αλλά έμμεσα θα οδηγήσουν στη μάθηση. [2][10] 2.2.2 Σχέση σεναρίου και παιχνιδιού μάθησης Ο μηχανισμός μάθησης πρέπει να είναι καλά ενσωματωμένος μέσα στο gameplay του παιχνιδιού, έτσι ώστε ο μαθητής να μαθαίνει όσο παίζει το παιχνίδι, χωρίς όμως αυτό να αποτελεί μια στεγνή και «βαρετή» για εκείνον διαδικασία. Η σχέση μηχανισμού μάθησης και gameplay μπορεί να χαρακτηριστεί με ένα από τα εξής, σύμφωνα με τους Alessi και Trolipp: Ενδογενής: όταν τα στοιχεία της μάθησης προωθούν την εξέλιξη του παιχνιδιού. Οι γνωστικές διεργασίες ενεργοποιούνται γιατί ο παίκτης νιώθει ότι αυτές θα τον βοηθήσουν στην επίτευξη των στόχων του, και όχι γιατί πρέπει να μάθει κάτι. Σχετική: τα στοιχεία μάθησης επηρεάζουν λογικά την πορεία του παιχνιδιού αλλά δεν είναι άρρηκτα συνδεδεμένα με το σενάριο. Παραδείγματα τέτοιων παιχνιδιών είναι τα παιχνίδια στα οποία ο παίκτης καλείται να απαντήσει μία ερώτηση έτσι ώστε να προχωρήσει σε κάποιο επίπεδο, αλλά αυτή η ερώτηση δεν έχει κάποια σχέση με το παιχνίδι. Αυθαίρετη: σε τέτοιου είδους παιχνίδια, ο μηχανισμός μάθησης είναι ξένος σε σχέση με το σενάριο του παιχνιδιού. Τέτοια παιχνίδια είναι συνήθως αυτά με 24 ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS'

ΚΕΦΑΛΑΙΟ 2: ΕΚΠΑΙΔΕΥΤΙΚΑ ΠΑΙΧΝΙΔΙΑ ΚΑΙ ΠΑΙΧΝΙΔΟΚΕΝΤΡΙΚΗ ΜΑΘΗΣΗ κλειστού τύπου ερωτήσεις, στις οποίες η σωστή απάντηση συνοδεύεται από μία θετική ενίσχυση (π.χ. πόντους στο σκορ). [2][10] ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS' 25

ΣΤΡΑΝΤΖΗ ΑΝΤΩΝΙΑ 2.3 ΠΑΙΧΝΙΔΟΚΕΝΤΡΙΚΗ ΜΑΘΗΣΗ Η τάση που υπάρχει στις ημέρες μας για τη διερεύνηση και την αξιοποίηση της φιλοσοφίας και της πρακτικής του ψηφιακού παιχνιδιού στην εκπαίδευση, χαρακτηρίζεται ως παιχνιδοκεντρική μάθηση. Η παιχνιδοκεντρική μάθηση στοχεύει στη σχεδίαση, ανάπτυξη, εφαρμογή και αξιολόγηση ψηφιακών παιχνιδιών που έχουν συγκεκριμένο μαθησιακό στόχο. Γενικά στην παιχνιδοκεντρική μάθηση πρέπει να δημιουργούνται μαθησιακές εμπειρίες που θα οδηγήσουν στη σωστή εμπέδωση εννοιών του εκάστοτε γνωστικού πεδίου. Οι μαθησιακές όμως αυτές εμπειρίες πρέπει να προσφέρουν ταυτόχρονα ψυχαγωγία και την ικανοποίηση που προσφέρει ένα καλά σχεδιασμένο παιχνίδι. Για να αποκτήσει μια μαθησιακή εμπειρία ψυχαγωγικό χαρακτήρα, «επιστρατεύονται» οι καινοτόμες ψηφιακές τεχνολογίες, όπως οι φορητές συσκευές, το 3D animation, τα εργαλεία Web 2.0, η ρομποτική και οι απτικές διεπαφές. [10] 2.3.1 Το μοντέλο Prensky O Prensky ανέπτυξε ένα ολοκληρωμένο μοντέλο σχετικά με τις ευκαιρίες μάθησης που μπορεί να προσφέρει ένα παιχνίδι. Στο μοντέλο αυτό διακρίνονται 5 επίπεδα: Πώς: Πως παίζεται το παιχνίδι, δηλαδή ποιος είναι ο τρόπος παιχνιδιού (gameplay). Ο παίκτης πρέπει να μάθει τις λειτουργίες του παιχνιδιού, όπως πως λειτουργούν οι χαρακτήρες του, πως λειτουργούν τα αντικείμενα, πως μπορεί να αλληλεπιδράσει ο παίκτης με το παιχνίδι χρησιμοποιώντας τις συσκευές εισόδου, πώς να αντιμετωπίσει εχθρούς άλλες ανάλογες ερωτήσεις που θα κάνουν τον παίκτη να κατανοήσει τον τρόπο λειτουργίας του παιχνιδιού. Τι: Τι επιτρέπεται και τι μπορεί να κάνει ο παίκτης, εν ολίγοις οι κανόνες του παιχνιδιού. Τι είναι επιτρεπτό να γίνει αλλά και τι απαγορεύεται, καθώς και οι συνέπειες κάποιας παράβασης. Γιατί: Γιατί να κάνει κάτι ο παίκτης; Αφορά τους λόγους για τους οποίους ακολουθείται κάποια συγκεκριμένη στρατηγική από τον παίκτη, και όχι κάποια άλλη. Η στρατηγική σχετίζεται με τη βαθύτερη κατανόηση για το πώς θα κερδίσει το παιχνίδι και μπορεί να είναι ισχυρό στοιχείο μάθησης σε παιχνίδια που απαιτούν εμβάθυνση και ανάλυση σε θέματα στρατηγικής (π.χ. σκάκι). Που: Που εξελίσσεται το παιχνίδι; Ποιος είναι ο κόσμος στον οποίο εξελίσσεται και ποιοι «νόμοι» φυσικοί και μη τον διέπουν, ποιες είναι οι ειδικές συνθήκες του κόσμου αυτού και ποια η πολιτιστική του ταυτότητα. Με τα σημερινά τεχνολογικά εργαλεία, η δημιουργία των «κόσμων» γίνεται ιδιαίτερα παραστατικά και με μεγάλη λεπτομέρεια κάνοντας τον παίκτη να εισχωρήσει ακόμα περισσότερο στον κόσμο αυτό, εντείνοντας έτσι και τη διαδικασία της μάθησης. Πότε/Εάν: Πότε πρέπει ο παίκτης να εφαρμόσει κάποια στρατηγική και αν είναι ηθικά σωστό να το κάνει. Το επίπεδο αυτό σχετίζεται με τη λήψη αποφάσεων από τη μεριά του παίκτη με βάση τις ηθικές αξίες που αναπτύσσει παίζοντας το παιχνίδι ή και αυτές που έχει ήδη σαν άνθρωπος. Εδώ η μάθηση ενισχύεται και 26 ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS'

ΚΕΦΑΛΑΙΟ 2: ΕΚΠΑΙΔΕΥΤΙΚΑ ΠΑΙΧΝΙΔΙΑ ΚΑΙ ΠΑΙΧΝΙΔΟΚΕΝΤΡΙΚΗ ΜΑΘΗΣΗ από γραφικά περιβάλλοντα και πολυμέσα τα οποία προκαλούν συναισθήματα στον παίκτη. Το μοντέλο του Prensky είναι ιδιαίτερα χρήσιμο στη σχεδίαση εκπαιδευτικών παιχνιδιών γιατί διευκολύνει τη σύνδεση του παιχνιδιού με τη μάθηση. Με τα 5 επίπεδα του μοντέλου το παιχνίδι αναλύεται σε επιμέρους άξονες και αποσαφηνίζονται ειδικότερες λειτουργίες του. Ο σχεδιαστής μπορεί να σχεδιάσει λειτουργίες και στοιχεία μάθησης για αυτούς τους ειδικότερους άξονες, κάνοντας τη διαδικασία της μάθησης πιο ομοιόμορφη. [4][5][10] 2.3.2 Εμπλοκή των μαθητών στο παιχνίδι Η αξιοποίηση των εκπαιδευτικών παιχνιδιών εξαρτάται από τον τρόπο με τον οποίο οι μαθητές εμπλέκονται σε αυτό και το ρόλο που παίρνουν στη διαδικασία. Υπάρχουν τρεις διαφορετικές τεχνικές: Ο μαθητής έχει το ρόλο του παίκτη σε ένα έτοιμο παιχνίδι. Ο εκπαιδευτικός επιλέγει ένα έτοιμο παιχνίδι το οποίο θεωρεί πως έχει εκπαιδευτική αξία για τους μαθητές του. Τα εμπορικά παιχνίδια είναι επαγγελματικά σχεδιασμένα και προσφέρουν στον παίκτη μία ολοκληρωτική εμπειρία. Επίσης δεν πέφτει μεγάλο βάρος στον εκπαιδευτικό από άποψη σχεδίασης και μπορεί να εστιάσει στη διδασκαλία του υλικού που έχει στα χέρια του. Το μειονέκτημα αυτής της κατάστασης είναι ότι το έτοιμο παιχνίδι μπορεί να μην ανταποκρίνεται πλήρως στους μαθησιακούς στόχους που θέτονται. Ο μαθητής προγραμματίζει μερικώς ένα μισοέτοιμο παιχνίδι. Ο εκπαιδευτικός παρέχει στους μαθητές ένα παιχνίδι με μια συγκεκριμένη αρχιτεκτονική στο οποίο υλοποιούνται κάποιες βασικές λειτουργίες. Ο μαθητής μπορεί να ρυθμίσει διάφορες παραμέτρους του παιχνιδιού. Μέσω αυτής της τεχνικής ο μαθητής διεισδύει καλύτερα στα ενδότερα του παιχνιδιού και προωθείται η διερευνητική μάθηση. Ο εκπαιδευτικός πρέπει να έχει αρκετή εμπειρία στην ανάπτυξη παιχνιδιών και πρέπει να αφιερώσει χρόνο. Ο μαθητής αναπτύσσει ένα δικό του παιχνίδι. Οι μαθητές χρησιμοποιώντας κάποιο από τα εργαλεία ανάπτυξης παιχνιδιών που έχουν στη διάθεση τους, και είτε ατομικά είτε σε ομάδες, μετατρέπουν ένα σενάριο παιχνιδιού σε εκτελέσιμο παιχνίδι. Αυτή η τεχνική μπορεί να κρατήσει πολύ καιρό, έως και πολλές βδομάδες, και οι μαθητές χρειάζονται σημαντική υποστήριξη από τον εκπαιδευτικό ο οποίος πρέπει να κατέχει πολύ καλά το αντικείμενο και από άποψη σχεδίασης και από άποψη προγραμματισμού. [10] Οι τεχνικές αυτές θα μπορούσαν ενδεχομένως να ανατεθούν σε μαθητές με βάση την ηλικία. Μαθητές μικρότερης ηλικίας δεν κατέχουν τις γνώσεις που πρέπει για να ασχοληθούν με τον προγραμματισμό, έστω και σε πολύ εύκολο επίπεδο. Για αυτό η πρώτη τεχνική είναι μία καλή λύση για εκείνους. Η δεύτερη και η τρίτη τεχνική μπορούν να εφαρμοστούν σε μαθητές μεγαλύτερης ηλικίας με πιθανότατα καλύτερες ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS' 27

ΣΤΡΑΝΤΖΗ ΑΝΤΩΝΙΑ γνώσεις προγραμματισμού, και υπό την επίβλεψη εκπαιδευτικών εξοικειωμένων στον τομέα. 28 ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS'

Κ Ε Φ Α Λ Α Ι Ο 3 : Η Γ ΛΩΣ Σ Α P Y T H O N Κ Α Ι Η Β Ι Β Λ Ι Ο Θ Η Κ Η P Y G A M E

ΚΕΦΑΛΑΙΟ 3: Η ΓΛΩΣΣΑ PYTHON ΚΑΙ Η ΒΙΒΛΙΟΘΗΚΗ PYGAME Η ΓΛΩΣΣΑ PYTHON ΚΑΙ Η ΒΙΒΛΙΟΘΗΚΗ PYGAME Το παιχνίδι με τίτλο «Binary Droids» είναι υλοποιημένο σε γλώσσα Python με επιπλέον χρήση των μεθόδων της βιβλιοθήκης Pygame, για τη δημιουργία των γραφικών του παιχνιδιού. 3.1 Η ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ PYTHON Η Python είναι μία γλώσσα προγραμματισμού υψηλού επιπέδου. Άλλες γνωστές γλώσσες υψηλού επιπέδου είναι οι C, C++ και Java. Η αναγνωσιμότητα του κώδικα της και η σύνταξη της κάνουν την Python μια σημαντική γλώσσα ανάπτυξης προγραμμάτων καθώς επιτρέπει την υλοποίηση εννοιών με λιγότερες γραμμές κώδικα σε σχέση με άλλες γλώσσες. Ο Mark Lutz, στο βιβλίο του «Learning Python (5 th Edition)», παραθέτει τις βασικές απόψεις που έχουν προκύψει για την Python, από την εμπειρία του με χρήστες και μαθητές της γλώσσας: Ποιότητα λογισμικού: ο κώδικας της Python χαρακτηρίζεται από αναγνωσιμότητα και συνοχή. Αυτό την κάνει αυτομάτως μια πολύ δυνατή γλώσσα γιατί ο κώδικά της μπορεί να επαναχρησιμοποιηθεί και να συντηρηθεί πολύ πιο εύκολα σε σχέση με άλλες γλώσσες. Επίσης, υποστηρίζει πιο δύσκολες τεχνικές ανάπτυξης λογισμικού όπως την αντικειμενοστρέφεια και το συναρτησιακό προγραμματισμό. Παραγωγικότητα ως προς την ανάπτυξη: η Python είναι μία ιδιαίτερα ωφέλιμη γλώσσα διότι ο κώδικας της μπορεί να φτάσει το 1/3 ή ακόμα και το 1/5 του αντίστοιχου κώδικα σε γλώσσες όπως η Java και η C++. Αυτό σημαίνει λιγότερη πληκτρολόγηση και λιγότερος κώδικας για αποσφαλμάτωση και συντήρηση. Επιπροσθέτως, ο κώδικας Python «τρέχει» χωρίς τις χρονοβόρες διαδικασίες μεταγλώττισης που χρησιμοποιούν άλλα εργαλεία. Φορητότητα των προγραμμάτων: τα περισσότερα προγράμματα Python μπορούν να εκτελεστούν αμετάβλητα σε όλες τις γνωστές υπολογιστικές πλατφόρμες. Για παράδειγμα η μεταφορά κώδικα από Linux σε Windows είναι μια απλή διαδικασία αντιγραφής κι επικόλλησης μεταξύ των συστημάτων. Βιβλιοθήκες υποστήριξης: η Python συνοδεύεται από μια πολύ μεγάλη συλλογή προεγκατεστημένων και φορητών λειτουργιών οι οποίες αποτελούν τη standard library (SDL). Η βιβλιοθήκη αυτή υποστηρίζει διάφορες προγραμματιστικές διεργασίες. Εκτός όμως από τις προεγκατεστημένες επιλογές, υπάρχουν και third-party εφαρμογές που μπορούν να χρησιμοποιηθούν με την Python οι οποίες υποστηρίζουν λειτουργίες όπως κατασκευή ιστοσελίδων, αριθμητικό προγραμματισμό, ανάπτυξη παιχνιδιών κ.α.. Ενσωμάτωση: ο κώδικας σε Python μπορεί εύκολα να επικοινωνεί με άλλα μέρη μιας εφαρμογής μέσω μηχανισμών ενσωμάτωσης. Αυτοί οι μηχανισμοί επιτρέπουν στην Python να χρησιμοποιείται ως ένα εργαλείο προσαρμογής και ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS' 31

ΣΤΡΑΝΤΖΗ ΑΝΤΩΝΙΑ επέκτασης, να καλείται από προγράμματα γραμμένα σε άλλες γλώσσες και να επικοινωνήσει με συγκεκριμένα frameworks. Ικανοποίηση: η ευκολία της χρήσης της και των εργαλείων της κάνουν το προγραμματισμό στην Python περισσότερο χαρά παρά αγγαρεία. Αν και πιο υποκειμενικό ως άποψη, η ικανοποίηση μπορεί να φέρει μεγάλη παραγωγικότητα στον προγραμματιστή. Πέρα από αυτές τις απόψεις, ο Lutz δίνει τον εξής ορισμό: «η Python είναι μια γλώσσα προγραμματισμού γενικής χρήσης, η οποία εμπλέκει το διαδικασιακό, το συναρτησιακό και τον αντικειμενοστρεφή προγραμματισμό». [1] Η Python αναπτύσσεται ως ανοιχτό λογισμικό μέσω του μη κερδοσκοπικού οργανισμού Python Software Foundation. Οφείλει την ονομασία της στο γνωστό βρετανικό κωμικό γκρουπ Monty Python. [11] 3.1.1 Το μοντέλο εκτέλεσης Συνήθως στις γλώσσες προγραμματισμού, όταν έχουμε μια εντολή τύπου: int x = 1, τη χαρακτηρίζουμε ως «η ακέραια μεταβλητή x περιέχει την τιμή 1». Αυτό το μοντέλο δεν ισχύει στην Python. Στην Python μια εντολή της μορφής: x = 1, σημαίνει «το όνομα x συνδέεται με το αντικείμενο με τιμή 1», καθώς το αντικείμενο δημιουργείται στη δεξιά μεριά της δήλωσης. Γενικά η Python δεν υποστηρίζει μεταβλητές, με την κλασσική έννοια, αλλά αντικείμενα και συνδέσεις. Τα αντικείμενα χωρίζονται σε mutable (μεταβλητά) και immutable (αμετάβλητα). Η τιμή των mutable αντικειμένων μπορεί να αλλάξει, σε αντίθεση με τη τιμή των immutable. Οι αριθμοί, τα strings και τα tuples (ομάδες) είναι immutable αντικείμενα, ενώ τα dictionaries και οι λίστες είναι mutable. Στην πράξη φαίνεται ότι οι τιμές των αριθμών ή των strings μπορούν να αλλάξουν, αλλά στην πραγματικότητα, με την αλλαγή της τιμής, δημιουργείται ένα καινούριο αντικείμενο το οποίο συνδέεται με το όνομα του «παλιού» αντικειμένου. Το «παλιό» αντικείμενο παραμένει αμετάβλητο αλλά χωρίς να είναι συνδεδεμένο πλέον σε κάποιο όνομα. [19][20] 3.1.2 Ιστορία Ο δημιουργός της Python είναι ο Ολλανδός προγραμματιστής Guido van Rossum. Απόφοιτος του πανεπιστημίου του Amsterdam, ο Van Rossum έχει υπάρξει προγραμματιστής στην Google, ενώ από το 2013 εργάζεται στην Dropbox. Η ιδέα για τη γλώσσα ξεκίνησε τη δεκαετία του 80 και ο van Rossum ξεκίνησε την υλοποίηση της το 1989 στο Εθνικό Ινστιτούτο Έρευνας Μαθηματικών και Πληροφορικής της Ολλανδίας. Ο αρχικός σκοπός της ήταν να διαδεχθεί τη γλώσσα ABC, και να χρησιμοποιείται στο λειτουργικό σύστημα Amoeba. To 1991 είδε την πρώτη δημοσίευση του κώδικα της Python, υπό την έκδοση 0.9.0. Σε αυτό το στάδιο, η γλώσσα υποστήριζε δημιουργία κλάσεων με κληρονομικότητα, διαχείριση εξαιρέσεων, μεθόδους και τους τύπους δεδομένων list, dict, str κ.ο.κ.. [11][12] 32 ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS'

ΚΕΦΑΛΑΙΟ 3: Η ΓΛΩΣΣΑ PYTHON ΚΑΙ Η ΒΙΒΛΙΟΘΗΚΗ PYGAME 3.1.3 Εκδόσεις Version 1.0 Τα καινούρια χαρακτηριστικά αυτής της έκδοσης ήταν τα προγραμματιστικά εργαλεία: lambda, map, filter και reduce. Κοντά στο τέλος της πρώτης έκδοσης, εισάχθηκαν επιπλέον χαρακτηριστικά όπως σαφώς δηλωμένες παράμετροι για τις μεθόδους, ενσωματωμένη υποστήριξη για μιγαδικούς αριθμούς, καθώς και μία πολύ απλοϊκή μορφή κρυπτογραφίας. Κατά την περίοδο της έκδοσης 1.0, ο Van Rossum συνέχισε την ανάπτυξη της γλώσσας στο CNRI της Virginia, ΗΠΑ. Version 2.0 Η έκδοση αυτή έφερε καινούρια χαρακτηριστικά όπως συλλογή απορριμμάτων και list comprehension για την κατασκευή λιστών. Στην έκδοση 2.2 εισάχθηκε και η ενοποίηση των τύπων της Python με τις κλάσεις της, σε μία ιεραρχία. Η ενοποίηση αυτή έκανε το μοντέλο της Python καθαρά αντικειμενοστρεφές. Μετά την έκδοση 2.0, η άδεια της Python μετονομάστηκε σε Python Software Foundation License, ενώ ο κώδικας και όλη η τεκμηρίωση της γλώσσας είναι ιδιοκτησία της Python Software Foundation, μια μη κερδοσκοπική εταιρεία, η οποία έχει διαμορφωθεί με βάση την Apache Software Foundation. Version 3.0 Ο σκοπός της Python 3.0 ήταν η διόρθωση σημαντικών ελαττωμάτων των προηγούμενων εκδόσεων, οι οποίες όμως χρειάζονταν μια εντελώς καινούρια έκδοση με νέο αριθμό. Για παράδειγμα, αφαιρέθηκαν περιττές μέθοδοι και εργαλεία που εκτελούσαν παρόμοιες μεταξύ τους λειτουργίες. Οι σειρές εκδόσεων 2 και 3 σχεδιάστηκαν έτσι ώστε να συνυπάρχουν για αρκετές παράλληλες εκδόσεις, με τις εκδόσεις 2 να υπάρχουν κυρίως για λόγους συμβατότητας και να παίρνουν κάποια χαρακτηριστικά των εκδόσεων 3. Οι παράλληλες εκδόσεις έπαψαν να υπάρχουν μετά την κυκλοφορία της έκδοσης 3.2. Κάποια συγκεκριμένα χαρακτηριστικά της Python 3.0 είναι η αλλαγή του print από δήλωση σε ενσωματωμένη συνάρτηση, η μεταφορά του reduce από τα δηλωμένα ονόματα στο module functools, η υποστήριξη επισημάνσεων και σχολιασμών για τη δήλωση ανεπίσημων τύπων, η ενοποίηση όλων των τύπων κειμένου και η εισαγωγή του τύπου bytes. Τέλος, αφαιρέθηκαν χαρακτηριστικά που υποστήριζαν τη συμβατότητα με παλαιότερες εκδόσεις. [12] Οι ημερομηνίες κυκλοφορίας των διαφορετικών εκδόσεων ήταν οι εξής: Python 1.0: Ιανουάριος, 1994 Python 1.5: Δεκέμβριος, 1997 Python 1.6: Σεπτέμβριος, 2000 Python 2.0: Οκτώβριος, 2000 ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS' 33

ΣΤΡΑΝΤΖΗ ΑΝΤΩΝΙΑ Python 2.1: Απρίλιος, 2001 Python 2.2: Δεκέμβριος, 2001 Python 2.3: Ιούλιος, 2003 Python 2.4: Νοέμβριος, 2004 Python 2.5: Σεπτέμβριος, 2006 Python 2.6: Οκτώβριος, 2008 Python 2.7: Ιούλιος, 2010 Python 3.0: Δεκέμβριος, 2008 Python 3.1: Ιούνιος, 2009 Python 3.2: Φεβρουάριος, 2011 Python 3.3: Σεπτέμβριος, 2012 Python 3.4: Μάρτιος, 2014 [12] 3.1.4 Χρήση Τα τελευταία χρόνια, η Python κατατάσσεται ανάμεσα στις πιο δημοφιλείς προγραμματιστικές γλώσσες, σύμφωνα με το Δείκτη της Προγραμματιστικής Κοινότητας TIOBE. Τον Ιούνιο του 2015, η Python βρισκόταν στην 6 η θέση του πίνακα των πιο δημοφιλών γλωσσών σύμφωνα με τον TIOBE. [18] Επιπροσθέτως, σύμφωνα με μια παγκόσμια έρευνα της εταιρείας Startup Compass, το 2014, η Python είναι η δεύτερη πιο υψηλή σε αμοιβές γλώσσα προγραμματισμού, με μισθούς που φτάνουν τα 102 χιλιάδες δολάρια το χρόνο. Πρώτη γλώσσα σε αμοιβές αναδείχτηκε η C++, με 110 χιλιάδες δολάρια. [17] 3.1.5 Προγραμματιστικά περιβάλλοντα (IDE) Η Python λειτουργεί και ως command line interpreter, δηλαδή είναι ένα κέλυφος η ίδια. Υπάρχουν όμως και IDEs (Integrated Development Environments) τα οποία επιτρέπουν την ανάπτυξη κώδικα σε Python. Το βασικό IDE για ανάπτυξη προγραμμάτων Python είναι το IDLE (Integrated Development Environment). Από την έκδοση 1.5.2b1 και μετά, το IDLE υπάρχει στο πακέτο εγκατάστασης της Python. Το IDLE είναι ένα απλό περιβάλλον και ιδιαίτερα χρήσιμο σε εκπαιδευτικούς σκοπούς. Τα κύρια χαρακτηριστικά του είναι τα εξής: Επεξεργαστής κειμένου με επισήμανση σύνταξης, αυτόματη συμπλήρωση και δημιουργία αυτόματων εσοχών. Κέλυφος της Python με επισήμανση σύνταξης. Ενσωματωμένος αποσφαλμάτωση. Παρά τα χαρακτηριστικά του, το IDLE έχει υποστεί κριτική για τα περιορισμένα χαρακτηριστικά του, μερικά από τα οποία είναι το απλοϊκό interface και η απουσία αρίθμησης στις γραμμές. [11] 34 ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS'

ΚΕΦΑΛΑΙΟ 3: Η ΓΛΩΣΣΑ PYTHON ΚΑΙ Η ΒΙΒΛΙΟΘΗΚΗ PYGAME Άλλα προγραμματιστικά περιβάλλοντα για τη γλώσσα είναι τα: Eric Python and Ruby IDE, KDevelop, PyCharm, PyScripter, Spyder και Wing IDE. [14] ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS' 35

ΣΤΡΑΝΤΖΗ ΑΝΤΩΝΙΑ 3.2 Η ΒΙΒΛΙΟΘΗΚΗ PYGAME Η Pygame είναι μία βιβλιοθήκη της Python, που περιέχει εσωτερικές βιβλιοθήκες (modules), κλάσεις και συναρτήσεις με σκοπό την ανάπτυξη ψηφιακών παιχνιδιών. Είναι φτιαγμένη έτσι ώστε να επιτρέπει real-time ανάπτυξη παιχνιδιών χωρίς τις χαμηλού επιπέδου τεχνικές της γλώσσας C και άλλων παράγωγων γλωσσών. Η Pygame υποστηρίζει διαχείριση 2D γραφικών, πολυμέσων όπως εικόνα, ήχος, κλπ. και αλληλεπίδραση μέσω πληκτρολογίου, ποντικιού ή κάποιου τηλεχειριστηρίου. Εφαρμογές της Pygame μπορούν να εκτελεστούν και σε συστήματα Android αλλά με περιορισμένες λειτουργίες, ενώ η βιβλιοθήκη δεν είναι συμβατή με ios. [13] 3.2.1 Modules, μέθοδοι και κλάσεις της Pygame Εδώ αναλύονται τα modules, οι μέθοδοι και οι κλάσεις της Pygame που χρησιμοποιήθηκαν για την υλοποίηση του παιχνιδιού. [16] 3.2.1.1 Module: pygame Το πακέτο pygame είναι το top-level πακέτο της βιβλιοθήκης. Δύο μέθοδοι που χρησιμοποιούνται στο παιχνίδι είναι: pygame.init: αρχικοποιεί όλα τα modules του pygame. pygame.quit: τερματίζει όλα τα modules του pygame. 3.2.1.2 Module: display Το module display διαχειρίζεται το παράθυρο και την οθόνη του προγράμματος. Στο παιχνίδι χρησιμοποιούνται οι εξής μέθοδοι: pygame.display.set_mode: αρχικοποίηση του παραθύρου. Η μέθοδος επιστρέφει ένα αντικείμενο Surface. pygame.display.set_caption: δίνει έναν τίτλο στο παράθυρο. pygame.display.update: ανανεώνει την οθόνη, ώστε να καταγραφούν όλες οι αλλαγές που έχουν γίνει κατά τη διάρκεια της εκτέλεσης του προγράμματος. 3.2.1.3 Κλάση: Surface Η κλάση Surface αντιπροσωπεύει αντικείμενα πάνω στα οποία απεικονίζονται εικόνες και άλλα αντικείμενα. Τα αντικείμενα της αποτελούν ουσιαστικά επιφάνειες. Στο παιχνίδι χρησιμοποιούνται οι εξής μέθοδοι: pygame.surface.blit: χρησιμοποιείται για να απεικονίσει πάνω σε μία άλλη. pygame.surface.get_rect: η μέθοδος επιστρέφει την τετραγωνική περιοχή όπου βρίσκεται το Surface. Οι μεταβλητές centerx, centery της μεθόδου 36 ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS'

ΚΕΦΑΛΑΙΟ 3: Η ΓΛΩΣΣΑ PYTHON ΚΑΙ Η ΒΙΒΛΙΟΘΗΚΗ PYGAME επιστρέφουν τις συνενταγμένες του κέντρου του τετραγώνου στο οποίο ανήκει το Surface. 3.2.1.4 Module: sprite Το module αυτό περιέχει κλάσεις για διαχείριση αντικειμένων. Στο παιχνίδι χρησιμοποιείται μόνο η κλάση Sprite του module. pygame.sprite.sprite: η Sprite είναι μια γενική κλάση της Pygame, η οποία περιέχει χρήσιμες μεθόδους για τη διαχείριση αντικειμένων στις οθόνες των παιχνιδιών. 3.2.1.5 Κλάση: Rect Η κλάση Rect χρησιμεύει ώστε να αποθηκεύονται οι συντεταγμένες τετραγωνικών περιοχών, πάνω στις οποίες θα απεικονιστούν εικόνες. 3.2.1.6 Module: image Το module αυτό ασχολείται με τη διαχείριση των εικόνων. Στο παιχνίδι χρησιμοποιείται μόνο η εξής μέθοδος: pygame.image.load: φορτώνει μία νέα εικόνα από κάποιο αρχείο και επιστρέφει ένα νέο Surface που δημιουργείται από αυτήν την εικόνα. 3.2.1.7 Module: transform Το module αυτό χρησιμεύει στο μετασχηματισμό επιφανειών. Η μόνη μέθοδος του module, που χρησιμοποιείται στο παιχνίδι είναι η: pygame.transform.scale: αλλάζει τις διαστάσεις ενός Surface, ώστε να είναι διαφορετική η ανάλυση. 3.2.1.8 Module: mouse Αυτό είναι το module που διαχειρίζεται τις λειτουργίες του ποντικιού. Η μέθοδος που χρησιμοποιείται στο παιχνίδι είναι η: pygame.mouse.get_pos: επιστρέφει τις συντεταγμένες του δείκτη του ποντικιού σε μια συγκεκριμένη στιγμή. 3.2.1.9 Module: time Το module αυτό διαχειρίζεται το χρόνο του παιχνιδιού. Οι μέθοδοι που χρησιμοποιούνται στο παιχνίδι είναι: ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS' 37

ΣΤΡΑΝΤΖΗ ΑΝΤΩΝΙΑ pygame.time.clock: δημιουργεί ένα αντικείμενο «ρολόι» το οποίο κρατάει το χρόνο του προγράμματος. pygame.time.get_ticks: επιστρέφει το χρόνο σε milliseconds. 3.2.1.10 Module: music Το music είναι ένα sub-module του module mixer που ελέγχει streams ήχου. Οι μέθοδοι που χρησιμοποιήθηκαν στο παιχνίδι είναι: pygame.mixer.music.set_volume: ορίζει την ένταση του ήχου που θα παίξει. pygame.mixer.music.load: φορτώνει ένα αρχείο μουσικής. pygame.mixer.music.play: ξεκινάει η αναπαραγωγή του μουσικού αρχείου. 3.2.1.11 Module: font Το module αυτό φορτώνει και διαχειρίζεται γραμματοσειρές για τα κείμενα που θα απεικονιστούν στην οθόνη. Οι μέθοδοι που χρησιμοποιούνται στο παιχνίδι είναι οι εξής: pygame.font.font: δημιουργεί ένα νέο αντικείμενο Font χρησιμοποιώντας τη γραμματοσειρά από ένα αντίστοιχο αρχείο (ttf, otf κλπ.). pygame.font.font.render: η μέθοδος αυτή σχεδιάζει κείμενο σε μια νέα επιφάνεια. 38 ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS'

Κ Ε Φ Α Λ Α Ι Ο 4 : Τ Ο Π Α Ι Χ Ν Ι Δ Ι «B I N A R Y D R O I D S»

ΚΕΦΑΛΑΙΟ 4: ΤΟ ΠΑΙΧΝΙΔΙ «BINARY DROIDS» ΤΟ ΠΑΙΧΝΙΔΙ «BINARY DROIDS» Στο κεφάλαιο αυτό θα γίνει εμβάθυνση σε μερικά κομμάτια του κώδικα που αναπτύχθηκε για την υλοποίηση του BD. Δε θα γίνει εκτενής αναφορά σε όλο τον κώδικα, αλλά θα αναλυθούν περισσότερο οι μέθοδοι και οι κλάσεις που συμβάλλουν στον αντικειμενοστρεφή χαρακτήρα της υλοποίησης. 4.1 ΤΟ ΣΕΝΑΡΙΟ ΚΑΙ Η ΛΕΙΤΟΥΡΓΙΑ ΤΟΥ ΠΑΙΧΝΙΔΙΟΥ Το «Binary Droids» («Δυαδικά Ρομπότ») είναι ένα παιχνίδι υλοποιημένο σε Python με χρήση της βιβλιοθήκης Pygame. Το «BD» είναι ένα single player stand-alone game, καθώς παίζεται από έναν μόνο παίκτη και δεν έχει ανάγκη τη σύνδεση σε κάποιο δίκτυο. Με βάση το gameplay του, το παιχνίδι μπορεί να χαρακτηριστεί ως παιχνίδι περιπέτειας, με κάποια στοιχεία δράσης. Είναι παιχνίδι περιπέτειας γιατί ο παίκτης υιοθετεί το ρόλο του πρωταγωνιστή και πρέπει να λύσει ένα είδος γρίφου για να προχωρήσει στα επόμενα επίπεδα. Το παιχνίδι, επίσης, εστιάζει σε μία συγκεκριμένη ιστορία και ένα χαρακτήρα, κάτι το οποίο δεν αφήνει «χώρο» για παραπάνω παίκτες. Μπορούν να ανιχνευθούν και στοιχεία παιχνιδιού δράσης. Παρά το ότι δεν υπάρχει κάποιο avatar για τον παίκτη (χαρακτηριστικό των παιχνιδιών δράσης), εκείνος επιλέγει αντικείμενα (τους πλανήτες) και μάχεται ενάντια σε έναν εχθρό, σε αυτήν την περίπτωση το χρόνο. Παράλληλα πρέπει να γίνονται και σωστοί φυσικοί χειρισμοί από τον παίκτη γιατί οι πλανήτες βρίσκονται εν κινήσει, ενώ αλλάζει και η ταχύτητά τους. 4.1.1 Το σενάριο του παιχνιδιού Οι χαρακτήρες του παιχνιδιού, τα droids (ρομπότ) C3PO και R2D2, προέρχονται από το γνωστό franchise «Star Wars». Στο σενάριο του παιχνιδιού, τα δύο droids έχουν εγκαταλειφθεί στον πλανήτη Tatooine και πρέπει να επιστρέψουν πίσω στο σπίτι του, τον πλανήτη Coruscant. Για να γυρίσουν όμως πρέπει να περάσουν μέσα από άλλους πλανήτες, αλλά πρέπει πρώτα να δώσουν αυτές τις συντεταγμένες στο αεροσκάφος του. Το πρόβλημα είναι ότι ο μόνος που ξέρει τις συντεταγμένες είναι ο R2D2 ο οποίος μιλάει μόνο γλώσσα μηχανής. Ο C3PO μπορεί να μεταφράσει τους αριθμούς των συντεταγμένων από γλώσσα μηχανής σε δυαδικό σύστημα. Ο παίκτης είναι αυτός που πρέπει να μετατρέψει τους αριθμούς σε δεκαδικό σύστημα ώστε να εισαχθούν στο αεροσκάφος που θα τους μεταφέρει από πλανήτη σε πλανήτη. ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS' 41

ΣΤΡΑΝΤΖΗ ΑΝΤΩΝΙΑ 4.1.2 Ο μηχανισμός μάθησης Ο μηχανισμός μάθησης είναι ο τρόπος με τον οποίο ο μαθητής-παίκτης ενεργοποιεί γνωστικές διεργασίες έτσι ώστε να επεξεργαστεί οποιαδήποτε πληροφορία θα τον βοηθήσει να τερματίσει αποτελεσματικά το παιχνίδι. Ο μηχανισμός μάθησης στο BD είναι οι υπολογισμοί που πρέπει να εκτελέσει ο παίκτης έτσι ώστε να μετατρέψει σωστά, και μέσα στο χρονικό περιθώριο, τους δυαδικούς αριθμούς σε δεκαδικούς. 4.1.3 Η λειτουργία του παιχνιδιού Κατά τη διάρκεια του παιχνιδιού, τα droids «δίνουν» στον παίκτη κάποιον δυαδικό αριθμό και εκείνος πρέπει να επιλέξει τον σωστό δεκαδικό. Οι δεκαδικοί αριθμοί αποτυπώνονται πάνω σε μικρούς πλανήτες, οι οποίοι «αιωρούνται» στην οθόνη. Ο παίκτης πρέπει να επιλέξει τον σωστό κάνοντας κλικ με το ποντίκι επάνω του. Για παράδειγμα αν του δίνουν τον αριθμό «10», ο χρήστης πρέπει να επιλέξει τον πλανήτη με τον αριθμό «2», γιατί το 10 στο δυαδικό σύστημα είναι ο αριθμός 2. Το παιχνίδι αποτελείται συνολικά από 8 levels (επίπεδα), τα οποία ο παίκτης πρέπει να ολοκληρώσει για να τερματίσει επιτυχώς το παιχνίδι. Ο παίκτης πρέπει να μαζέψει 15 πόντους στο σκορ σε κάθε level, έτσι ώστε να προχωρήσει στο επόμενο. Συνεπώς, αν βρίσκεται στο level 1, όταν μαζέψει 15 πόντους θα προχωρήσει στο level 2. Εφόσον το σκορ δε μηδενίζεται όταν αλλάξει ο παίκτης level, αλλά αθροίζεται, το level 2 ξεκινάει με 15 πόντους κι όχι 0. Άρα, για να περάσει στο level 3, ο παίκτης πρέπει να μαζέψει άλλους 15 πόντους, δηλαδή συνολικά 30. Για να μπει στο level 4, πρέπει να μαζέψει 45 κ.ο.κ.. Όσο ο παίκτης προχωράει levels, τότε η δυσκολία από άποψη αριθμών ανεβαίνει. Στο πρώτο level οι δυαδικοί αριθμοί μπορεί να είναι ενός ψηφίου, ενώ στα τελευταία levels οι δυαδικοί αριθμοί μπορεί να φτάσουν και τα 9 ψηφία. (Το παιχνίδι υποστηρίζει δυαδικούς μέχρι το πολύ 9 ψηφία.) Κάθε level του παιχνιδιού έχει ένα χρονικό περιθώριο: 3 λεπτά (εύκολο/μικρό επίπεδο δυσκολίας), 2 λεπτά (μέτριο/μεσαίο επίπεδο δυσκολίας) ή 1 λεπτό (δύσκολο/μεγάλο επίπεδο δυσκολίας). Το προκαθορισμένο επίπεδο δυσκολίας είναι το εύκολο, στα 3 λεπτά, αλλά ο παίκτης μπορεί να το αλλάξει αυτό πηγαίνοντας στο μενού και επιλέγοντας «Options». Ο χρόνος αυτός απεικονίζεται κατά τη διάρκεια του παιχνιδιού με τη μορφή μιας πράσινης μπάρας που «αδειάζει» όσο εκτελείται το παιχνίδι. Όταν τελειώνει το χρονικό περιθώριο το παιχνίδι τερματίζει. Όταν ο παίκτης ολοκληρώσει ένα level, τότε ο χρόνος «γεμίζει» ξανά στα 3, 2 ή 1 λεπτά, ανάλογα με το επίπεδο δυσκολίας. Ο κάθε πλανήτης έχει πάνω του ένα μόνο ψηφίο, το οποίο δημιουργεί πρόβλημα όταν ο δεκαδικός αριθμός-απάντηση είναι διψήφιος ή τριψήφιος. Σε τέτοιες περιπτώσεις ο παίκτης πρέπει να πατήσει με τη σειρά τα σωστά ψηφία. Αν για παράδειγμα, ο δεκαδικός αριθμός-απάντηση είναι το 153, τότε ο παίκτης πρέπει να επιλέξει τον πλανήτη-αριθμό 1, μετά τον πλανήτη-αριθμό 2 και μετά τον 5. Όταν τα ψηφία είναι σωστά, απεικονίζονται στην οθόνη μέχρι να ολοκληρωθεί ο αριθμός, έτσι ώστε ο παίκτης να βλέπει ποια ψηφία έχει επιλέξει. 42 ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS'

ΚΕΦΑΛΑΙΟ 4: ΤΟ ΠΑΙΧΝΙΔΙ «BINARY DROIDS» 4.1.4 Ο σκοπός του παιχνιδιού Ο σκοπός του BD είναι να ολοκληρώσει όλα τα levels, συμπληρώνοντας όλους τους απαραίτητους πόντους. Όλα αυτά πρέπει να γίνουν πριν τελειώσει το χρονικό περιθώριο κάθε level. 4.1.5 Επιβραβεύσεις / Ποινές Το παιχνίδι υιοθετεί ένα μοντέλο συμπεριφορισμού όπου ο παίκτης λαμβάνει θετικές ενισχύσεις με κάθε σωστή απάντηση, ενώ υφίσταται κυρώσεις όταν δίνει λάθος απαντήσεις. Όταν ο παίκτης επιλέγει το σωστό πλανήτη (ή σωστούς πλανήτες, αν έχουμε διψήφιο ή τριψήφιο δεκαδικό) τότε παίρνει 1 πόντο στο σκορ του και κερδίζει επιπλέον χρόνο στο ήδη διαθέσιμο που του απομένει. Ο χρόνος ανεβαίνει ανάλογα με το level. Στο level 1, με κάθε σωστή απάντηση κερδίζεται 1 δευτερόλεπτο, αλλά στο level 2 κερδίζονται 2 δευτερόλεπτα, στο level 3 κερδίζονται 3 δευτερόλεπτα κ.ο.κ.. Αν ο παίκτης επιλέξει λάθος πλανήτη, τότε χάνει ένα δευτερόλεπτο από το χρόνο που απομένει, σε όποιο level και να βρίσκεται. Παρ όλα αυτά δε χάνει πόντους από το σκορ του. 4.1.6 Πρόσθετες επιλογές Κατά τη διάρκεια του παιχνιδιού, υπάρχει η επιλογή της αύξησης της ταχύτητας. Πατώντας το πλήκτρο «+» στο πληκτρολόγιο τότε η ταχύτητα με την οποία κινούνται οι πλανήτες αυξάνεται. Όσο ο παίκτης πατάει το «+», η ταχύτητα αυξάνεται ακόμα πιο πολύ, αλλά δεν μπορεί να ξεπεράσει το πενταπλάσιο της αρχικής. Αν ο παίκτης πατήσει το «-», τότε γίνεται η αντίστροφη διαδικασία και η ταχύτητα μειώνεται. Η ταχύτητα επηρεάζει και το κερδηθέν σκορ όταν ο παίκτης επιλέξει το σωστό πλανήτη-αριθμό. Όταν η ταχύτητα είναι η αρχική (x 1), τότε το κερδηθέν σκορ είναι 1 πόντος, αλλά όταν η ταχύτητα είναι διπλάσια της αρχικής (x 2), τότε ο παίκτης κερδίζει 2 πόντους. Όταν η ταχύτητα είναι τριπλάσια (x 3), ο παίκτης κερδίζει 3 πόντους κ.ο.κ.. Όταν ο δεκαδικός αριθμός-απάντηση είναι διψήφιος ή τριψήφιος τότε εμφανίζεται στην οθόνη ένα κουμπί-βοήθεια (help), το οποίο «φανερώνει» στον παίκτη το επόμενο ψηφίο που πρέπει να επιλέξει, εκτός αν είναι το τελευταίο. Για παράδειγμα, αν ο δεκαδικός αριθμός-απάντηση είναι το 48, τότε ο παίκτης μπορεί να επιλέξει τη βοήθεια και να του «φανερωθεί» το 4. Μετά το 4 όμως, η βοήθεια χάνεται, γιατί δεν είναι διαθέσιμη για το τελευταίο ψηφίο του αριθμού. Για τριψήφιο αριθμό η βοήθεια είναι διαθέσιμη 2 φορές, από μία για τα 2 πρώτα ψηφία αλλά όχι για το τρίτο και τελευταίο ψηφίο. ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS' 43

ΣΤΡΑΝΤΖΗ ΑΝΤΩΝΙΑ 4.1.7 Το interface Πόντοι σκορ (εδώ 0) Ταχύτητα (εδώ 1) Πλανήτης-αριθμός «5» Μπάρα χρόνου Πλανήτης-αριθμός «8» Ο δυαδικός αριθμός που πρέπει να μετατρέψει ο παίκτης C3PO - δίνει στον παίκτη το δυαδικό αριθμό Πλανήτης-αριθμός «1» R2D2 - «δίνει» στον C3PO το δυαδικό αριθμό Εμφανίζεται όταν ο δεκαδικός αριθμόςαπάντηση είναι διψήφιος (εδώ το 14), και ο παίκτης έχει ήδη επιλέξει σωστά το πρώτο ψηφίο 44 ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS'

ΚΕΦΑΛΑΙΟ 4: ΤΟ ΠΑΙΧΝΙΔΙ «BINARY DROIDS» 4.1.8 Το μενού Το αρχικό μενού του παιχνιδιού έχει 5 επιλογές: PLAY: έναρξη του παιχνιδιού. OPTIONS: επιλογή του επιπέδου δυσκολίας που επιθυμεί ο παίκτης. SCORES: εμφάνιση των υψηλότερων σκορ που έχουν καταγραφεί από όσους έχουν παίξει το παιχνίδι. HELP: οι οδηγίες του παιχνιδιού. QUIT: έξοδος από το παιχνίδι και κλείσιμο του παραθύρου. Ο παίκτης μπορεί να μεταφερθεί στο αρχικό μενού, σε όποιο στάδιο του παιχνιδιού και να βρίσκεται, αρκεί να πατήσει το πλήκτρο «Esc» στο πληκτρολόγιο. ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS' 45

ΣΤΡΑΝΤΖΗ ΑΝΤΩΝΙΑ 4.2 ΚΛΑΣΕΙΣ Εδώ περιγράφονται οι κλάσεις που χρησιμοποιήθηκαν για την υλοποίηση των αντικειμένων του παιχνιδιού. 4.2.1 Κλάση Button Στην κλάση αυτή ανήκουν όλα τα αντικείμενα που έχουν το ρόλο ενός κουμπιού. Αυτά τα αντικείμενα είναι: buttons: τα κουμπιά του αρχικού μενού buttonsopt: τα κουμπιά του μενού «Options» buttonsarr: τα «βελάκια» που χρησιμεύουν στην πλοήγηση της επιλογής «Help», όπου ο παίκτης μπορεί να δει τις καρτέλες με τις οδηγίες του παιχνιδιού. buttonhelp: ένα κουμπί «HELP» που δίνει στο χρήστη βοήθεια όταν πρέπει να μετατρέψει ένα δυαδικό αριθμό σε δεκαδικό με παραπάνω από ένα ψηφίο. Η κλάση Button κληρονομεί από τη γενική κλάση Sprite. Μέσα στην κλάση υλοποιούνται οι εξής μέθοδοι: init : ο constructor της κλάσης. Παράμετροι: o createx, createy: οι συντεταγμένες στις οποίες θα τοποθετηθεί το sprite του κουμπιού. o img: η εικόνα η οποία θα απεικονιστεί (θα γίνει blit) επάνω στην επιφάνεια του κουμπιού. o dimx, dimy: οι διαστάσεις της εικόνας, και συνεπώς του κουμπιού. drawit: η μέθοδος η οποία σχεδιάζει το κουμπί, σε κάθε loop, μετά από το update της οθόνης. Παράμετροι: o surf: η επιφάνεια στην οποία θα σχεδιαστεί το κουμπί, δηλαδή το παράθυρο του παιχνιδιού. lightup: η μέθοδος η οποία καλείται κάθε φορά που ο δείκτης περνάει το δείκτη του ποντικιού πάνω από ένα κουμπί. Η μέθοδος αλλάζει την εικόνα που απεικονίζεται επάνω στο κουμπί, με μία παρόμοια αλλά πιο «φωτισμένη», με σκοπό να είναι εμφανής η αλλαγή, όταν ο παίκτης έχει το δείκτη του ποντικιού επάνω στο κουμπί. Παράμετροι: o surf: η επιφάνεια στην οποία θα σχεδιαστεί το κουμπί, δηλαδή το παράθυρο του παιχνιδιού. 46 ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS'

ΚΕΦΑΛΑΙΟ 4: ΤΟ ΠΑΙΧΝΙΔΙ «BINARY DROIDS» o lightswitch: η μεταβλητή, που ορίζει αν η εικόνα που θα απεικονίζεται επάνω στο κουμπί είναι η «φωτισμένη» ή όχι. Αν ο δείκτης είναι πάνω στο κουμπί, η μεταβλητή είναι 1, αν είναι εκτός του κουμπιού, είναι 0. ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS' 47

ΣΤΡΑΝΤΖΗ ΑΝΤΩΝΙΑ 4.2.2 Κλάση Planet Στην κλάση αυτή ανήκουν όλα τα αντικείμενα που αποτελούν τους «πλανήτες», τα νούμερα που πρέπει να επιλέγει ο χρήστης για να βρει τη σωστή απάντηση. Όλα τα αντικείμενα Planet βρίσκονται στον πίνακα planets. Η κλάση Planet κληρονομεί από τη γενική κλάση Sprite. Μέσα στην κλάση υλοποιούνται οι εξής μέθοδοι: init : ο constructor της κλάσης. Παράμετροι: o createx, createy: οι συντεταγμένες στις οποίες θα τοποθετηθεί το sprite του πλανήτη. o dirx: η κατεύθυνση προς την οποία θα κινείται ο πλανήτης. Η μεταβλητή παίρνει τις τιμές 1 (κατεύθυνση προς τα δεξιά) ή -1 (κατεύθυνση προς τα αριστερά). o surf: η επιφάνεια στην οποία θα σχεδιαστεί ο πλανήτης, δηλαδή το παράθυρο του παιχνιδιού. o number: ο αριθμός πάνω στον πλανήτη. move: η μέθοδος η οποία αλλάζει τις συντεταγμένες του πλανήτη, ώστε να μετακινείται σε κάθε loop, και σχεδιάζει τον πλανήτη στην καινούρια θέση, μετά το update της οθόνης. Παράμετροι: o surf: η επιφάνεια στην οποία θα σχεδιαστεί ο πλανήτης, δηλαδή το παράθυρο του παιχνιδιού. lightup: η μέθοδος η οποία καλείται κάθε φορά που ο δείκτης περνάει το δείκτη του ποντικιού πάνω από ένα πλανήτη. Η μέθοδος αλλάζει την εικόνα που απεικονίζεται επάνω στο πλανήτη, με μία παρόμοια αλλά πιο «φωτισμένη», με σκοπό να είναι εμφανής η αλλαγή, όταν ο παίκτης έχει το δείκτη του ποντικιού επάνω στον πλανήτη. Παράμετροι: o surf: η επιφάνεια στην οποία θα σχεδιαστεί ο πλανήτης, δηλαδή το παράθυρο του παιχνιδιού. o lightswitch: η μεταβλητή, που ορίζει αν η εικόνα που θα απεικονίζεται επάνω στον πλανήτη είναι η «φωτισμένη» ή όχι. Αν ο δείκτης είναι πάνω στον πλανήτη, η μεταβλητή είναι 1, αν είναι εκτός του πλανήτη, είναι 0. 48 ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS'

ΚΕΦΑΛΑΙΟ 4: ΤΟ ΠΑΙΧΝΙΔΙ «BINARY DROIDS» 4.2.3 Κλάση Droid Στην κλάση αυτή ανήκει το αντικείμενο d1, που αποτελεί τα δύο droids, τους βασικούς χαρακτήρες του παιχνιδιού. Η κλάση Droid κληρονομεί από τη γενική κλάση Sprite. Μέσα στην κλάση υλοποιούνται οι εξής μέθοδοι: init : ο constructor της κλάσης. Παράμετροι: o createx, createy: οι συντεταγμένες στις οποίες θα τοποθετηθεί το sprite των droids. o dimx, dimy: οι διαστάσεις της εικόνας, και συνεπώς των droids. drawit: η μέθοδος η οποία σχεδιάζει τα droids, σε κάθε loop, μετά από το update της οθόνης. Παράμετροι: o surf: η επιφάνεια στην οποία θα σχεδιαστούν τα droids, δηλαδή το παράθυρο του παιχνιδιού. ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS' 49

ΣΤΡΑΝΤΖΗ ΑΝΤΩΝΙΑ 4.2.4 Κλάση SpeechBubble Στην κλάση αυτή ανήκουν τα speech bubbles των droids, με τα μηνύματα που δείχνουν ποιος αριθμός ζητείται να μετατραπεί. b1: το speech bubble του C3PO, μέσα στο οποίο αναγράφεται κάθε φορά ο δυαδικός αριθμός που πρέπει ο παίκτης να μετατρέψει. b2: το speech bubble του R2D2. Το συγκεκριμένο bubble εμφανίζεται μόνο όταν ο δεκαδικός αριθμός που ζητείται έχει παραπάνω από ένα ψηφίο. Μέσα στο bubble γράφονται τα ψηφία που έχει βρει σωστά ο παίκτης, μέχρι να ολοκληρώσει τον αριθμό. Η κλάση SpeechBubble κληρονομεί από τη γενική κλάση Sprite. Μέσα στην κλάση υλοποιούνται οι εξής μέθοδοι: init : ο constructor της κλάσης. Παράμετροι: o createx, createy: οι συντεταγμένες στις οποίες θα τοποθετηθεί το sprite των droids. o img: η εικόνα που θα απεικονιστεί επάνω στο bubble. o dimx, dimy: οι διαστάσεις της εικόνας και συνεπώς του bubble. changebubble: η μέθοδος που καλείται κάθε φορά που ο C3PO δίνει στον παίκτη έναν καινούριο δυαδικό αριθμό. Η μέθοδος αλλάζει την εικόνα που απεικονίζεται στο bubble, ώστε το εισαγωγικό μήνυμα να μην είναι πάντα το ίδιο. Παράμετροι: o dimx, dimy: οι διαστάσεις της νέας εικόνας που θα απεικονιστεί. drawit: η μέθοδος η οποία σχεδιάζει το bubble, σε κάθε loop, μετά από το update της οθόνης. Παράμετροι: o surf: η επιφάνεια στην οποία θα σχεδιαστεί το bubble, δηλαδή το παράθυρο του παιχνιδιού. 50 ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS'

ΚΕΦΑΛΑΙΟ 4: ΤΟ ΠΑΙΧΝΙΔΙ «BINARY DROIDS» 4.2.5 Κλάση HealthBar Στην κλάση αυτή ανήκει η μπάρα του χρόνου που βρίσκεται στην πάνω δεξιά γωνία της οθόνης, και «αδειάζει» όσο πέφτει ο χρόνος. Το αντικείμενο της μπάρας είναι το healthbar. Η κλάση HealthBar κληρονομεί από τη γενική κλάση Sprite. Μέσα στην κλάση υλοποιούνται οι εξής μέθοδοι: init : ο constructor της κλάσης. Παράμετροι: o createx, createy: οι συντεταγμένες στις οποίες θα τοποθετηθεί το sprite της μπάρας. o img: η εικόνα που θα απεικονιστεί επάνω στην μπάρα, η οποία θα είναι η εικόνα μιας «γεμάτης» μπάρας. o dimx, dimy: οι διαστάσεις της εικόνας και συνεπώς της μπάρας. drawit: η μέθοδος η οποία σχεδιάζει την μπάρα, σε κάθε loop, μετά από το update της οθόνης. Παράμετροι: o surf: η επιφάνεια στην οποία θα σχεδιαστεί η μπάρα, δηλαδή το παράθυρο του παιχνιδιού. o sec: τα δευτερόλεπτα που τρέχει το παιχνίδι, ώστε η εικόνα που θα γίνει blit επάνω στην μπάρα να είναι η σωστή σε σχέση με το χρόνο. ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS' 51

ΣΤΡΑΝΤΖΗ ΑΝΤΩΝΙΑ 4.2.6 Κλάση Text Στην κλάση αυτή ανήκουν όλα τα αντικείμενα που αποτελούν κάποιο κείμενο που αποτυπώνεται στην οθόνη. Τα αντικείμενα αυτά είναι: textscore: το κείμενο που αποτελείται από το εισαγωγικό «Score:» και συνεχίζεται με τον αριθμό του σκορ. Εμφανίζεται στην πάνω αριστερή γωνία του παραθύρου. textquestion: το κείμενο που περιέχει το δυαδικό αριθμός που πρέπει ο παίκτης να μετατρέψει. Εμφανίζεται στο speech bubble του C3PO. textr2: τα ψηφία του δεκαδικού αριθμού-απάντηση που έχει βρει ο χρήστης, όταν ο δεκαδικός αριθμός έχει πάνω από ένα ψηφίο. Το συγκεκριμένο κείμενο εμφανίζεται μόνο όταν εμφανίζεται το speech bubble του R2D2 (b2). textspeed: το κείμενο στην κορυφή της οθόνης που δείχνει πόσο μεγάλη είναι η ταχύτητα των πλανητών. Το κείμενο ξεκινά πάντα από το «Speed: x» και συνεχίζεται με το αριθμό της ταχύτητας. finalscoretext: το κείμενο αυτό περιέχει τον αριθμό του σκορ, όταν αυτό προβάλλεται στην οθόνη τερματισμού του παιχνιδιού. Η κλάση Text κληρονομεί από τη γενική κλάση Sprite. Μέσα στην κλάση υλοποιούνται οι εξής μέθοδοι: init : ο constructor της κλάσης. Παράμετροι: o createx, createy: οι συντεταγμένες που θα τοποθετηθεί το sprite του κειμένου. o font: η γραμματοσειρά του κειμένου. o showtext: οι λέξεις που περιέχει το κείμενο. o color: το χρώμα του κειμένου. rendertext: η μέθοδος η οποία «ανανεώνει» τις λέξεις που περιέχει το κείμενο, όταν τα δεδομένα του παιχνιδιού αλλάζουν. Παράμετροι: o showtext: οι λέξεις που περιέχει το κείμενο. drawit: η μέθοδος η οποία σχεδιάζει το κείμενο, σε κάθε loop, μετά από το update της οθόνης. Παράμετροι: o surf: η επιφάνεια στην οποία θα σχεδιαστεί το κείμενο, δηλαδή το παράθυρο του παιχνιδιού. o createx: η παράμετρος αυτή υπάρχει για να τοποθετείται στην κατάλληλη θέση ο δυαδικός αριθμός του speech bubble του C3PO. 52 ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS'

ΚΕΦΑΛΑΙΟ 4: ΤΟ ΠΑΙΧΝΙΔΙ «BINARY DROIDS» 4.3 ΜΕΘΟΔΟΙ Εδώ περιγράφονται οι μέθοδοι εκτός κλάσεων που χρησιμοποιήθηκαν για την ανάπτυξη λειτουργιών του παιχνιδιού. 4.3.1 checkarea Η μέθοδος αυτή χρησιμοποιείται για να ελεγχθεί αν ο δείκτης του ποντικιού βρίσκεται σε μία συγκεκριμένη περιοχή (area). Η μέθοδος χρησιμεύει για να ανιχνευθεί αν ο δείκτης επιλέγει ή βρίσκεται πάνω από κάποιο αντικείμενο. Παράμετροι: area: η περιοχή που ανιχνεύεται. x: η συντεταγμένη x της θέσης που βρίσκεται ο δείκτης του ποντικιού. y: η συντεταγμένη y της θέσης που βρίσκεται ο δείκτης του ποντικιού. Επιστροφή: true αν ο δείκτης του ποντικιού βρίσκεται επάνω στο αντικείμενο, false αν όχι. 4.3.2 generatebinarynumber Η μέθοδος αυτή «παράγει» έναν τυχαίο δυαδικό αριθμό, με αριθμό ψηφίων που καθορίζεται από τις μεταβλητές minbinary και maxbinary, τον οποίο πρέπει ο παίκτης να μετατρέψει σε δεκαδικό. Η μέθοδος καλείται κάθε φορά που ο παίκτης μετατρέψει σωστά έναν δυαδικό αριθμό σε δεκαδικό και πρέπει να βγει ένας νέος αριθμός προς μετατροπή. Παράμετροι: minbinary: ο ελάχιστος αριθμός ψηφίων που μπορεί να έχει ο δυαδικός αριθμός. maxbinary: ο μέγιστος αριθμός ψηφίων που μπορεί να έχει ο δυαδικός αριθμός. suc, numbersequence, level: οι παράμετροι αυτοί χρησιμοποιούνται με σκοπό την εμφάνιση μιας «στημένης» ακολουθίας δυαδικών αριθμών. Αυτό συμβαίνει γιατί στα πρώτα στάδια του παιχνιδιού, όταν οι αριθμοί έχουν 1 ή 2 ψηφία, υπάρχει περίπτωση να εμφανίζεται πολλές φορές και συνεχόμενα ο ίδιος αριθμός. Για παράδειγμα, όταν minbinary και maxbinary έχουν την τιμή 1, δηλαδή ο αριθμός μπορεί να έχει μόνο 1 ψηφίο, υπάρχει η περίπτωση, όσες φορές και να επιλέγει τη σωστή απάντηση ο παίκτης, να εμφανίζεται συνεχώς ο δυαδικός αριθμός 0 (ή 1). Χρησιμοποιώντας το numbersequence, έναν πίνακα που περιέχει τις τιμές «0,1,0,1,0», εξασφαλίζεται ότι ο ίδιος αριθμός δε θα βγαίνει επανειλημμένα, γιατί ουσιαστικά εξάγονται με τη σειρά από αυτόν τον πίνακα. Αυτή η τροποποίηση γίνεται σε χαμηλά levels που έχουμε μικρό αριθμό ψηφίων. Όσο ανεβαίνουν τα levels, αυτή η διαδικασία παραβλέπεται. ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS' 53

ΣΤΡΑΝΤΖΗ ΑΝΤΩΝΙΑ Επιστροφή: ένας πίνακας, κάθε θέση του οποίου είναι ένα ψηφίο, τα οποία όλα μαζί αποτελούν το δυαδικό αριθμό. 4.3.3 getdecimalanswer Η μέθοδος αυτή χρησιμοποιείται για να μετατρέψει το δυαδικό αριθμό στη δεκαδική του μορφή. Η μετατροπή γίνεται με τον κλασσικό υπολογισμό, υψώνοντας κάθε ψηφίο του δυαδικού αριθμού στην ανάλογη δύναμη του 2. Παράμετροι: binary: ο πίνακας που περιέχει τα ψηφία του δυαδικού αριθμού που θα μετατραπεί σε δεκαδικό Επιστροφή: ο δεκαδικός αριθμός. 4.3.4 checktoomany Η μέθοδος αυτή καλείται όταν «δημιουργείται» ένας νέος πλανήτης-αριθμός. Επειδή οι πλανήτες-αριθμοί δημιουργούνται με τυχαίο τρόπο, υπάρχει η περίπτωση ένας αριθμός να μην εμφανιστεί για αρκετή ώρα, ενός κάποιος άλλος αριθμός να εμφανιστεί πολλές φορές συνεχόμενα. Η μέθοδος checktoomany εξασφαλίζει ότι από τους 20 πλανήτες που αιωρούνται κάθε φορά στην οθόνη, δε θα υπάρχουν πάνω από 3 όμοιοι, δηλαδή πάνω από 3 να «κουβαλούν» τον ίδιο αριθμό. Παράμετροι: sumplanets: ένας πίνακας που περιέχει το πλήθος όμοιων πλανητών-αριθμών, για κάθε έναν από αυτούς τους αριθμούς. Για παράδειγμα, αν ο πλανήτης με αριθμό 5, υπάρχει στην οθόνη 2 φορές, τότε η 5 η θέση του πίνακα sumplanets θα περιέχει την τιμή 2. Επιστροφή: ο πρώτος αριθμός που δεν βρίσκεται στην οθόνη πάνω από 3 φορές. 4.3.5 adjustminmaxbin Η μέθοδος αυτή καθορίζει το μέγιστο και τον ελάχιστο αριθμό ψηφίων για τον δυαδικό αριθμό που θα εμφανιστεί στην οθόνη, ανάλογα με το level που βρίσκεται ο παίκτης και ανάλογα με τις επιτυχίες του (σωστές μετατροπές). Σε κάθε level, όσες περισσότερες επιτυχίες υπάρχουν, το πλήθος των ψηφίων αυξάνεται σταδιακά. Παράμετροι: successes: οι επιτυχίες του παίκτη μέσα στο level. level: το level που βρίσκεται ο παίκτης. minbinary: το υπάρχον ελάχιστο πλήθος ψηφίων. maxbinary: το υπάρχον μέγιστο πλήθος ψηφίων. 54 ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS'

ΚΕΦΑΛΑΙΟ 4: ΤΟ ΠΑΙΧΝΙΔΙ «BINARY DROIDS» Επιστροφή: το νέο ελάχιστο και το νέο μέγιστο πλήθος ψηφίων για το δυαδικό αριθμό. 4.3.6 viewscores Η μέθοδος viewscores διαβάζει ένα αρχείο txt, το οποίο έχει αποθηκευμένα τα 5 καλύτερα σκορ που έχουν καταγραφεί στο παιχνίδι. Επιστροφή: έναν πίνακα χαρακτήρων (str), ο οποίος περιέχει τα 5 σκορ που διαβάζονται από το αρχείο txt. 4.3.7 updatescores Η μέθοδος updatescores διαβάζει το αρχείο txt που περιέχει τα 5 μέχρι στιγμής καταγεγραμμένα καλύτερα σκορ, και ελέγχει αν το σκορ που έχει καταφέρει ο παίκτης στο τρέχων παιχνίδι ξεπερνάει κάποιο από αυτά τα 5. Αν αυτό συμβαίνει, τότε το txt ενημερώνεται με τη νέα «καλύτερα πεντάδα» στο σκορ. Παράμετροι: score: το σκορ του τρέχοντος παιχνιδιού, το οποίο συγκρίνεται με τα 5 καλύτερα. Επιστροφή: το υψηλότερο σκορ που έχει σημειωθεί, από όσες φορές έχει παιχτεί το παιχνίδι, συμπεριλαμβανομένου και του τρέχοντος παιχνιδιού. ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS' 55

ΣΤΡΑΝΤΖΗ ΑΝΤΩΝΙΑ 4.4 Η ΠΟΡΕΙΑ ΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΣΕ ΣΤΑΔΙΑ (STAGES) Το παιχνίδι χωρίζεται σε 8 stages (στάδια), ανάλογα με την «κατάσταση» στην οποία βρίσκεται. Επιγραμματικά, τα 8 στάδια είναι τα εξής: Στάδιο 0: Το αρχικό μενού. Στάδιο 1: Η εκτέλεση του παιχνιδιού. Στάδιο 2: Η «κάρτα» που αναγράφει σε ποιο level είναι ο παίκτης πριν ξεκινήσει το εκάστοτε level. Στάδιο 3: Η «κάρτα» που εμφανίζεται όταν τελειώσει κάθε level. Ο παίκτης πρέπει να κάνει κλικ για να προχωρήσει στο επόμενο level. Στάδιο 4: Το μενού «Options», όπου ο χρήστης επιλέγει επίπεδο δυσκολίας. Στάδιο 5: Η λίστα με τα 5 καλύτερα σκορ που έχουν καταγραφεί στο παιχνίδι. Στάδιο 6: Οι οδηγίες του παιχνιδιού. Στάδιο 7: Τερματισμός του παιχνιδιού 56 ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS'

ΚΕΦΑΛΑΙΟ 4: ΤΟ ΠΑΙΧΝΙΔΙ «BINARY DROIDS» 4.4.1 Στάδιο 0 Όταν ο παίκτης ανοίγει το παιχνίδι, η πρώτη οθόνη που βλέπει είναι του σταδίου 0, δηλαδή του αρχικού μενού. Από το αρχικό μενού, ο παίκτης έχει 4 επιλογές: PLAY: για να ξεκινήσει να παίζει το παιχνίδι. (στάδιο 3) OPTIONS: ο παίκτης μπορεί να επιλέξει το επίπεδο δυσκολίας που επιθυμεί για το παιχνίδι. (στάδιο 4) SCORES: τα 5 καλύτερα σκορ που έχουν καταγραφεί ποτέ στο παιχνίδι. (στάδιο 5) HELP: οι οδηγίες του παιχνιδιού. (στάδιο 6) QUIT: το παιχνίδι κλείνει. (στάδιο 7) Σε αυτό το στάδιο δημιουργείται ο πρώτος δυαδικός αριθμός που θα πρέπει να μετατρέψει ο παίκτης όταν ξεκινήσει το παιχνίδι. ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS' 57

ΣΤΡΑΝΤΖΗ ΑΝΤΩΝΙΑ 4.4.2 Στάδιο 1 Το στάδιο 1 αποτελεί το κύριο παιχνίδι, δηλαδή τις πραγματικές πίστες. Παρακάτω περιγράφεται συνοπτικά η πορεία του παιχνιδιού, ανάλογα με τις ενέργειες και την επιλογή από τον παίκτη σωστού ή λάθος πλανήτη-αριθμού. Ο παίκτης κάνει κλικ με το ποντίκι στην οθόνη: o Έχει επιλέξει με το κλικ κάποιον πλανήτη-αριθμό: Ο δεκαδικός αριθμός-απάντηση είναι μικρότερος του 10 (1 ψηφίο) : Ο πλανήτης-αριθμός που έχει επιλέξει είναι ο δεκαδικός αριθμόςαπάντηση. (σωστή επιλογή) o Δημιουργείται ένας νέος πλανήτης-αριθμός, αυξάνεται ο αριθμός των επιτυχιών, ο διαθέσιμος χρόνος και το σκορ, ανανεώνονται το κείμενο του σκορ στην οθόνη, ενημερώνεται ο μέγιστος και ελάχιστος αριθμός ψηφίων για το δυαδικό αριθμό, ανάλογα με το level και τις επιτυχίες, και δημιουργείται ένας καινούριος δυαδικός αριθμός. Ο πλανήτης-αριθμός που έχει επιλέξει δεν είναι ο δεκαδικός αριθμόςαπάντηση. (λάθος επιλογή) o Αφαιρείται ένα δευτερόλεπτο από το διαθέσιμο χρόνο. Ο δεκαδικός αριθμός-απάντηση είναι μικρότερος του 100 και μεγαλύτερος του 9 (2 ψηφία): Ο παίκτης δεν έχει επιλέξει ακόμα κανένα ψηφίο για να δημιουργήσει το δεκαδικό αριθμό. o Ο παίκτης επιλέγει τον πλανήτη-αριθμό που είναι ίσος με το πρώτο ψηφίο του δεκαδικού αριθμού-απάντηση. (σωστή επιλογή) Δημιουργείται ένας νέος πλανήτης-αριθμός και καταγράφεται στην οθόνη το πρώτο και σωστά επιλεγμένο ψηφίο. o Ο πλανήτης-αριθμός που έχει επιλέξει δεν είναι το πρώτο ψηφίο του δεκαδικού αριθμού. (λάθος επιλογή) Αφαιρείται ένα δευτερόλεπτο από το διαθέσιμο χρόνο. Ο παίκτης έχει επιλέξει ήδη σωστά το πρώτο ψηφίο του διψήφιου δεκαδικού αριθμού. o Ο παίκτης επιλέγει τον πλανήτη-αριθμό που είναι ίσος με το δεύτερο ψηφίο του δεκαδικού αριθμού-απάντηση. (σωστή επιλογή) Δημιουργείται ένας νέος πλανήτης-αριθμός, αυξάνεται ο αριθμός των επιτυχιών, ο διαθέσιμος χρόνος και το σκορ, ανανεώνονται το κείμενο του σκορ στην οθόνη, ενημερώνεται ο μέγιστος και ελάχιστος αριθμός ψηφίων για το δυαδικό αριθμό, ανάλογα με το level και τις επιτυχίες, και δημιουργείται ένας καινούριος δυαδικός αριθμός. 58 ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS'

ΚΕΦΑΛΑΙΟ 4: ΤΟ ΠΑΙΧΝΙΔΙ «BINARY DROIDS» o Ο πλανήτης-αριθμός που έχει επιλέξει δεν είναι το δεύτερο ψηφίο του δεκαδικού αριθμού. (λάθος επιλογή) Αφαιρείται ένα δευτερόλεπτο από το διαθέσιμο χρόνο. Το πρώτο ψηφίο του δεκαδικού αριθμού, το οποίο είχε βρει ο παίκτης σωστά προηγουμένως, και ήταν σχεδιασμένο στην οθόνη, τώρα «σβήνεται». Ο δεκαδικός αριθμός-απάντηση είναι μεγαλύτερος του 100 και μικρότερος του 1000 (3 ψηφία). (Το παιχνίδι δεν υποστηρίζει δεκαδικούς αριθμούς μεγαλύτερους του 999). Ο παίκτης δεν έχει επιλέξει ακόμα κανένα ψηφίο για να δημιουργήσει το δεκαδικό αριθμό. o Ο παίκτης επιλέγει τον πλανήτη-αριθμό που είναι ίσος με το πρώτο ψηφίο του δεκαδικού αριθμού-απάντηση. (σωστή επιλογή) Δημιουργείται ένας νέος πλανήτης-αριθμός και καταγράφεται στην οθόνη το πρώτο και σωστά επιλεγμένο ψηφίο. o Ο πλανήτης-αριθμός που έχει επιλέξει δεν είναι το πρώτο ψηφίο του δεκαδικού αριθμού. (λάθος επιλογή) Αφαιρείται ένα δευτερόλεπτο από το διαθέσιμο χρόνο. Ο παίκτης έχει επιλέξει ήδη σωστά το πρώτο ψηφίο του τριψήφιου δεκαδικού αριθμού. o Ο παίκτης επιλέγει τον πλανήτη-αριθμό που είναι ίσος με το δεύτερο ψηφίο του δεκαδικού αριθμού-απάντηση. (σωστή επιλογή) Δημιουργείται ένας νέος πλανήτης-αριθμός και καταγράφεται στην οθόνη τα δύο πρώτα και σωστά επιλεγμένα ψηφία. o Ο πλανήτης-αριθμός που έχει επιλέξει δεν είναι το δεύτερο ψηφίο του δεκαδικού αριθμού. (λάθος επιλογή) Αφαιρείται ένα δευτερόλεπτο από το διαθέσιμο χρόνο. Το πρώτο ψηφίο του δεκαδικού αριθμού, το οποίο είχε βρει ο παίκτης σωστά προηγουμένως, και ήταν σχεδιασμένο στην οθόνη, τώρα «σβήνεται». Ο παίκτης έχει επιλέξει ήδη σωστά τα δύο πρώτα ψηφία του τριψήφιου δεκαδικού αριθμού. o Ο παίκτης επιλέγει τον πλανήτη-αριθμό που είναι ίσος με το τρίτο ψηφίο του δεκαδικού αριθμού-απάντηση. (σωστή επιλογή) Δημιουργείται ένας νέος πλανήτης-αριθμός, αυξάνεται ο αριθμός των επιτυχιών, ο διαθέσιμος χρόνος και το σκορ, ανανεώνονται το κείμενο του σκορ στην οθόνη, ενημερώνεται ο μέγιστος και ελάχιστος αριθμός ψηφίων για το δυαδικό αριθμό, ανάλογα με το level και τις επιτυχίες, και δημιουργείται ένας καινούριος δυαδικός αριθμός. o Ο πλανήτης-αριθμός που έχει επιλέξει δεν είναι το τρίτο ψηφίο του δεκαδικού αριθμού. (λάθος επιλογή) ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS' 59

ΣΤΡΑΝΤΖΗ ΑΝΤΩΝΙΑ Αφαιρείται ένα δευτερόλεπτο από το διαθέσιμο χρόνο. Τα δύο πρώτα ψηφία του δεκαδικού αριθμού, τα οποία είχε βρει ο παίκτης σωστά προηγουμένως, και ήταν σχεδιασμένα στην οθόνη, τώρα «σβήνονται». 60 ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS'

ΚΕΦΑΛΑΙΟ 4: ΤΟ ΠΑΙΧΝΙΔΙ «BINARY DROIDS» 4.4.3 Στάδιο 2 Όταν το παιχνίδι βρίσκεται στο στάδιο 2, τότε η οθόνη που βλέπει ο χρήστης είναι ένα μία «κάρτα-εισαγωγή» στο κάθε level. Πριν ξεκινήσει μία καινούρια πίστα στο παιχνίδι (στάδιο 3), για 1,5 δευτερόλεπτο ο παίκτης βλέπει μια εισαγωγική οθόνη που δείχνει σε ποιο επίπεδο του παιχνιδιού πρόκειται να μπει. ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS' 61

ΣΤΡΑΝΤΖΗ ΑΝΤΩΝΙΑ 4.4.4 Στάδιο 3 Μετά την ολοκλήρωση του κάθε level, εμφανίζεται στην οθόνη μία «κάρτα», η οποία λέει στον παίκτη ότι πέτυχε τους απαραίτητους 15 πόντους για την ολοκλήρωση κάθε level και ότι προχωράει στο επόμενο. Ο παίκτης πρέπει να κάνει κλικ στην οθόνη όταν εμφανιστεί η «κάρτα», έτσι ώστε να προχωρήσει. 62 ΑΝΑΠΤΥΞΗ ΠΑΙΧΝΙΔΙΩΝ ΜΑΘΗΣΗΣ ΣΕ PYTHON: ΤΟ ΠΑΙΧΝΙΔΙ 'BINARY DROIDS'