Indholdsfortegnelse:

LCD Invaders: a Space Invaders Like Game på 16x2 LCD Character Display: 7 trin
LCD Invaders: a Space Invaders Like Game på 16x2 LCD Character Display: 7 trin

Video: LCD Invaders: a Space Invaders Like Game på 16x2 LCD Character Display: 7 trin

Video: LCD Invaders: a Space Invaders Like Game på 16x2 LCD Character Display: 7 trin
Video: LCD 1602 game console 2024, November
Anonim
LCD Invaders: a Space Invaders Like Game på 16x2 LCD Character Display
LCD Invaders: a Space Invaders Like Game på 16x2 LCD Character Display
LCD Invaders: a Space Invaders Like Game på 16x2 LCD Character Display
LCD Invaders: a Space Invaders Like Game på 16x2 LCD Character Display
LCD Invaders: a Space Invaders Like Game på 16x2 LCD Character Display
LCD Invaders: a Space Invaders Like Game på 16x2 LCD Character Display
LCD Invaders: a Space Invaders Like Game på 16x2 LCD Character Display
LCD Invaders: a Space Invaders Like Game på 16x2 LCD Character Display

Det er ikke nødvendigt at introducere et legendarisk “Space Invaders” -spil. Det mest interessante ved dette projekt er, at det bruger tekstvisning til grafisk output. Det opnås ved at implementere 8 brugerdefinerede tegn.

Du kan downloade den komplette Arduino -skitse her:

github.com/arduinocelentano/LCD_invaders/

Forbrugsvarer

Arduino UNO bestyrelse

LCD tastatur skjold

USB -kabel til upload af skitser

Trin 1: Spildesign

Spildesign
Spildesign

Skærmen tillader ikke at styre separate pixels og indeholder kun to tekstlinjer, hvilket ikke er nok til spil. Men det giver mulighed for at implementere op til 8 brugerdefinerede tegn. Tricket er at behandle hver 5x8 pixel karakter som to 5x4 pixels spilceller. Det vil sige, at vi har 16x4 spilfelt, hvilket giver mening. 8 tegn er lige nok til at implementere sprites til spillerens rumskib, kugler og animerede rumvæsener. Da sprites er 5x4 og tegnene er 5x8, skal vi bruge nogle tegn med to sprites som "et rumskib og en kugle" sprite, "en alien og en bullet sprite" osv. Alle de brugerdefinerede tegn vises på billedet.

Trin 2: Behandlingsknapper

Behandlingsknapper
Behandlingsknapper

Typisk er alle knapper på et LCD -skærm forbundet til den samme analoge pin. Der er forskellige versioner af LCD -skjold, så du bliver sandsynligvis nødt til at ændre helt tal i min knapbehandlingskode.

Trin 3: Klasserhierarki

Klasser Hierarki
Klasser Hierarki

Jeg har implementeret en basisklasse GameObject, som har koordinater og hastighedsfelter og behandler kollisioner. Klasser Ship, Alien og Bullet arves fra den.

Trin 4: Opdatering af skærmen

Opdatering af skærmen
Opdatering af skærmen

Gengivelseslogik kan se noget kompliceret ud, fordi vi er nødt til at omdanne 16x4 spillogik til 16x2 display. Læs kommentarerne i koden for yderligere reference. For at undgå flimring brugte jeg et todimensionalt char -array som tekstbuffer. Det giver mulighed for at bruge et par (en for hver linje) udskrivningsoperationer til at opdatere skærmen.

Trin 5: Spillogik

Spil logik
Spil logik

Her er spilets hjerte. Hovedløkken ændrer koordinaterne for alle objekterne, kontrollerer alle former for kollisioner og knappresshændelser. Aliens hastighed og deres skyde sandsynlighed stiger fra niveau til niveau. Men pointbelønningen stiger også.

Trin 6: Et påskeæg

Et påskeæg
Et påskeæg

Der er ikke noget niveau efter niveau 42. Alvorligt. Det er livets ultimative niveau, universet og alt.:)

Anbefalede: