ΑγαπημέναΕργαλεία για την ΤάξηΠρογραμματισμός

Παιχνίδι τύπου Rally στο Scratch 3!

Σε προηγούμενο άρθρο μου, είχαμε δει τα αναλυτικά βήματα για τη δημιουργία ενός παιχνιδιού τύπου Arcanoid στο Scratch 3 (δείτε σχετικά εδώ). Στο άρθρο αυτό θα δούμε πως μπορούμε να δημιουργήσουμε ένα παιχνίδι τύπου Rally (Racing) με αγώνες αυτοκινήτων. Θέλουμε για μια ακόμη φορά να μπορεί να υλοποιηθεί σε σχετικά σύντομο χρονικό διάστημα (2-3) διδακτικές ώρες, αλλά να υπάρχει μια σχετική πολυπλοκότητα που να το κάνει αρκετά ενδιαφέρον και να ζητάμε να παίξουμε ξανά και ξανά. Ας ξεκινήσουμε…

Οι βασικές προδιαγραφές – Σενάριο

Το παιχνίδι μας θα περιλαμβάνει:

α) 2 αυτοκίνητα διαφορετικού χρώματος

β) 1 (ή και περισσότερες) πίστες για τον αγώνα

γ) τους κανόνες για το πότε κάποιος κερδίζει, τι γίνεται αν βγει εκτός πίστας, κλπ, κλπ…

Τα παραπάνω είναι ενδεικτικά για να έχουμε μια βάση να ξεκινήσουμε και φυσικά εσείς μπορείτε να κάνετε όσες αλλαγές και προσθήκες επιθυμείτε.

Υλοποίηση

Μεταβαίνουμε στον επίσημο ιστότοπο του Scratch. Εναλλακτικά εκκινούμε τον επεξεργαστή εκτός σύνδεσης (Scratch Offline Editor) που έχουμε κατεβάσει στον υπολογιστή μας. Ξεκινάμε χτίζοντας το περιβάλλον και τους πρωταγωνιστές. Το Scratch ξεκινά πάντα με ένα (λευκό) υπόβαθρο και μοναδικό αντικείμενο (πρωταγωνιστή τη γάτα). Δεν χρειαζόμαστε τη γάτα, οπότε τη διαγράφουμε.

Πάμε να δημιουργήσουμε το πρώτο μας αυτοκίνητο. Αν ψάξετε για αντικείμενα (sprites) αυτοκινήτου θα βρείτε αμέτρητα, αλλά ας δούμε και μαζί πως μπορείτε να σχεδιάσετε τα δικά σας. Επιλέγουμε νέο αντικείμενο, και πατάμε το εργαλείο της ζωγραφικής:

Χρησιμοποιώντας μόνο το εργαλείο του ορθογωνίου, σχεδιάστε μια φόρμουλα σε κάτοψη, κάπως έτσι:

 

Φυσικά μπορείτε να αφιερώσετε περισσότερο χρόνο και να το τελειοποιήσετε όμως πραγματικά δεν είναι απαραίτητο, αφού θα το μικρύνουμε αρκετά για να το βάλουμε στην πίστα που θα φτιάξουμε και έτσι οι λεπτομέρειες δε θα φαίνονται. Εννοείται πως μπορείτε να το κάνετε ακόμη πιο απλό (π.χ. ένα απλό ορθογώνιο και 4 μαύρες ρόδες στα άκρα).

Μόλις αποφασίσετε ότι αυτή θα είναι η τελική μορφή του πρώτου σας αυτοκινήτου, και αφού του δώσετε το τελικό χρώμα, ονομάστε το αντικείμενο ως PurpleRally, BlueRally, RedRally ώστε το χρώμα που έχετε δώσει να αντιπροσωπεύει το πρώτο αυτοκίνητο. Στη συνέχεια κάνετε έναν διπλασιασμό για να έχετε ένα πιστό αντίγραφο στο οποίο θα αλλάξετε χρώμα και θα αντιστοιχεί στο δεύτερο αυτοκίνητο. Δώστε σε αυτό το αντίστοιχο όνομα.

Αφού κάνετε τα παραπάνω πλέον έχετε 2 αυτοκίνητα, έτοιμα για αγώνες! Επειδή όμως είναι αρκετά μεγάλα σε μέγεθος, μπορείτε να το αλλάξετε από το 100% στο 10-15% ανάλογα με τις ανάγκες σας. Αν έγιναν όπως πρέπει τα παραπάνω θα πρέπει να βλέπετε κάτι τέτοιο:

Έχουμε λοιπόν έτοιμα 2 αυτοκίνητα, ένα μπλε (BlueRally) και ένα κόκκινο (RedRally) και προχωράμε στη σχεδίαση της πίστας μας… Κι εδώ αν ψάξετε, θα βρείτε πολλές έτοιμες, αλλά μπορείτε πάλι να δημιουργήσετε τη δική σας, με τη σχεδίαση. Προσθέστε λοιπόν ένα νέο υπόβαθρο και σχεδιάστε μια πίστα, στην οποία θα κινούνται τα αυτοκίνητά σας. Φροντίστε για αρχή να κάνετε κάτι απλό για να μπορέσετε να πραγματοποιήσετε τις δοκιμές σας (π.χ. μια απλή οβάλ πίστα). Μερικά παραδείγματα:

Αφού σχεδιάσετε την πίστα σας, μετακινήστε τα 2 αυτοκίνητα και αν χρειάζεται αλλάξτε το μέγεθός τους (ίσως χρειάζεται να τα μικρύνετε) ώστε να μπορούν να κινούνται μέσα στα όρια της πίστας. Θα πρέπει να έχουμε κάτι τέτοιο:

Παιχνίδι τύπου Rally στο Scratch πίστα

Πίστα και αυτοκίνητα, έτοιμα. Ας δώσουμε τώρα λίγη κίνηση!

Το παιχνίδι θα παίζεται από 2 χρήστες, άρα θα πρέπει για κάθε αυτοκίνητο να ορίσουμε 4 κουμπιά του πληκτρολογίου για γκάζι, φρένο, στροφή αριστερά, στροφή δεξιά. Επιλέγουμε το πρώτο αυτοκίνητο (για το παράδειγμά μας, το μπλε). Σχετικά με το γκάζι, μπορούμε να ορίσουμε το πάνω βέλος, και μάλιστα, κάθε φορά που το πατάμε, το αυτοκίνητο να επιταχύνει. Αντίστοιχα με το κάτω βέλος θα φρενάρει και με τα πλήκτρα αριστερά και δεξιά θα στρίβει. Για την επιτάχυνση και επιβράδυνση, θα δημιουργήσουμε μια μεταβλητή την οποία θα ονομάσουμε SpeedA (για να καταλαβαίνουμε  ότι αφορά την ταχύτητα του 1ου αυτοκινήτου), η οποία θα αλλάζει προς τα επάνω ή προς τα κάτω ανάλογα με το ποιο πλήκτρο πατάμε.

Μια (ενδεικτική) λύση στα παραπάνω είναι αυτή που ακολουθεί:

Ας τα εξηγήσουμε λίγο.. Όταν ξεκινά το παιχνίδι πατώντας το σημαιάκι, ορίζουμε την ταχύτητα στο μηδέν (0) και θέτουμε σε κίνηση το αυτοκίνητο για πάντα. Η κίνηση γίνεται πατώντας το πάνω βέλος (αυξάνοντας σταδιακά την ταχύτητα SpeedA), είτε πατώντας το κάτω βέλος (μειώνοντας σταδιακά την ταχύτητα SpeedA). Παρατηρήστε ότι στη μείωση της ταχύτητας έχουμε προσθέσει μια δομή επιλογής ώστε η ταχύτητα να μειώνεται μέχρι να γίνει μηδέν (οπότε το αυτοκίνητο σταματά). Αν παραλείψετε τη δομή επιλογής, απλά το αυτοκίνητο θα μπορεί να κινείται και προς τα πίσω (με όπισθεν). Εσείς αποφασίζετε για αυτή τη λεπτομέρεια. Τέλος με τα πλήκτρα αριστερά και δεξιά στρίβει το αυτοκίνητο κατά 15 μοίρες. Το πόσο θα στρίψει εξαρτάται από την πίστα και από το πόσο απότομα θέλετε να πραγματοποιείται η στροφή του αυτοκινήτου. Με λίγες δοκιμές θα πετύχετε αυτό που σας ικανοποιεί.

Όλα τα παραπάνω δίνουν μια πρώτη εικόνα για το πως θα κινούνται τα οχήματα σε μια απλοϊκή βάση. Ας προσπαθήσουμε να το εμπλουτίσουμε λίγο παραπάνω…

Επεκτάσεις στο παιχνίδι μας…

Νομίζω θα συμφωνήσετε, ότι θα έκανε αρκετά πιο ενδιαφέρον το παιχνίδι, αν το αυτοκίνητο βγαίνει εκτός πίστας να «τυλίγεται στις φλόγες», να εμφανίζεται μήνυμα «Μόλις τράκαρες!», και να μας επιστρέφει το όχημα στην αρχή για να ξεκινήσει εκ νέου τον αγώνα. Έτσι όταν θα παίζουμε με αντίπαλο, να είμαστε προσεχτικοί ώστε να οδηγούμε εντός των ορίων της πίστας. Τι θα αλλάξει στο πρόγραμμά μας; Ας τα δούμε βήμα – βήμα…

Τι σημαίνει τυλίγεται στις φλόγες; Θα δημιουργήσουμε μια νέα ενδυμασία για το αυτοκίνητό μας στην οποία θα μοιάζει σαν να πήρε φωτιά. Κατά την επαφή με τα όρια της πίστας θα αλλάζει σε επόμενη ενδυμασία. Για να το κάνουμε αυτό, επιλέγουμε το πρώτο (μπλε) αυτοκίνητο και στις ενδυμασίες δημιουργούμε ένα αντίγραφο στο οποίο θα ζωγραφίσουμε κάτι σαν φωτιά (πάλι μην εστιάσετε σε λεπτομέρειες). Παράδειγμα:

Τι σημαίνει εκτός πίστας; Θα θεωρήσουμε ότι εκτός πίστας είναι όταν το αυτοκίνητό μας αγγίζει τα όριά της. Τι θα αλλάξει στον κώδικα; Θα προσθέσουμε μια νέα δομή επιλογής, ώστε αν αγγίζει το αυτοκίνητο τα όρια (δηλαδή το χρώμα) της πίστας να αλλάζει στην επόμενη ενδυμασία (του φλεγόμενου οχήματος) και να εμφανίζει το μήνυμα μόλις τράκαρες!

Rally Scratch CrashΜια χαρά μέχρι εδώ. Ας προσθέσουμε τώρα λίγο κώδικα για να επαναφέρουμε το αυτοκίνητό μας στην αρχή της πίστας, να κοιτά προς τη σωστή κατεύθυνση, και να έχει την αρχική του ενδυμασία, για τις περιπτώσεις που είτε ξεκινά νέο παιχνίδι, είτε μετά από ατύχημα (έξοδο από την πίστα). Για να το κάνουμε αυτό θα δημιουργήσουμε ένα δικό μας μπλοκ εντολών (ας το πούμε ΕκκίνησηΑ), το οποίο θα ενσωματώσουμε και στον αρχικό κώδικα του πρώτου αυτοκινήτου για να λειτουργεί βέλτιστα:

Rally scratch start game

Εσείς θα προσέξετε την αρχική θέση του οχήματός σας, με βάση το σημείο από το οποίο θα θέλετε να ξεκινά στη δική σας πίστα. Αν χρειάζεται, τροποποιήστε τις τιμές στην εντολή

Πήγαινε στη θέση x: …..   y: …..

Επόμενος προφανής προβληματισμός είναι το πότε θα κερδίζει κάποιο αυτοκίνητο… Όπως είδατε στην παραπάνω πίστα έχουμε προσθέσει μια άσπρη γραμμή. Θεωρήστε αυτή τη γραμμή ως γραμμή τερματισμού. Μόλις το αυτοκίνητο την αγγίζει θα λαμβάνει μήνυμα ότι είναι ο νικητής! Προσοχή όμως… θα πρέπει να λάβουμε τα μέτρα μας μήπως κάποιος πονηρός κάνει αναστροφή και προσεγγίσει ανάποδα την πίστα. Θα πρέπει να ελέγχουμε την κατεύθυνση του οχήματος και αν διαπιστωθεί ότι κινείται αντίστροφα να μην ανακηρύσσεται νικητής. Ο κώδικας:

Rally game winner

Συνολικά λοιπόν ο κώδικας για το πρώτο (μπλε) αυτοκίνητο θα είναι ο εξής:

Rally Scratch Blue Rally

Έχοντας ολοκληρώσει τα βασικά για το πρώτο αυτοκίνητο, μένει να αντιγράψουμε τον κώδικα και στο δεύτερο αυτοκίνητο. Φυσικά θα πρέπει να πραγματοποιήσουμε αλλαγές ώστε να λειτουργεί σωστά. Χρειαζόμαστε κι εδώ δεύτερη ενδυμασία για την περίπτωση του ατυχήματος, νέες μεταβλητές SpeedB και ΕκκίνησηΒ, σωστή αρχικοποίηση της θέσης x και y του αυτοκινήτου και τροποποίηση των μηνυμάτων (πχ όταν είναι νικητής). Ο αναμενόμενος κώδικας είναι ο παρακάτω:

Rally Scratch Red Rally

Αυτό ήταν! Έχετε δημιουργήσει ένα απλό παιχνίδι αγώνων ταχύτητας και έχετε μια βάση από την οποία μπορείτε να ξεκινήσετε και να το προχωρήσετε ακόμη παραπέρα.

Ιδέες για να εξελίξετε το δικό σας παιχνίδι

Θα μπορούσατε…

– να προσθέσετε εμπόδια (πχ λάδια, βράχους, κλπ και όσο το αυτοκίνητο τα αγγίζει να κινείται πολύ αργά)

– να μετράτε τους γύρους που κάνει κάθε αυτοκίνητο και ο νικητής να ανακηρύσσεται αν καταφέρει να ολοκληρώσει χωρίς ατύχημα 2, 3 ή περισσότερους γύρους.

– να ορίσετε «ζωές» για κάθε χρήστη. Να επιτρέπεται δηλαδή περιορισμένος αριθμός ατυχημάτων και κάθε φορά που κάποιο αυτοκίνητο βγαίνει εκτός πίστας να χάνει και μία ζωή.

– να εμφανίζεται κάποια επιβράβευση εντός πίστας (πχ. ένα κλειδί, ένα σημαιάκι) και να υπάρχει δυνατότητα, αν κάποιο όχημα φτάσει πρώτο εκεί και το αγγίξει να κερδίζει μια επιπλέον ζωή.

– να προσθέσετε περισσότερες πίστες (υπόβαθρα), και μόλις κάποιο όχημα ολοκληρώνει επιτυχώς τον πρώτο αγώνα να μεταφέρεται η δράση σε επόμενη πίστα (ίσως πιο απαιτητική).

…και φυσικά ότι άλλο θα μπορούσε να αυξήσει το ενδιαφέρον και να κάνει το παιχνίδι σας ακόμη πιο ελκυστικό.

Βοηθητικά Αρχεία:

Αν θέλετε να ασχοληθείτε μόνο με τον κώδικα, σας δίνω έτοιμο ένα Έργο Scratch (Starter), το οποίο μπορείτε να κατεβάσετε στον υπολογιστή σας και έχει την πίστα και τα δύο αυτοκινητάκια. Ανεβάζετε στο Scratch αυτό το έργο και ξεκινάτε να προσθέτετε κώδικα. (θα το βρείτε εδώ).

Αν θέλετε να το δείτε με κώδικα, πατήστε εδώ

Καλή διασκέδαση!

Share
Share
Μετάβαση στο περιεχόμενο