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

Stigmiotypo othonhs 2025 04 07 085412
Οι βασικές προδιαγραφές – Σενάριο

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

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

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

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

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

Δεδομένου ότι ο σχεδιασμός του παιχνιδιού μπορεί να μας πάρει πολύ χρόνο, μπορούμε να ξεκινήσουμε μόνο με τον προργαμματισμό, πέρνωντας το έτοιμο (“ψημένο”) έργο από τον σύνδεσμο:

Rally Project – Starter

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

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

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

Stigmiotypo othonhs 2025 04 07 103037

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

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

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

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

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

Stigmiotypo othonhs 2025 04 07 103204

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

Stigmiotypo othonhs 2025 04 07 103336

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

Stigmiotypo othonhs 2025 04 07 103445

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

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

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

Stigmiotypo othonhs 2025 04 07 103621

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

Stigmiotypo othonhs 2025 04 07 103759

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

Stigmiotypo othonhs 2025 04 07 103914

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

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

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

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

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

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

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

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

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

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

(πηγή: Παπαγεωργίου Νικόλαος © Embedded)

Αλλαγή μεγέθους γραμματοσειράς
Αντίθεση