1ο μέρος 1. Φτιάχνουμε την πίστα. Μια ενδεικτική πίστα φαίνεται παρακάτω: Εικόνα 1 Για να φτιάξουμε το τείχος επιλέγουμε καταρχήν την καρτέλα Γραφικά (κάτω δεξιά) και έπειτα το γεμάτο τετράγωνο από την εργαλειοθήκη. Επίσης επιλέγουμε και αντίστοιχο γραφικό, κάτω από την εργαλειοθήκη. Στη συνέχεια σχεδιάζουμε την πίστα στην επιφάνεια εργασίας, φροντίζοντας να αφήσουμε λίγο κενό χώρο στα δεξιά όπως στην εικόνα 1, για να βάλουμε εκεί αργότερα τα κουμπιά πλοήγησης της χελώνας. Βάζουμε επίσης μια χελώνα κάτω αριστερά, και ένα γραφικό όπως π.χ. ένα αστέρι που θα συμβολίζει το σημείο τερματισμού της χελώνας. 2. Φτιάχνουμε τα κουμπιά πλοήγησης. Συγκεκριμένα, τέσσερα κουμπάκια πλοήγησης με ονόματα πάνω, κάτω, Α και Δ. Τα κουμπιά καθοδηγούν τη χελώνα να κινηθεί προς τα επάνω, προς τα κάτω, αριστερά και δεξιά αντίστοιχα, όπως για παράδειγμα την εικόνα 2. Επίσης, φτιάχνουμε και ένα κουμπί με τη λεζάντα έναρξη, το οποίο θα το πατάει ο χρηστής στην αρχή του παιχνιδιού για να ξεκινήσει το παιχνίδι. Το κουμπί αυτό τοποθετεί τη χελώνα σε μια αρχική θέση (π.χ. κάτω αριστερά). Εικόνα 2 3. Γράφουμε τις διαδικασίες για τα κουμπιά. Κάθε διαδικασία, ως γνωστών, θα πρέπει να έχει το ίδιο όνομα με το αντίστοιχο κουμπί που ελέγχει, π,χ. η διαδικασία για το κουμπί έναρξη θα είναι: για έναρξη θεσεθεση [-250-190] θεσεκατευθυνση 0 συνεχώς [μπ 6 περίμενε 1] Για τα άλλα 4 κουμπιά οι διαδικασίες είναι: για Α θεσεκατευθυνση 270 για Δ θεσεκατευθυνση 90 για ΠΑΝΩ θεσεκατευθυνση 0 για ΚΑΤΩ θεσεκατευθυνση 180 Φ Ι Λ Ι Π Π Ε Ι Ο 1 ο Γ υ μ ν ά σ ι ο Β έ ρ ο ι α ς 1
ΠΑΡΑΤΗΡΗΣΕΙΣ: 1. εντολή θεσεκατευθυνση x ή θεσεκτθ x Η χελώνα στρέφεται κατά x o σε σχέση με το κέντρο της σελίδας 2. εντολή θεσεθεση [x, y] Η χελώνα μετακινείται ως προς το κέντρο της σελίδας x pixels κατά τον οριζόντιο άξονα και y pixels κατά τον κατακόρυφο άξονα ΠΡΟΣΟΧΗ: Ανάλογα με το σχήμα της πίστας που έχουμε φτιάξει και το πού έχουμε ορίσει το σημείο εκκίνησης πρέπει να χρησιμοποιήσουμε τις κατάλληλες εντολές θέσης και κατεύθυνσης ώστε να θέτουμε κάθε φορά τη χελώνα σωστά στη θέση εκκίνησης στη διαδικασία έναρξη, όπως παραπάνω. 4. Το επόμενο βήμα είναι να πούμε στο πρόγραμμα τι θα συμβεί όταν η χελώνα πέσει πάνω στον τοίχο και τι όταν η χελώνα φτάσει στο σημείο τερματισμού. Α. Όταν η χελώνα πέφτει στον τοίχο, ο παίκτης θα «χάνει» και το παιχνίδι θα ολοκληρώνεται. Ο παίκτης θα ειδοποιείται με μια «ανακοίνωση». Κάνουμε δεξί κλικ στον τοίχο επεξεργασία γκρι, και γραφούμε την εντολή: ανακοίνωση [Έπεσες στον τοίχο!] ολαστοπ Β. Όταν η χελώνα φτάσει στο σημείο τερματισμού (εδώ βάλαμε ένα αστέρι) ο παίκτης θα ενημερώνεται από το παιχνίδι ότι κέρδισε και αυτό θα σταματάει. Κάνουμε δεξί κλικ στο αστέρι επεξεργασία κίτρινο, και γραφούμε την εντολή: ανακοίνωση [Κέρδισες!] ολαστοπ Φ Ι Λ Ι Π Π Ε Ι Ο 1 ο Γ υ μ ν ά σ ι ο Β έ ρ ο ι α ς 2
2ο μέρος Στο 2ο μέρος της δραστηριότητας θα επεκτείνουμε το παιχνίδι που φτιάξαμε, έτσι ώστε: Α) το παιχνίδι να μην ολοκληρώνεται όταν η χελώνα πέσει πάνω στον τοίχο, αλλά να κινείται προς τα πίσω και να συνεχίζει, Β) να μετριέται ο συνολικός χρόνος που χρειάζεται η χελώνα για να φτάσει στον τερματισμό, ο οποίος θα φαίνεται στο μήνυμα τερματισμού, Γ) η χελώνα να περνάει από περιοχές της πίστας, από όπου θα παίρνει πόντους. Έτσι, σκοπός του παιχνιδιού θα είναι να φτάσει στον τερματισμό με τους περισσότερους δυνατούς πόντους, Δ) να υπάρχουν «εμπόδια» στην κίνηση της χελώνας, που θα αφαιρούν πόντους από τη συνολική της συγκομιδή, και επομένως θα πρέπει να τα αποφεύγει. Ε) προαιρετικά μπορούμε να ρυθμίσουμε την ταχύτητα κίνησης της χελώνας με τη βοήθεια ενός μεταβολές. Ε π έ κ τ α σ η Α. Προκείμενου η χελώνα να «ανακλάται» όταν πέφτει πάνω στον τοίχο θα πρέπει να αλλάξουμε την εντολή που γράψαμε στο 1ο μέρος. Κάνουμε δεξί κλικ και πάλι στον τοίχο επεξεργασία γκρι, και αντικαθιστούμε την εντολή ανακοίνωση που είχαμε γράψει με την: πι 30 Έτσι, η χελώνα θα χτυπά στα τοιχώματα και θα φεύγει πίσω συνεχίζοντας την πορεία της. Ε π έ κ τ α σ η Β. Θα χρησιμοποιήσουμε την εντολή ΑρχικοποιησηΧρονιστη για να ρυθμίσει το χρονόμετρο στο 0, στην αρχή του προγράμματος, δηλαδή στη διαδικασία έναρξη. Τροποποιούμε λοιπόν τη συγκεκριμένη διαδικασία ως εξής: για εναρξη ΑρχικοποιησηΧρονιστη συνεχώς [μπ 6 περίμενε 1] Στο του παιχνιδιού θέλουμε να εμφανίζεται ο συνολικός χρόνος που χρειάστηκε η χελώνα για να τερματίσει, μαζί με το μήνυμα τερματισμού. Στο σημείο τερματισμού (αστέρι), αλλάζουμε το μήνυμα ως εξής: Ανακοίνωση (φρ[κέρδισες! Ο συνολικός σου χρόνος ήταν] χρονιστης / 10[δευτερόλεπτα]) ολαστοπ Ο χρονιστής κρατάει το χρόνο παιχνιδιού σε δέκατα του δευτερολέπτου, γι αυτό τον διαιρούμε με το 10, για να εμφανιστεί σε δευτερόλεπτα (Εικόνα 3). Εικόνα 3 Ε π έ κ τ α σ η Γ. Θα φτιάξουμε πράσινες και μπλε περιοχές, από όπου η χελώνα, όταν περνάει, θα ανταμείβεται με πόντους, π.χ. με 20 πόντους στις πράσινες και με 10 πόντους στις μπλε περιοχές. Στο του παιχνιδιού θα εμφανίζεται στο μήνυμα τερματισμού, εκτός από το χρόνο, και οι συνολικοί πόντοι του παίχτη. Οι πόντοι θα αποθηκεύονται σε μια μεταβλητή, που θα δημιουργείται στη διαδικασία έναρξη. Προσθέτουμε λοιπόν την εντολή δημιουργίας της μεταβλητής ποντοι στη διαδικασία μας: για εναρξη κάνε ποντοι 0 ΑρχικοποιησηΧρονιστη συνεχώς [μπ 6 περίμενε 1] Φ Ι Λ Ι Π Π Ε Ι Ο 1 ο Γ υ μ ν ά σ ι ο Β έ ρ ο ι α ς 3
Εικόνα 4 Προκείμενου να εμφανιστεί το παραπάνω μήνυμα, θα πρέπει να αλλάξουμε το μήνυμα τερματισμού ώστε να εμφανίζει και τους πόντους, ως εξής: Ανακοίνωση(φρ[Κέρδισες! Ο συνολικός σου χρόνος ήταν] χρονιστης / 10[δευτερόλεπτα. Μάζεψες ] :ποντοι [πόντους]) ολαστοπ Τέλος, χρωματίζουμε συγκεκριμένα σημεία της πίστας με λεμονί ή μπλε χρώμα, χρησιμοποιώντας το μολύβι και κάποιο σχήμα, π.χ. τετράγωνο ή κύκλο, όπως φαίνεται στην εικόνα 5. Κάνουμε δεξί κλικ στο επεξεργασία λεμονί κάνε ποντοι :ποντοι + 20 Παρομοίως, δεξί κλικ στο επεξεργασία μπλε κανε ποντοι :ποντοι + 10 Εικόνα 5 Ε π έ κ τ α σ η Δ. Με παρόμοιο τρόπο μπορούμε να βάλουμε στην πίστα «εμπόδια», τα οποία πρέπει να αποφύγει η χελώνα για να μη χάσει πόντους. Έτσι, «δυσκολεύομε» λίγο το παιχνίδι μας! Τα εμπόδια μπορεί να είναι είτε γραφικά είτε χρωματισμένες περιοχές, π.χ. καφέ. Φ Ι Λ Ι Π Π Ε Ι Ο 1 ο Γ υ μ ν ά σ ι ο Β έ ρ ο ι α ς 4
Εικόνα 6 Το μόνο που χρειάζεται λοιπόν είναι να κάνουμε δεξί κλικ σε μια καφέ περιοχή κάνε ποντοι :ποντοι 5 Ε π έ κ τ α σ η Ε. Μπορούμε να εμπλουτίσουμε με ήχους το παιχνίδι μας. Για παράδειγμα, τόσο στον τερματισμό όσο και κάθε φορά που χτυπά σε τοίχο ή περνά εμπόδιο μπορούμε να εισάγουμε ήχους ως εξής: - Από το μενού Αρχείο Εισαγωγή Ήχος πάμε στο φάκελο SOUNDS στο φάκελο του προγράμματος και επιλέγουμε τον επιθυμητό ήχο - Διαλέγουμε το αρχείο που θέλουμε και εμφανίζεται στην επιφάνεια εργασίας το διπλανό εικονίδιο. - Έστω ότι είναι αρχείο επευφημιών για το τερματισμό. Στην επεξεργασία του σημείου τερματισμού συμπληρώνουμε εκκίνηση cheers5 όπου cheers5 το όνομα του αρχείου ήχου. - Εάν δε θέλουμε να φαίνεται στην επιφάνεια εργασίας το εικονίδιο του ήχου με δεξί κλικ επάνω του πάμε στην επεξεργασία και αναιρούμε την επιλογή ορατό. Φ Ι Λ Ι Π Π Ε Ι Ο 1 ο Γ υ μ ν ά σ ι ο Β έ ρ ο ι α ς 5
ΠΑΡΑΛΛΑΓΗ: Η καθοδήγηση της χελώνας θα γίνεται από το πληκτρολόγιο με την βοήθεια των τεσσάρων βελών. Τα βέλη αριστερά και δεξιά θα στρίβουν την χελώνα κατά 10 μοίρες προς την αντίστοιχη κατεύθυνση ενώ τα βέλη πάνω και κάτω θα αυξομειώνουν την ταχύτητα της. Το παιχνίδι θα ξεκινά με το πάτημα ενός πλήκτρου. Προγραμματίστε την χελώνα. Δώστε ως οδηγία το όνομα μίας διαδικασίας (για παράδειγμα Κίνηση) την οποία θα γράψετε στην συνέχεια στην καρτέλα Διαδικασίες και στο πεδίο Εκτέλεση επιλέξτε πολλές φορές Γράψτε την διαδικασία κίνηση στην καρτέλα εντολών. Ως γνωστό η κίνηση επιτυγχάνεται με κατάλληλο συνδυασμό των εντολών μπροστά και περίμενε που περιγράφουν ένα μικρό βήμα της χελώνας. Στην εντολή μπροστά χρησιμοποιήστε μία μεταβλητή :βήμα ώστε ο χρήστης να ελέγχει την ταχύτητα της χελώνας. Η μεταβλητή αυτή θα παίρνει αρχική τιμή στην διαδικασία ξεκίνα και θα αυξομειώνεται με τα βέλη πάνω και κάτω του πληκτρολογίου. Σε κάθε όμως βήμα της χελώνας πρέπει να γίνεται έλεγχος αν πατήθηκε κάποιο πλήκτρο από το πληκτρολόγιο, Ο έλεγχος αυτός γίνεται με την εντολή: Αν πλήκτρο? [καθοδήγηση] όπου καθοδήγηση είναι το όνομα μίας νέας διαδικασίας που θα ελέγξει ποιο πλήκτρο πατήθηκε και θα κάνει τις ανάλογες ενέργειες Γράψτε την διαδικασία καθοδήγηση. Αυτή θα έχει την μορφή: για καθοδήγηση κάνε "πλήκτρο ΔιάβασεΧαρ αν (ascii :πλήκτρο) = 37 [αρ 10].... Η εντολή κάνε αποθηκεύει τον χαρακτήρα που πατήθηκε στην μεταβλητή πλήκτρο. Η εντολή αν ελέγχει αν ο ascii κώδικας του χαρακτήρα που πατήθηκε είναι ο 37 δηλαδή το αριστερό βέλος ( ) οπότε καθορίζει αναλόγως την κατεύθυνση της χελώνας. Συμπληρώστε τις εντολές που θα ελέγχουν τους άλλους χαρακτήρες. Δίνονται οι ascii κώδικες: 38 39 40. Γράψτε την διαδικασία ξεκίνα. Η διαδικασία αυτή θα δίνει στην χελώνα την αρχική της θέση (εντολή ΘέσεΘέση) και την αρχική της κατεύθυνση (εντολή ΘέσεΚτθ). Επίσης θα μηδενίζει τον χρόνο (εντολή ΑρχικοποίησηΧρονιστή), θα δώσει αρχική τιμή στην μεταβλητή βήμα, και θα ενεργοποιεί την χελώνα (εντολή ενεργό), δηλαδή θα την θέτει σε κίνηση. Γράψτε τις διαδικασίες έχασες και κέρδισες. Ο χρόνος (σε δευτερόλεπτα) στην διαδικασία κέρδισες υπολογίζεται από την παράσταση χρονιστής / 10. Φ Ι Λ Ι Π Π Ε Ι Ο 1 ο Γ υ μ ν ά σ ι ο Β έ ρ ο ι α ς 6
MicroWorlds Pro - Πώς ελέγχω αν μια χελώνα ακούμπησε μια άλλη για έναρξη αρχή συνεχώς [ χ1, μπ 1 / 20 αν αγγίζει? "χ1 "χ2 [ χ1, δε τυχαιο 360] ] για αρχή χ1, Θεσεθεση [ -100 0 ] χ1, θεσεκατευθυνση 90 χ2, Θεσεθεση [ 0 0 ] χ2, θεσεκατευθυνση 0 MicroWorlds Pro - Κίνηση με πλήκτρα για Εναρξη αρχή συνεχώς [μπ 1 / 20 ] συνεχώς [ περίμενε_βελάκι] για αρχή θεσεθεση [ -200 0 ] θεσεκατευθυνση 90 για περίμενε_βελάκι κανε "χαρακτήρα ascii διαβασεχαρ αν :χαρακτήρα = 38 [ Θεσεκατευθυνση 0] αν :χαρακτήρα = 39 [ Θεσεκατευθυνση 90] αν :χαρακτήρα = 40 [ Θεσεκατευθυνση 180] αν :χαρακτήρα = 37 [ Θεσεκατευθυνση 270] για περίμενε_χαρακτήρα κανε "χαρακτήρα διαβασεχαρ αν :χαρακτήρα = "ς [ Θεσεκατευθυνση 0] αν :χαρακτήρα = "δ [ Θεσεκατευθυνση 90] αν :χαρακτήρα = "σ [ Θεσεκατευθυνση 180] αν :χαρακτήρα = "α [ Θεσεκατευθυνση 270] Φ Ι Λ Ι Π Π Ε Ι Ο 1 ο Γ υ μ ν ά σ ι ο Β έ ρ ο ι α ς 7