Taula de continguts:

Floppy Bird: 3 passos
Floppy Bird: 3 passos

Vídeo: Floppy Bird: 3 passos

Vídeo: Floppy Bird: 3 passos
Vídeo: How to make Flappy Bird in 5 steps | Unity Beginner Tutorial 2024, Juliol
Anonim
Floppy Bird
Floppy Bird
Floppy Bird
Floppy Bird

Avui farem un joc amb una pantalla TFT LCD. Sembla un joc molt popular i molta gent encara juga a aquest joc. El joc es diu Flappy Bird, però aquest joc és una mica diferent perquè la interfície d’usuari és diferent, així com la forma en què funciona el joc. Vaig anomenar aquest joc Floppy Bird, ja que això podria provocar problemes de copyright. Tot i això, és un joc molt divertit i fàcil de fer. He fet que sigui instructiu, cosa que us permetrà fer el joc completament i fer-lo funcionar com jo. Si teniu cap pregunta, feu un comentari a continuació i intentaré respondre-les el més ràpidament possible.

Subministraments

- Arduino Mega 2560 i cable

- Arduino Mega Shield

- Arduino TFT LCD Compatible amb l'Arduino Mega 2560

- Targeta SD

Pas 1: Muntatge de la pantalla LCD TFT

Muntatge de la pantalla TFT LCD
Muntatge de la pantalla TFT LCD

Ara podem començar a muntar el LCD TFT. Connectarem la pantalla TFT LCD a l’escut, de manera que primer agafeu la pantalla LCD TFT i bàsicament l’alineem amb els pins de l’escut. Un cop alineats els pins, premeu la pantalla TFT LCD cap avall perquè quedi al seu lloc. Quan tots els caps dels pins estan a l’escut i no es poden veure els caps, és aleshores quan sabeu que la pantalla LCD TFT està connectada correctament. A continuació, podem connectar l’escut a l’Arduino Mega 2560. Alineeu els pins de l’escut a l’Arduino Mega i connecteu-lo. Quan tots els capçals de pins estan a l’Arduino Mega i no podeu veure els caps de pin, quan sàpiga que la pantalla LCD TFT està connectada correctament i està a punt per encendre’s. Connecteu l’Arduino per veure si heu connectat correctament la pantalla LCD, si la pantalla LCD s’encén i la pantalla és blanca. Enhorabona, heu connectat correctament la pantalla LCD TFT i ara ja està a punt per programar-se. Per últim, tenim una cosa a fer, que és connectar la targeta SD a la pantalla LCD. A la part posterior de la pantalla LCD TFT hi ha una ranura per a targetes SD on podeu connectar-la simplement. Per tant, només cal que el connecteu i ja està.

Pas 2: programació de la pantalla TFT LCD

Programació de la pantalla TFT LCD
Programació de la pantalla TFT LCD

Ara, programarem la pantalla LCD perquè executi el joc i puguem jugar-la. A continuació es mostra el codi que heu de compilar i penjar mitjançant l’IDE Arduino.

Problemes que podríeu tenir:

Canvieu els paràmetres de la pantalla LCD TFT segons el model que tingueu.

CODI COMPLET:

#include #include #include

// ==== Creació d'objectes

UTFT myGLCD (ILI9341_16, 38, 39, 40, 41); // Els paràmetres s’han d’ajustar al model de pantalla / escut URTouch myTouch (6, 5, 4, 3, 2);

// ==== Definició de tipus de lletra

extern uint8_t SmallFont ; extern uint8_t BigFont ; extern uint8_t SevenSegNumFont ;

extern unsigned int bird01 [0x41A]; // Mapa de bits d’ocells

int x, y; // Variables de les coordenades on s'ha premut la pantalla

// Ocell disquet

int xP = 319; int yP = 100; int yB = 50; int movingRate = 3; int FallRateInt = 0; float fallRate = 0; puntuació int = 0; int lastSpeedUpScore = 0; int scoreScore més alt; pantalla booleana Pressed = false; boolean gameStarted = false;

configuració nul·la () {

// Iniciar la visualització de myGLCD. InitLCD (); myGLCD.clrScr (); myTouch. InitTouch (); myTouch.setPrecision (PREC_MEDIUM); puntuació més alta = EEPROM.read (0); // Llegiu la puntuació més alta de l'EEPROM initiateGame (); // Iniciar el joc}

bucle buit () {

xP = xP-movingRate; // xP - coordenada x dels pilars; interval: 319 - (-51) drawPilars (xP, yP); // Dibuixa els pilars // yB - coordenada y de l’ocell que depèn del valor de la variable caigudaRata yB + = caigudaRataInt; caiguda = caiguda + 0,4; // Cada inetració augmenta la taxa de caiguda de manera que podem obtenir l’efecte de l’acceleració / gravetat fallRateInt = int (fallRate); // Comprova si hi ha col·lisió si (yB> = 180 || yB <= 0) {// joc superior i inferior (); } if ((xP = 5) && (yB <= yP-2)) {// pilar superior gameOver (); } if ((xP = 5) && (yB> = yP + 60)) {// pilar inferior jocOver (); } // Dibuixa l’ocell drawBird (yB);

// Després que el pilar hagi passat per la pantalla

if (xPRESET = 250) && (x = 0) && (y = 0) && (x = 30) && (y = 270) {myGLCD.setColor (0, 200, 20); myGLCD.fillRect (318, 0, x, y-1); myGLCD.setColor (0, 0, 0); myGLCD.drawRect (319, 0, x-1, y);

myGLCD.setColor (0, 200, 20);

myGLCD.fillRect (318, y + 81, x, 203); myGLCD.setColor (0, 0, 0); myGLCD.drawRect (319, y + 80, x-1, 204); } else if (x <= 268) {// Dibuixa un rectangle blau a la dreta del pilar myGLCD.setColor (114, 198, 206); myGLCD.fillRect (x + 51, 0, x + 60, y); // Dibuixa el pilar myGLCD.setColor (0, 200, 20); myGLCD.fillRect (x + 49, 1, x + 1, y-1); // Dibuixa el marc negre del pilar myGLCD.setColor (0, 0, 0); myGLCD.drawRect (x + 50, 0, x, y); // Dibuixa el rectangle blau a l'esquerra del pilar myGLCD.setColor (114, 198, 206); myGLCD.fillRect (x-1, 0, x-3, y);

// El pilar inferior

myGLCD.setColor (114, 198, 206); myGLCD.fillRect (x + 51, y + 80, x + 60, 204); myGLCD.setColor (0, 200, 20); myGLCD.fillRect (x + 49, y + 81, x + 1, 203); myGLCD.setColor (0, 0, 0); myGLCD.drawRect (x + 50, y + 80, x, 204); myGLCD.setColor (114, 198, 206); myGLCD.fillRect (x-1, y + 80, x-3, 204); } // Dibuixa la puntuació myGLCD.setColor (0, 0, 0); myGLCD.setBackColor (221, 216, 148); myGLCD.setFont (BigFont); myGLCD.printNumI (puntuació, 100, 220); }

// ====== drawBird () - Funció personalitzada

void drawBird (int y) {// Dibuixa l'ocell - mapa de bits myGLCD.drawBitmap (50, y, 35, 30, bird01); // Dibuixa rectangles blaus per sobre i per sota de l’ocell per esborrar el seu estat previ myGLCD.setColor (114, 198, 206); myGLCD.fillRoundRect (50, y, 85, y-6); myGLCD.fillRoundRect (50, y + 30, 85, y + 36); } // ======== gameOver () - Funció personalitzada void gameOver () {delay (3000); // 1 segon // Esborra la pantalla i imprimeix el text myGLCD.clrScr (); myGLCD.setColor (255, 255, 255); myGLCD.setBackColor (0, 0, 0); myGLCD.setFont (BigFont); myGLCD.print ("GAME OVER", CENTRE, 40); myGLCD.print ("Puntuació", 100, 80); myGLCD.printNumI (puntuació, 200, 80); myGLCD.print ("Reiniciant …", CENTRE, 120); myGLCD.setFont (SevenSegNumFont); myGLCD.printNumI (2, CENTRE, 150); retard (1000); myGLCD.printNumI (1, CENTRE, 150); retard (1000); // Escriu la puntuació més alta a l'EEPROM si (puntuació> puntuació més alta) {puntuació més alta = puntuació; EEPROM.write (0, puntuació més alta); } // Restableix les variables per iniciar els valors de posició xP = 319; yB = 50; caiguda = 0; puntuació = 0; lastSpeedUpScore = 0; RateRating = 3; gameStarted = fals; // Reinicieu el joc initiateGame (); }

Pas 3: Fet

Fet!
Fet!

Hem fet el circuit i hem compilat el codi. Ara només hem d’endollar el mega Arduino i jugar al joc.

Aquí tinc un enllaç a un vídeo que mostra com funciona aquest joc i què cal fer per configurar-lo:

drive.google.com/file/d/18hKQ8v2w2OkM_std-…

Aviseu-me si teniu problemes a continuació.

Recomanat: