Πίνακας περιεχομένων:

LCD Invaders: a Space Invaders Like Game σε 16x2 Οθόνη χαρακτήρων LCD: 7 βήματα
LCD Invaders: a Space Invaders Like Game σε 16x2 Οθόνη χαρακτήρων LCD: 7 βήματα

Βίντεο: LCD Invaders: a Space Invaders Like Game σε 16x2 Οθόνη χαρακτήρων LCD: 7 βήματα

Βίντεο: LCD Invaders: a Space Invaders Like Game σε 16x2 Οθόνη χαρακτήρων LCD: 7 βήματα
Βίντεο: Arduino Game Project: Pong Game using an Arduino Uno and Color OLED display (SSD1331). Easy tutorial 2024, Ιούλιος
Anonim
LCD Invaders: a Space Invaders Like Game σε οθόνη 16x2 χαρακτήρων LCD
LCD Invaders: a Space Invaders Like Game σε οθόνη 16x2 χαρακτήρων LCD
LCD Invaders: a Space Invaders Like Game σε οθόνη 16x2 χαρακτήρων LCD
LCD Invaders: a Space Invaders Like Game σε οθόνη 16x2 χαρακτήρων LCD
LCD Invaders: a Space Invaders Like Game σε οθόνη 16x2 χαρακτήρων LCD
LCD Invaders: a Space Invaders Like Game σε οθόνη 16x2 χαρακτήρων LCD
LCD Invaders: a Space Invaders Like Game σε οθόνη 16x2 χαρακτήρων LCD
LCD Invaders: a Space Invaders Like Game σε οθόνη 16x2 χαρακτήρων LCD

Δεν χρειάζεται να εισαγάγετε ένα θρυλικό παιχνίδι "Space Invaders". Το πιο ενδιαφέρον χαρακτηριστικό αυτού του έργου είναι ότι χρησιμοποιεί οθόνη κειμένου για γραφική έξοδο. Επιτυγχάνεται με την εφαρμογή 8 προσαρμοσμένων χαρακτήρων.

Μπορείτε να κατεβάσετε το πλήρες σκίτσο του Arduino εδώ:

github.com/arduinocelentano/LCD_invaders/

Προμήθειες

Arduino UNO board

Ασπίδα πληκτρολογίου LCD

Καλώδιο USB για μεταφόρτωση σκίτσων

Βήμα 1: Σχεδιασμός παιχνιδιού

Σχεδιασμός παιχνιδιού
Σχεδιασμός παιχνιδιού

Η οθόνη δεν επιτρέπει τον έλεγχο ξεχωριστών εικονοστοιχείων και παρέχει μόνο δύο γραμμές κειμένου που δεν είναι αρκετές για παιχνίδι. Επιτρέπει όμως την εφαρμογή έως και 8 προσαρμοσμένων χαρακτήρων. Το κόλπο είναι να επεξεργαστείτε κάθε χαρακτήρα 5x8 pixels ως δύο κελιά παιχνιδιού 5x4 pixel. Δηλαδή, θα έχουμε πεδίο παιχνιδιού 16x4, το οποίο είναι λογικό. Οι 8 χαρακτήρες είναι αρκετοί για να υλοποιήσουν sprites για το διαστημόπλοιο, τις σφαίρες και τους κινούμενους εξωγήινους. Δεδομένου ότι τα sprites είναι 5x4 και οι χαρακτήρες είναι 5x8, θα χρειαστούμε μερικούς χαρακτήρες με δύο sprites όπως "ένα διαστημόπλοιο και μια σφαίρα" sprite, "ένας εξωγήινος και μια σφαίρα σφαίρας" κλπ. Όλοι οι προσαρμοσμένοι χαρακτήρες εμφανίζονται στην εικόνα.

Βήμα 2: Επεξεργασία κουμπιών

Κουμπιά επεξεργασίας
Κουμπιά επεξεργασίας

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

Βήμα 3: Ιεραρχία τάξεων

Ιεραρχία τάξεων
Ιεραρχία τάξεων

Έχω εφαρμόσει μια βασική κατηγορία GameObject που έχει συντεταγμένες και πεδία ταχύτητας και επεξεργάζεται συγκρούσεις. Τα μαθήματα Ship, Alien και Bullet είναι κληρονομικά από αυτό.

Βήμα 4: Ενημέρωση της οθόνης

Ενημέρωση της οθόνης
Ενημέρωση της οθόνης

Η απόδοση της λογικής μπορεί να φαίνεται κάπως περίπλοκη επειδή πρέπει να μετατρέψουμε τη λογική του παιχνιδιού 16x4 σε οθόνη 16x2. Διαβάστε τα σχόλια στον κώδικα για περαιτέρω αναφορά. Για να αποφύγω το τρεμόπαιγμα, χρησιμοποίησα μια δισδιάστατη συστοιχία char ως buffer κειμένου. Επιτρέπει τη χρήση μερικών λειτουργιών εκτύπωσης (μία για κάθε γραμμή) για την ενημέρωση της οθόνης.

Βήμα 5: Λογική παιχνιδιού

Λογική παιχνιδιού
Λογική παιχνιδιού

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

Βήμα 6: Ένα Πασχαλινό αυγό

Ένα Πασχαλινό Αυγό
Ένα Πασχαλινό Αυγό

Δεν υπάρχει επίπεδο μετά το επίπεδο 42. Σοβαρά. Είναι το απόλυτο επίπεδο ζωής, το σύμπαν και τα πάντα.:)

Συνιστάται: