Φύλλο Εργασίας: Παιχνίδι Λαβύρινθος (MAZE) Προγραμματιστικό Εργαλείο: GAME MAKER Ονοματεπώνυμο: Τμήμα: Σκοπός σας είναι να φτιάξετε ένα ηλεκτρονικό παιχνίδι για περιπλάνηση σε Λαβύρινθο (MAZE) χρησιμοποιώντας το προγραμματιστικό εργαλείο GAME MAKER. Ο συγκεκριμένος λαβύρινθος είναι κλειστός δηλαδή δεν έχει εξόδους. Αποστολή του ήρωα του παιχνιδιού (ενός αγοριού) είναι να εντοπίσει ένα αντικείμενο (ένα burger), καθώς κινείται μέσα στις διαδρομές του λαβύρινθου. Το παιχνίδι παίζεται από 1 παίχτη που καθοδηγεί τον ήρωα με τα βελάκια. Κάθε φορά που το αγόρι φτάνει στο burger, ο παίχτης κερδίζει βαθμούς και το burger επανεμφανίζεται σε νέα θέση. Αν το αγόρι δε φτάσει στο burger σε συγκεκριμένο χρόνο, ο παίκτης χάνει μία ζωή. Το παιχνίδι ολοκληρώνεται όταν ο παίκτης εξαντλήσει 3 ζωές. Α. Η ΠΙΣΤΑ ΤΟΥ ΠΑΙΧΝΙΔΙΟΥ Ανοίξτε το GAME MAKER (Lite Edition). Για τη δημιουργία της πίστας του παιχνιδιού, εισάγετε τα παρακάτω στοιχεία στους φακέλους που βρίσκονται στο αριστερό μέρος του περιβάλλοντος του GAME MAKER. 1. SPRITES: Οι εικόνες που θα χρησιμοποιηθούν για τα διάφορα στοιχεία της πίστας. Για την πίστα του παιχνιδιού μας, εισάγετε τα παρακάτω 3 sprites ακολουθώντας τα βήματα i iv. Εκπαιδευτικοί: Χατζηφωτεινού Αικατερίνη (ΠΕ19), Κουκουρίκου Στυλιανή (ΠΕ19)
Εικόνα Sprite Όνομα Sprite Όνομα Αρχείου burger_sprite boy_sprite rock_sprite burger.png npc_boy.png rock.png i. Δεξί κλικ στο φάκελο Sprites και επιλέγουμε Create Sprite (Δημιουργία). ii. iii. iv. Ορίζουμε το όνομα του sprite στο πεδίο Name (Όνομα). Ορίζουμε την εικόνα του sprite πατώντας στο κουμπί Load Sprite και επιλέγοντας το αρχείο εικόνας που επιθυμούμε. Πατάμε OK. 2. OBJECTS: Τα αντικείμενα με τα οποία θα φτιάξουμε την πίστα του παιχνιδιού. Τα sprites αποτελούν απλά και μόνο τα γραφικά στοιχεία της πίστας. Δεν μπορούν να εκτελέσουν κάποιες ενέργειες ούτε να αντιδράσουν στις επιλογές του χρήστη. Αυτό το κάνουν τα objects (αντικείμενα) που συνδέονται με τα αντίστοιχα sprites. Για το παιχνίδι, εισάγετε τα παρακάτω 3 objects ακολουθώντας τις οδηγίες i-iv: Όνομα Object Sprite Ιδιότητες burger boy rock visible visible visible, solid i. Δεξί κλικ στο φάκελο Objects και επιλέγουμε Create Object (Δημιουργία). ii. iii. Ορίζουμε το όνομα του object στο πεδίο Name (Όνομα). Ορίζουμε το sprite που συνδέεται με το αντικείμενο από την επιλογή Sprite iv. κάνοντας κλικ στο κουμπί εμφανίζεται. Πατάμε OK. και επιλέγοντας από τη λίστα των sprites που 3. BACKGROUNDS: Εικόνες που χρησιμοποιούνται ως φόντο της πίστας. Με αντίστοιχη διαδικασία που χρησιμοποιήθηκε για τα sprites (Backgrounds Create Background Load Background OK), εισάγετε το παρακάτω background: Όνομα Background background0 Background Όνομα Αρχείου plants.png 4. ROOMS: Οι πίστες του παιχνιδιού. Το παιχνίδι μας θα περιέχει μία (1) πίστα με την παρακάτω μορφή:
Για τη δημιουργία μιας πίστας room ακολουθούμε τα εξής βήματα: i. Δεξί κλικ στο φάκελο Rooms και επιλέγουμε Create Room (Δημιουργία). ii. Από την καρτέλα backgrounds και το κουμπί επιλέγουμε το background που επιθυμούμε - για το παιχνίδι μας το πράσινο φόντο (background0). iii. Από την καρτέλα settings ορίζουμε τις διαστάσεις Width (πλάτος) και Height (ύψος) της πίστας σε pixels για το παιχνίδι μας Width: 480, Height: 480. iv. Από την καρτέλα objects και επιλέγοντας από το κουμπί, τοποθετούμε τα αντικείμενα στην πίστα, διαμορφώνοντάς την όπως φαίνεται στην παραπάνω εικόνα: Αριστερό κλικ: Τοποθέτηση ενός object σε κόμβο του πλέγματος. Δεξί κλικ: Αφαίρεση object από κόμβο του πλέγματος. Shift + κλικ: Τοποθέτηση πολλών objects στη σειρά. Πολύ ωραία!! Έχετε δημιουργήσει την πίστα του παιχνιδιού. Ώρα να προγραμματίσετε το αγόρι να αναζητήσει το burger μέσα στο λαβύρινθο!! Πάντα να θυμάστε το παρακάτω: Στο GAME MAKER ο προγραμματισμός βασίζεται στην εξής φιλοσοφία; 1. Ποιο γεγονός (event) συμβαίνει; (π.χ. πάτημα ενός πλήκτρου, κίνηση του ποντικιού) 2. Ποιο αντικείμενο (object) ανταποκρίνεται στο γεγονός αυτό; (π.χ. το burger) 3. Πώς θα ανταποκριθεί το αντικείμενο στο συγκεκριμένο γεγονός; Ποιες ενέργειες (actions) θα πραγματοποιήσει το αντικείμενο; (π.χ. θα εξαφανιστεί) Για να προγραμματίσουμε ένα αντικείμενο κάνουμε σε αυτό διπλό κλικ. Τότε εμφανίζεται το παράθυρο ιδιοτήτων (Properties) του αντικειμένου.
Β. ΚΙΝΗΣΗ ΜΕΣΑ ΣΤΟ ΛΑΒΥΡΙΝΘΟ Για την κίνηση του αγοριού μέσα στο λαβύρινθο θα χρησιμοποιούμε τα βελάκια από το πληκτρολόγιο (πάνω, κάτω, αριστερά, δεξιά).. Κίνηση προς τα Δεξιά Τι πρέπει να συμβεί για να κινηθεί το αγόρι προς τα δεξιά; Από τις ιδιότητες (Properties)του object boy επιλέξτε Add Event Key Press Right Τι εμφανίζεται στο παράθυρο events; Τι πρέπει να πραγματοποιηθεί τότε;. Από τις ενέργειες (actions) της καρτέλας Move επιλέξτε Move Fixed και σύρετε με το ποντίκι μας το αντίστοιχο εικονίδιο στο παράθυρο Actions. Στο παράθυρο που εμφανίζεται ορίστε τις ιδιότητες της κίνησης: Κλικ στο βέλος που δείχνει δεξιά και ταχύτητα (speed) 4. Κίνηση προς τα Αριστερά Ποιο event θα ορίσετε για την κίνηση του αγοριού προς τα αριστερά; Ποια ενέργεια (action) θα ορίσετε για την κίνηση του αγοριού προς τα αριστερά; Ποιες οι ιδιότητες αυτής της ενέργειας; Ορίστε ακόμη τα events και τα actions που ελέγχουν την κίνηση του αγοριού προς τα πάνω και προς τα κάτω. Ολοκληρώνοντας τα 4 events και τα αντίστοιχα actions πατήστε OK. Τώρα μπορείτε να εκτελέσετε την εφαρμογή για να παρακολουθήσετε την κίνηση του αγοριού. Τι παράδοξο παρατηρείτε στην κίνηση του αγοριού καθώς πατάτε τα βελάκια; Όταν αφήνετε τα βελάκια;
Για να δίνεται η δυνατότητα να σταματά η κίνηση, θα προγραμματίσετε ανάλογα το αντικείμενο boy. Σταμάτημα της Κίνησης προς τα Δεξιά Από τις ιδιότητες του object boy επιλέξτε Add Event Key Release Right Από τις ενέργειες (actions) επιλέξτε Move Fixed και από το παράθυρο με τις ιδιότητες της κίνησης: Κλικ στο stop. Ορίστε ακόμη τα events και τα actions που σταματούν την κίνηση του αγοριού προς τα αριστερά, πάνω και κάτω. Τώρα πρέπει να προγραμματίσετε το αγόρι ώστε να μη διαπερνά τους βράχους. Ποιο γεγονός (event) έχει να κάνει με την επαφή (σύγκρουση) του αγοριού με βράχο (rock); Αναζητήστε το στα events. Ποια ενέργεια (action) θα ορίσετε όταν συμβεί αυτή η σύγκρουση; Εκτελέσετε την εφαρμογή. Η κίνηση είναι σωστή, όμως το παιχνίδι δεν έχει νόημα Γ. ΣΚΟΠΟΣ ΤΟΥ ΠΑΙΧΝΙΔΙΟΥ ΤΕΡΜΑΤΙΣΜΟΣ ΠΙΣΤΑΣ Σκοπός του παιχνιδιού είναι να φτάσει το αγόρι στο burger. Για να έχει ενδιαφέρον, όμως, το παιχνίδι, πρέπει να υπάρχει κάποια βαθμολογία. Για το λόγο αυτό, όταν η αποστολή έχει πραγματοποιηθεί (το αγόρι φτάνει στο burger): α. Ο παίχτης κερδίζει 10 βαθμούς. β. Το burger αλλάζει θέση. γ. Ο παίχτης πρέπει να φτάσει στο burger στη νέα του θέση. Το αγόρι τρώει (έρχεται σε επαφή με το burger) Ποιο γεγονός (event) έχει να κάνει με την επαφή (σύγκρουση) του burger με το αγόρι; Αναζητήστε το στα events του object burger. Ποια (2) πράγματα θα πραγματοποιηθούν τότε; 1. Από την καρτέλα Score επιλέξτε Set Score new score: 10 και τσεκάρουμε την επιλογή relative (αν δεν το κάνουμε δε θα προστίθενται 10 βαθμοί κάθε φορά που το boy βρίσκει το burger, αλλά η βαθμολογία θα είναι πάντοτε 10). 2. Για το ίδιο γεγονός, από την καρτέλα Move επιλέξτε Jump to Random (το burger εμφανίζεται σε μια νέα τυχαία θέση). Εκτελέσετε την εφαρμογή. Η κίνηση είναι σωστή, το burger αλλάζει θέσεις, η βαθμολογία αυξάνει, όμως το παιχνίδι δεν τελειώνει ποτέ Δ. ΖΩΕΣ ΧΡΟΝΟΣ Για να υπάρχει μεγαλύτερο ενδιαφέρον, θα εισάγουμε την έννοια των ζωών (lives). Ο παίκτης ξεκινά το παιχνίδι με 3 ζωές. Αν όμως καθυστερεί να εντοπίσει το burger, χάνει 1 ζωή. Όταν τελειώσουν οι ζωές, το παιχνίδι τερματίζει.
Ζωές Από τις ιδιότητες του object boy επιλέγουμε Add Event Create Από την καρτέλα score επιλέγουμε τις ενέργειες Set Lives new lives: 3 και Score Caption με την επιλογή show σε score και lives (ώστε να εμφανίζονται στη γραμμή τίτλου το score και οι ζωές.) Χρόνος Στο GAME MAKER διαχειριζόμαστε το χρόνο με ένα είδος ρολογιού. Το ρολόι αρχίζει να μετράει από τη στιγμή που το αγόρι έπιασε το burger για 1η φορά και πήρε τους πρώτους 10 πόντους (του δίνουμε μία περίοδο χάριτος στον πρώτο γύρο για να προσαρμοστεί στην κίνηση με τα βελάκια). Από τις ιδιότητες του burger, στο event collision boy εισάγετε από την καρτέλα main2 την ενέργεια Set alarm και ορίστε το number of steps σε 400 για να μη χάνει πολύ γρήγορα ο παίκτης. Όταν λοιπόν ο χρόνος φτάσει στο 400 θα χτυπήσει ο συναγερμός. Θα πρέπει να καθορίσουμε τι ενέργειες θα γίνουν τότε: Στις ιδιότητες του object: burger ορίζουμε Add event Alarm Alarm 0 Από την καρτέλα main2 επιλέγουμε την ενέργεια (action) Display Message Πληκτρολογούμε ένα μήνυμα που θα ενημερώνει το χρήστη ότι έχασε 1 ζωή. Εισάγετε μία ακόμη ενέργεια (action) που θα μειώνει τον αριθμό των ζωών (lives) κατά 1. Ποια είναι αυτή η ενέργεια; Αναζητήστε την στην καρτέλα score και εισάγετέ την στα actions. Τέλος, εισάγετε μία ενέργεια που θα θέτει το alarm να ξαναρχίσει να μετράει το χρόνο. Από την καρτέλα main 2 επιλέγουμε Set alarm number of steps: 400 Εκτελέσετε την εφαρμογή. Το στοιχείο του χρόνου λειτουργεί, οι ζωές μειώνονται, όμως το παιχνίδι εξακολουθεί να μην τερματίζει Ε. ΤΕΡΜΑΤΙΣΜΟΣ ΠΑΙΧΝΙΔΙΟΥ Για να τερματίζει το παιχνίδι όταν ο αριθμός των ζωών γίνεται 0, πρέπει να υπάρχει κάποιο είδος συνθήκης που θα ελέγχει αν οι ζωές έχουν τελειώσει. Αυτό υλοποιείται με το event No More Lives. Από τις ιδιότητες του object boy επιλέγουμε Add Event Other No More Lives Από την καρτέλα main2 επιλέγουμε την ενέργεια End Game. Σημείωση: Καλό είναι με τον τερματισμό του παιχνιδιού, η έξοδος να μην πραγματοποιείται απότομα, αλλά να εμφανίζεται ένα μήνυμα π.χ. GAME OVER!! Ποια ενέργεια (action) εμφανίζει το συγκεκριμένο μήνυμα; Εισάγετέ την στο ίδιο γεγονός πριν την ενέργεια End Game. Συγχαρητήρια! Έχετε ολοκληρώσει το παιχνίδι σας. Απολαύστε το!!