Inhoudsopgave:

LCD Invaders: a Space Invaders Like Game op 16x2 LCD Character Display - Ajarnpa
LCD Invaders: a Space Invaders Like Game op 16x2 LCD Character Display - Ajarnpa

Video: LCD Invaders: a Space Invaders Like Game op 16x2 LCD Character Display - Ajarnpa

Video: LCD Invaders: a Space Invaders Like Game op 16x2 LCD Character Display - Ajarnpa
Video: Ardunio Space Invaders Animation on a Character LCD Display 2024, November
Anonim
LCD Invaders: een Space Invaders-achtig spel op 16x2 LCD-karakterdisplay
LCD Invaders: een Space Invaders-achtig spel op 16x2 LCD-karakterdisplay
LCD Invaders: een Space Invaders-achtig spel op 16x2 LCD-karakterdisplay
LCD Invaders: een Space Invaders-achtig spel op 16x2 LCD-karakterdisplay
LCD Invaders: een Space Invaders-achtig spel op 16x2 LCD-karakterdisplay
LCD Invaders: een Space Invaders-achtig spel op 16x2 LCD-karakterdisplay
LCD Invaders: een Space Invaders-achtig spel op 16x2 LCD-karakterdisplay
LCD Invaders: een Space Invaders-achtig spel op 16x2 LCD-karakterdisplay

Het is niet nodig om een legendarisch spel "Space Invaders" te introduceren. Het meest interessante kenmerk van dit project is dat het tekstweergave gebruikt voor grafische uitvoer. Dit wordt bereikt door 8 aangepaste karakters te implementeren.

Je kunt de volledige Arduino-schets hier downloaden:

github.com/arduinocelentano/LCD_invaders/

Benodigdheden

Arduino UNO-bord

LCD-toetsenbord schild

USB-kabel voor het uploaden van schetsen

Stap 1: Spelontwerp

Spel ontwerp
Spel ontwerp

Het scherm laat geen afzonderlijke pixels toe en biedt slechts twee regels tekst, wat niet genoeg is voor games. Maar het maakt het mogelijk om maximaal 8 aangepaste tekens te implementeren. De truc is om elk karakter van 5x8 pixels te verwerken als twee spelcellen van 5x4 pixels. Dat wil zeggen dat we een speelveld van 16x4 hebben, wat logisch is. 8 karakters is net genoeg om sprites te implementeren voor het ruimteschip van de speler, kogels en geanimeerde aliens. Aangezien de sprites 5x4 zijn en de karakters 5x8, hebben we een aantal karakters nodig met twee sprites zoals een "een ruimteschip en een kogel" sprite, "een alien en een kogel sprite" enz. Alle aangepaste karakters worden getoond op de afbeelding.

Stap 2: Knoppen verwerken

Verwerkingsknoppen
Verwerkingsknoppen

Meestal zijn alle knoppen op een LCD-scherm aangesloten op dezelfde analoge pin. Er zijn verschillende versies van het LCD-schild, dus je zult waarschijnlijk de letterlijke getallen van gehele getallen in mijn knopverwerkingscode enigszins moeten wijzigen.

Stap 3: Klassenhiërarchie

Klassenhiërarchie
Klassenhiërarchie

Ik heb een basisklasse GameObject geïmplementeerd die coördinaten en snelheidsvelden heeft en botsingen verwerkt. De klassen Ship, Alien en Bullet zijn er van geërfd.

Stap 4: Het scherm bijwerken

Het scherm bijwerken
Het scherm bijwerken

Renderlogica ziet er misschien wat ingewikkeld uit, omdat we 16x4 gamelogica moeten transformeren in 16x2 weergave. Lees de opmerkingen in de code voor verdere referentie. Om flikkeren te voorkomen, heb ik een tweedimensionale char-array als tekstbuffer gebruikt. Het maakt het mogelijk om een paar (één voor elke regel) afdrukbewerkingen te gebruiken om het scherm bij te werken.

Stap 5: Spellogica

Spellogica
Spellogica

Hier is het hart van het spel. De hoofdlus verandert de coördinaten van alle objecten, controleert allerlei soorten botsingen en drukt op de knop. De snelheid van buitenaardse wezens en hun schietkans neemt van niveau tot niveau toe. Maar de scorebeloning neemt ook toe.

Stap 6: Een paasei

Een paasei
Een paasei

Er is geen niveau na niveau 42. Serieus. Het is het ultieme niveau van leven, het universum en alles.:)

Aanbevolen: