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

Έγραψα αυτό το άρθρο με αφορμή τη δημιουργία ενός διασκεδαστικού παιχνιδιού τύπου Arcanoid, στο μάθημα της Πληροφορικής Γυμνασίου. Γνωρίζουμε όλοι την απήχηση που έχουν τα παιχνίδια στα παιδιά, οπότε για να κεντρίσω το ενδιαφέρον των μαθητών/τριών μου για τον προγραμματισμό και τις δυνατότητές του, αποφάσισα να συν-δημιουργήσουμε ένα παιχνίδι στο Scratch 3.

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

Λίγα ιστορικά στοιχεία για το Video Game Arcanoid…

Πριν 40 περίπου χρόνια (το 1986) η ιαπωνική εταιρεία Taito (με εξειδίκευση στις παιχνιδομηχανές), λανσάρει το διάσημο παιχνίδι Arcanoid. Πρόκειται για ένα block breaker game, το οποίο έχει ως σκοπό την απελευθέρωση ενός μικρού διαστημόπλοιου και τη διαφυγή του, σπάζοντας πλακίδια και ανοίγοντας χώρο. Από το 1986 έχουν κυκλοφορήσει δεκάδες διαφορετικές εκδόσεις για πολλές διαφορετικές πλατφόρμες και παιχνιδομηχανές, αλλά η πρώτη, αυτή του 1986 είναι κατά τη γνώμη μου η καλύτερη (ίσως γιατί μου θυμίζει τα παιδικά μου χρόνια).

Αυτό που σίγουρα δε φανταζόμουν τότε, ήταν ότι τόσα χρόνια μετά θα προσπαθούσα μαζί με τους μαθητές και τις μαθήτριές μου, να υλοποιήσουμε μία ακόμη έκδοση στα πλαίσια του μαθήματος της πληροφορικής στο σχολείο. Για όσους και όσες δεν έχουν δει ποτέ την «original» έκδοση, το βιντεάκι που ακολουθεί θα σας βάλει στο κλίμα:

Γιατί στο Scratch 3;

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

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

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

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

β) μια μπάλα η οποία θα κινείται στο χώρο με κύριο στόχο να σπάσει (με τη βοήθειά μας) όλα τα πλακίδια.

γ) το διαστημόπλοιο (την μπάρα δηλαδή) στο οποίο θα πρέπει να αναπηδά η μπάλα για να σπάσουμε τα πλακίδια αλλά και να μη χάσουμε στο παιχνίδι.

δ) τα πλακίδια που θα πρέπει να σπάσουμε

ε) μια περιοχή κάτω από την μπάρα (το διαστημόπλοιο) όπου αν ακουμπά η μπάλα, σημαίνει ότι δεν την προλάβαμε, άρα αποτύχαμε.

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

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

Υλοποίηση

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

Scratch 3 παιχνίδι Arcanoid 01

Θα προσθέσουμε ένα νέο υπόβαθρο, από τη βιβλιοθήκη του Scratch (ενδεικτικά το Neon Tunnel, Galaxy ή Stars). Φυσικά μπορείτε να επιλέξετε όποιο εσείς θέλετε, ή απλά να μεταφορτώσετε κάποιο δικό σας. Αφού το προσθέσετε μπορείτε να διαγράψετε το αρχικό λευκό υπόβαθρο.

Στη συνέχεια θα προσθέσουμε από τη βιβλιοθήκη αντικειμένων τη μπάλα (Ball). Δεν υπάρχει λόγος να σχεδιάσουμε μόνοι μας μπάλα. Αλλάξτε μόνο το μέγεθός της σε 35 – 40%

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

Επιλέγουμε νέο αντικείμενο, και πατάμε το εργαλείο της ζωγραφικής:

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

Παιχνίδι Arcanoid Scratch 3
Αν θέλετε να αλλάξετε το μέγεθος του διαστημόπλοιού σας αυτό το κάνετε εύκολα μετακινώντας κατάλληλα με το ποντίκι σας τις γωνίες του, προσθέτοντας ή αφαιρώντας μήκος και ύψος. Δε χρειάζεται να ανησυχείτε για αυτό, μπορείτε να το κάνετε όσες φορές επιθυμείτε και αργότερα. Μετονομάστε στη συνέχεια το Αντικείμενο1 σε Spaceship (διαστημόπλοιο) ή ότι άλλο εσείς επιθυμείτε.

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

Παιχνίδι Arcanoid Scratch 3

Κάπου εδώ ολοκληρώθηκε η πρώτη φάση της σχεδίασης. Όπως παρατηρείτε δεν έχουμε βάλει ακόμη τα blocks που θα χτυπά η μπάλα. Θα το αφήσετε για αργότερα…

Ώρα για κώδικα…

Κίνηση του διαστημόπλοιου

Το διαστημόπλοιο κινείται αποκλειστικά προς τις κατευθύνσεις αριστερά – δεξιά. Μπορούμε απλά να έχουμε κίνηση με κουμπιά του πληκτρολογίου, αλλά για τις ανάγκες του συγκεκριμένου παιχνιδιού, είναι προτιμότερο να ελέγχουμε κίνηση με την κίνηση του ποντικιού. Ο λόγος είναι καθαρά πρακτικός και αφορά την ταχύτητα απόκρισης (σαφώς ταχύτερα με το ποντίκι). Όπως και να’ χει θα παρουσιάσω και τις δύο μεθόδους…

α) με κουμπιά

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

Παιχνίδι τύπου Arcanoid Scratch 3

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

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

Παιχνίδι Arcanoid Scratch 3

β) με κίνηση του ποντικιού (καλύτερη υλοποίηση ως προς το χειρισμό)

Δοκιμάζοντας τον προηγούμενο τρόπο θα δείτε ότι έχετε πετύχει ικανοποιητική κίνηση αλλά ο χειρισμός δεν είναι και ο πιο εύκολος. Σκεφτείτε ότι θα έχετε μια μπάλα την οποία θα πρέπει να προλάβετε, και η γρήγορη μετάβαση από τη μια πλευρά στην άλλη πιθανότατα θα σας δυσκολέψει. Θα αφήσουμε λοιπόν το πληκτρολόγιο και θα βάλουμε το διαστημόπλοιό μας να ακολουθεί την κίνηση του ποντικιού και μάλιστα αυτή του οριζόντιου άξονα χ αφού δε μας χρειάζεται η κατακόρυφη κίνηση. Άρα από τις κινήσεις θέλουμε την εντολή πήγαινε σε θέση x: ….   y: …. με το x να αντιστοιχεί στη θέση του ποντικιού μας (x ποντικιού από την καρτέλα αισθητήρες) και το y κλειδωμένο σε μια θέση αυτή που μας ταιριάζει σχετικά με τη θέση του διαστημόπλοιου στο χώρο. Πιο απλός κώδικας και καλύτερος χειρισμός…

Κίνηση της μπάλας

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

Ξεκινώντας το παιχνίδι, θα πρέπει να ορίσετε μια αρχική θέση για τη μπάλα. Ας υποθέσουμε το κέντρο της οθόνης (άρα x:0 και y:0). Επίσης μια καλή ιδέα είναι στην πρώτη κίνηση της μπάλας κατά την εκκίνηση αυτή να κάνει κάτι σαν ελεύθερη πτώση – να πέσει προς τα κάτω – άρα δείξε προς κατεύθυνση 180 μοίρες. Τέλος θέλουμε κάθε φορά που φτάνει στα όρια της σκηνής να αναπηδά.

Ενδεικτικά:

scratch 3 arcanoid

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

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

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

Ενδεικτική λύση:

scratch 3 arcanoid game

Οι τιμές από -65 έως 65 μοίρες είναι ενδεικτικές. Μπορείτε να αυξήσετε ή μειώσετε το εύρος, και το ιδανικό για τον καθένα είναι σχετικά υποκειμενικό και μπορεί να καθοριστεί με δοκιμές.

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

Πολύ απλά, αν η μπάλα αγγίξει το αντικείμενο GameOver, θα σταματήσουν τα πάντα και θα ενημερώνεται ο χρήστης ότι το παιχνίδι ολοκληρώθηκε. Ο τερματισμός είναι κάτι απλό, και μπορούμε απλά να πούμε ότι εάν αγγίζει το αντικείμενο GameOver τότε σταμάτησε όλα. Όσον αφορά την ενημέρωση του χρήστη αυτό μπορεί να γίνει πολύ απλά με την προσθήκη ενός επιπλέον υπόβαθρου.

Έχουμε ήδη το αρχικό υπόβαθρο με την εικόνα μας, και προσθέτουμε την ίδια ακριβώς μία ακόμη φορά. Στην δεύτερη όμως, θα πάμε και θα γράψουμε με το εργαλείο κειμένου τη λέξη Game Over. Δείτε στην εικόνα τα δύο ίδια υπόβαθρα Stars και  Stars2 (στο δεύτερο έχουμε γράψει απλά τη φράση Game Over):

Οπότε στη μπάλα, θα προσθέσουμε τον κώδικα:

scratch 3 παιχνίδι

Φυσικά όταν τερματίζει το παιχνίδι μας, το υπόβαθρο θα αλλάζει σε αυτό με το μήνυμα Game Over! Οπότε όταν πατάμε το σημαιάκι για επανεκκίνηση, θα πρέπει να επαναφέρουμε το υπόβαθρο στο αρχικό. Προσθέτουμε λοιπόν στον κώδικα αρχικοποίησης την εντολή άλλαξε υπόβαθρο σε Stars. Μέχρι στιγμής λοιπόν ο κώδικας για την μπάλα έχει ως εξής:

scratch 3 arcanoid παιχνίδι

Τα πλακίδια (Blocks)

Κάπου εδώ τώρα έφτασε και η ώρα των πλακιδίων (blocks). Εδώ πάλι πρέπει να βάλετε προδιαγραφές. Τι θέλετε να κάνετε; Μπορείτε να βάλετε πλακίδια τα οποία μόλις τα αγγίζει η μπάλα θα εξαφανίζονται ή εναλλακτικά να αλλάζουν πρώτα σε άλλη ενδυμασία (μία ή περισσότερες) και να χρειάζονται 2 , 3 ή περισσότερα χτυπήματα πριν εξαφανιστούν. Επιπλέον η μπάλα θα πρέπει να μην τα διαπερνά, αλλά να αλλάζει κατεύθυνση κάθε φορά που αγγίζει κάποιο από αυτά. Τέλος, αν καταφέρετε να τα εξαφανίσετε όλα χωρίς η μπάλα να αγγίξει το αντικείμενο GameOver (δηλαδή το κάτω μέρος της σκηνής) θα είστε νικητής. Όπως και να’ χει για τα πάντα αποφασίζετε εσείς!

Ας υποθέσουμε ότι το δικό μας σενάριο θα έχει 5 σειρές με πλακίδια. Κάθε μία από αυτές θα έχει το δικό της αρχικό χρώμα και για να γίνει λίγο πιο ενδιαφέρον, η πρώτη και η τελευταία σειρά θα χρειάζεται δύο χτυπήματα με την μπάλα πριν εξαφανιστεί. Δε θα βιαστείτε να τοποθετήσετε όλα τα πλακίδια στη σκηνή. Στην αρχή θα εισάγετε μόνο δύο. Το πρώτο θα έχει μία μόνο ενδυμασία (πχ χρώματος μπλε) και το δεύτερο δύο ενδυμασίες (η πρώτη κόκκινη και η δεύτερη μπλε). Φυσικά τα χρώματα πάλι είναι δική σας υπόθεση.

Δε χρειάζεται να σχεδιάσετε μόνοι σας τα μπλοκ. Μπορείτε να χρησιμοποιήσετε το έτοιμο αντικείμενο Button3 και να αλλάξετε λίγο τις διαστάσεις και το χρώμα του για να καλύπτει τις ανάγκες σας:

Με το εργαλείο της ζωγραφικής, κάνετε όσες αλλαγές επιθυμείτε και μπορείτε να καταλήξετε κάπως έτσι, χωρίς όμως να σας δεσμεύει τίποτα:

scrtach 3Εάν θέλετε δεύτερη ενδυμασία στο αντικείμενό σας, απλά δημιουργείτε ένα αντίγραφο, και κάνετε ότι αλλαγές επιθυμείτε σε αυτό.

Για τις ανάγκες του παιχνιδιού δημιουργήστε το αντικείμενο SingleBlock με μια ενδυμασία Sb (είναι αυτό που θα εξαφανίζεται με μία επαφή με τη μπάλα) και το DoubleBlock με δύο ενδυμασίες Db-01 και Db-02 (είναι αυτό που θα εξαφανίζεται μετά από δύο επαφές με τη μπάλα).

Θα γράψετε τον κώδικα μία φορά για κάθε ένα από αυτά τα block και στη συνέχεια θα τα αντιγράψετε για να γεμίσετε τη σκηνή, χωρίς να χρειαστεί να γράφετε ξανά και ξανά τον κώδικα σε κάθε αντικείμενο.

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

Ξεκινήστε λοιπόν με τη δημιουργία του μηνύματος, επιλέγοντας την καρτέλα Συμβάντα και δημιουργήστε το νέο μήνυμα:

Έπειτα δημιουργήστε μια νέα μεταβλητή με όνομα Score (ακολουθήστε τα βήματα όπως φαίνονται στην παρακάτω εικόνα):

scratch 3 create variable score

Οπότε σύμφωνα με όσα προαναφέραμε… ο τελικός κώδικας για το SingleBlock θα είναι κάπως έτσι:

Τι θα γίνεται όμως με τη μετάδοση του μηνύματος ContactBlock;

Θα επιστρέψετε στον κώδικα της μπάλας, και θα προσθέσετε ένα ακόμη σετ εντολών ώστε μόλις η μπάλα λαμβάνει μήνυμα ContactBlock να αλλάζει κατεύθυνση (δοκιμάζουμε την επιθυμητή γωνία). Να σημειώσουμε πως το μήνυμα θα είναι το ίδιο για όλα τα μπλοκ, άρα δε χρειάζεται να προσθέσετε τίποτε περισσότερο στον κώδικα της μπάλας.

Προσθέστε λοιπόν στη μπάλα τον κώδικα:

Αντίστοιχα θα «κινηθείτε» και για το πλακίδιο (DoubleBlock) που θα χρειάζεται 2 επαφές για να εξαφανιστεί. Το σενάριο είναι το ίδιο με πριν μόνο που τώρα η πρώτη επαφή απλά δίνει 100 πόντους, αλλάζει το χρώμα (δεύτερη ενδυμασία) και η δεύτερη επαφή δίνει άλλους 100 και εξαφανίζει το μπλοκ. Για να το κάνουμε αυτό θα γράψετε τον ίδιο κώδικα, με τη διαφορά ότι τώρα χρειάζεται ένας ακόμη έλεγχος για να δούμε ποια ενδυμασία έχει το πλακίδιο. Συγκεκριμένα:

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

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

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

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

Συνεπώς, η τιμή του μετρητή θα καθοριστεί από το πόσα μπλοκ συνολικά έχετε στο παιχνίδι σας. Αν έχετε 30, μπορείτε να ορίσετε αρχική τιμή το τριάντα (30) και όταν φτάσει στο μηδέν (0) έχετε καταφέρει να ολοκληρώσετε το παιχνίδι. Ή, ορίζετε αρχική τιμή το μηδέν και όταν φτάσει το 30 ολοκληρώνεται η διαδικασία. Η απόφαση είναι δική σας!

Δημιουργήστε λοιπόν μια μεταβλητή που θα έχει τον ρόλο του μετρητή, δώστε ένα όνομα, π.χ. NumOfBlocks και κάθε φορά που ένα μπλοκ εξαφανίζεται, θα αυξάνουμε την τιμή της κατά 1.

Ο κώδικας για τα SingleBlocks:

Ο κώδικας για τα DoubleBlocks:

Στη συνέχεια θα προσθέσουμε στη μπάλα τον κατάλληλο κώδικα ώστε εάν η NumOfBlocks γίνει ίση με τον συνολικό αριθμό blocks που έχετε προσθέσει να σταματά το παιχνίδι και να σας λέει Μπράβο. Αυτό μπορεί να γίνει πάλι με ένα νέο υπόβαθρο στο οποίο θα γράψετε ένα μήνυμα, όπως κάνατε και για το Game Over. Έστω λοιπόν ότι έχετε προσθέσει 50 πλακίδια… τότε:

Το παιχνίδι μας τελείωσε. Λίγες τελευταίες λεπτομέρειες και μικρορυθμίσεις…

Όταν ξεκινάτε το παιχνίδι μην παραλείψετε να αρχικοποιήσετε τις μεταβλητές σας. Δηλαδή Score=0 και NumOfBlocks=0, ώστε σε νέο παιχνίδι να ξεκινά το μέτρημα από την αρχή.

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

Επεκτάσεις

Όπως προανέφερα, θέλαμε εξαρχής η όλη διαδικασία να μπορεί να υλοποιηθεί σε 2-3 διδακτικές ώρες. Φυσικά, μπορείτε έχοντας ως βάση όλα τα παραπάνω, να προχωρήσετε ένα ή και περισσότερα βήματα παραπέρα… Μπορείτε για παράδειγμα:

  • να δημιουργήσετε μια ακόμη μεταβλητή HighScore και όταν το παιχνίδι σταματά, να αποθηκεύεται στην HighScore το Score. Προσοχή εδώ όμως. Η αποθήκευση θα γίνεται μόνο όταν το Score είναι μεγαλύτερο από το HighScore.
  • να ρυθμίσετε κάποιο σημείο στο παιχνίδι που τα πράγματα θα δυσκολεύουν, για παράδειγμα θα αυξάνεται η ταχύτητα της μπάλας. Αυτό μπορεί να γίνει όταν για παράδειγμα ο χρήστης καταφέρει να εξαφανίσει 10 πλακίδια. Έτσι εάν NumOfBlocks <10… κινήσου 5 βήματα… αλλιώς… κινήσου 10 βήματα (αποφασίστε εσείς για τη ρύθμιση)
  • να αλλάξετε κάποια πλακίδια ώστε να μην εξαφανίζονται και να αποτελούν για πάντα εμπόδιο για να φτάσει η μπάλα στα υπόλοιπα
  • και πολλά πολλά ακόμη…

Μην ξεχνάτε ότι…

Η λογική θα σε πάει από το Α στο Β. Η φαντασία θα σε πάει παντού!

(Logic will get you from A to B. Imagination will take you Everywhere!)

Albert Einstein

Πρόσθετο Υλικό

Όλα όσα θα χρειαστείτε για να δημιουργήσετε το παιχνίδι Arcanoid στο Scrtach3 (τα αντικείμενα Ball, Spaceship, GameOver, SingleBlock, DoubleBlock, αλλά και ολόκληρο το έργο Scratch, θα τα βρείτε εδώ. Επίσης μπορείτε να δείτε απευθείας τον κώδικα και τη σκηνή με τα αντικείμενα, στον ιστότοπο του Scratch

Το ολοκληρωμένο Arcanoid παιχνίδι στο Scratch 3

Πατήστε το σημαιάκι για να ξεκινήσετε το παιχνίδι..


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

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