Cuprins:

LCD Invaders: un Space Invaders Like Game pe afișajul de caractere LCD 16x2: 7 pași
LCD Invaders: un Space Invaders Like Game pe afișajul de caractere LCD 16x2: 7 pași
Anonim
LCD Invaders: un Space Invaders Like Game pe ecran LCD de caractere 16x2
LCD Invaders: un Space Invaders Like Game pe ecran LCD de caractere 16x2
LCD Invaders: un Space Invaders Like Game pe ecran LCD de caractere 16x2
LCD Invaders: un Space Invaders Like Game pe ecran LCD de caractere 16x2
LCD Invaders: un Space Invaders Like Game pe ecran LCD de caractere 16x2
LCD Invaders: un Space Invaders Like Game pe ecran LCD de caractere 16x2
LCD Invaders: un Space Invaders Like Game pe ecran LCD de caractere 16x2
LCD Invaders: un Space Invaders Like Game pe ecran LCD de caractere 16x2

Nu este nevoie să introduci un joc legendar „Space Invaders”. Cea mai interesantă caracteristică a acestui proiect este că folosește afișarea textului pentru ieșirea grafică. Se realizează prin implementarea a 8 caractere personalizate.

Puteți descărca schița completă Arduino aici:

github.com/arduinocelentano/LCD_invaders/

Provizii

Placa Arduino UNO

Ecranul tastaturii LCD

Cablu USB pentru încărcarea schițelor

Pasul 1: proiectarea jocului

Design-ul jocului
Design-ul jocului

Ecranul nu permite controlul pixelilor separați și oferă doar două rânduri de text, care nu sunt suficiente pentru joc. Dar permite implementarea a până la 8 caractere personalizate. Trucul este de a procesa fiecare caracter de 5x8 pixeli ca două celule de joc de 5x4 pixeli. Adică, vom avea un teren de joc 16x4, ceea ce are sens. 8 personaje sunt suficiente pentru a implementa sprite pentru nava spațială a jucătorului, gloanțele și extratereștrii animați. Deoarece spriturile sunt 5x4 și personajele sunt 5x8, vom avea nevoie de câteva personaje cu două sprite, cum ar fi sprite „o navă spațială și un glonț”, „un extraterestru și un sprite glonț” etc. Toate personajele personalizate sunt afișate pe imagine.

Pasul 2: Prelucrarea butoanelor

Butoane de procesare
Butoane de procesare

De obicei, toate butoanele unui ecran LCD sunt conectate la același pin analogic. Există diferite versiuni ale ecranului LCD, deci probabil va trebui să modificați ușor literele întregi în codul meu de procesare a butonului.

Pasul 3: Ierarhia claselor

Ierarhia claselor
Ierarhia claselor

Am implementat o clasă de bază GameObject care are coordonate și câmpuri de viteză și procesează coliziuni. Clasele Ship, Alien și Bullet sunt moștenite de la acesta.

Pasul 4: Actualizarea ecranului

Actualizarea ecranului
Actualizarea ecranului

Logica de redare poate părea oarecum complicată, deoarece trebuie să transformăm logica jocului 16x4 în afișaj 16x2. Vă rugăm să citiți comentariile din cod pentru referințe suplimentare. Pentru a evita licărirea, am folosit o matrice de caractere bidimensională ca tampon de text. Permite utilizarea a două (una pentru fiecare linie) de operații de imprimare pentru a actualiza ecranul.

Pasul 5: Logica jocului

Logica jocului
Logica jocului

Iată inima jocului. Bucla principală modifică coordonatele tuturor obiectelor, verifică tot felul de coliziuni și evenimente de apăsare pe buton. Viteza extratereștrilor și probabilitatea lor de tragere crește de la nivel la nivel. Dar recompensa scorului crește și ea.

Pasul 6: un ou de Paște

Un ou de Paște
Un ou de Paște

Nu există nivel după nivelul 42. Serios. Este ultimul nivel al vieții, al universului și al tuturor.:)

Recomandat: