Sommario:

Floppy Bird: 3 passaggi
Floppy Bird: 3 passaggi

Video: Floppy Bird: 3 passaggi

Video: Floppy Bird: 3 passaggi
Video: Can AI code Flappy Bird? Watch ChatGPT try 2024, Novembre
Anonim
Uccello floscio
Uccello floscio
Uccello floscio
Uccello floscio

Oggi realizzeremo un gioco utilizzando un LCD TFT. Sembrerebbe un gioco molto popolare e molte persone ci giocano ancora. Il gioco si chiama Flappy Bird ma questo gioco è un po' diverso perché l'interfaccia utente è diversa così come il modo in cui funziona il gioco. Ho chiamato questo gioco Floppy Bird in quanto ciò potrebbe portare a problemi di copyright. Tuttavia è un gioco davvero divertente ed è facile da realizzare. Ho creato questo tutorial che ti permetterà di realizzare il gioco completamente e farlo funzionare come ho fatto io. Se hai domande, commenta qui sotto e cercherò di rispondere a queste domande il più velocemente possibile.

Forniture

- Arduino Mega 2560 e cavo

- Arduino Mega Scudo

- Arduino TFT LCD Compatibile con Arduino Mega 2560

- Scheda SD

Passaggio 1: assemblaggio del display LCD TFT

Assemblaggio del display LCD TFT
Assemblaggio del display LCD TFT

Ora possiamo iniziare ad assemblare il TFT LCD. Collegheremo il TFT LCD allo shield, quindi per prima cosa prendiamo il TFT LCD e sostanzialmente lo allineeremo con i pin sullo shield. Dopo aver allineato i pin, spingere il display LCD TFT verso il basso in modo che si adatti al suo posto. Quando tutte le teste dei pin sono nella schermatura e non puoi vedere le teste dei pin, è allora che sai che il display LCD TFT è collegato correttamente. Successivamente, possiamo collegare lo scudo all'Arduino Mega 2560. Allineare i pin dello scudo sull'Arduino Mega e collegarlo. Quando tutte le teste dei pin sono nell'Arduino Mega e non puoi vedere le teste dei pin, è quando sai che il TFT LCD è collegato correttamente ed è pronto per essere acceso. Collega Arduino per vedere se hai collegato correttamente l'LCD, se l'LCD si accende e lo schermo è bianco, congratulazioni, hai collegato correttamente l'LCD TFT e ora è pronto per essere programmato. Infine, abbiamo una cosa da fare, ovvero collegare la scheda SD nell'LCD. Sul retro dell'LCD TFT c'è uno slot per schede SD dove puoi semplicemente inserire la scheda SD. Pertanto, basta collegarlo e il gioco è fatto.

Passaggio 2: programmazione del display LCD TFT

Programmazione del display LCD TFT
Programmazione del display LCD TFT

Ora, programmeremo l'LCD in modo che esegua il gioco e possiamo giocarci. Di seguito è riportato il codice che devi compilare e caricare utilizzando l'IDE di Arduino.

Problemi che potresti avere:

Modifica i parametri del display LCD TFT in base al modello che possiedi.

CODICE COMPLETO:

#include #include #include

//==== Creazione di oggetti

UTFT mioGLCD(ILI9341_16, 38, 39, 40, 41); //I parametri dovrebbero essere adattati al tuo modello Display/Shield URTouch myTouch(6, 5, 4, 3, 2);

//==== Definizione dei caratteri

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

extern unsigned int bird01[0x41A]; // Bitmap uccello

int x, y; // Variabili per le coordinate in cui è stato premuto il display

// Uccello floscio

int xP = 319; int yP = 100; int yB = 50; int MovingRate = 3; int fallRateInt = 0; tasso di caduta float = 0; punteggio int = 0; int lastSpeedUpScore = 0; int punteggio più alto; boolean screenPressed = false; boolean gameStarted = false;

void setup() {

// Avvia display myGLCD. InitLCD(); mioGLCD.clrScr(); myTouch. InitTouch(); myTouch.setPrecision(PREC_MEDIUM); punteggio più alto = EEPROM.read(0); // Legge il punteggio più alto dalla EEPROM beginGame(); // Avvia il gioco }

ciclo vuoto() {

xP=xP-MovingRate; // xP - coordinata x dei pilastri; intervallo: 319 - (-51) drawPilars(xP, yP); // Disegna i pilastri // yB - coordinata y dell'uccello che dipende dal valore della variabile fallRate yB+=fallRateInt; fallRate=fallRate+0.4; // Ad ogni intrazione il tasso di caduta aumenta in modo da poter ottenere l'effetto di accelerazione/ gravità fallRateInt= int(fallRate); // Controlla la collisione if(yB>=180 || yB<=0){ // gameOver superiore e inferiore(); } if((xP=5) && (yB<=yP-2)){ // pilastro superiore gameOver(); } if((xP=5) && (yB>=yP+60)){ // pilastro inferiore gameOver(); } // Disegna l'uccello drawBird(yB);

// Dopo che il pilastro è passato attraverso lo schermo

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) { // Disegna il rettangolo blu a destra del pilastro myGLCD.setColor(114, 198, 206); myGLCD.fillRect(x+51, 0, x+60, y); // Disegna il pilastro myGLCD.setColor(0, 200, 20); myGLCD.fillRect(x+49, 1, x+1, y-1); // Disegna la cornice nera del pilastro myGLCD.setColor(0, 0, 0); myGLCD.drawRect(x+50, 0, x, y); // Disegna il rettangolo blu a sinistra del pilastro myGLCD.setColor(114, 198, 206); myGLCD.fillRect(x-1, 0, x-3, y);

// Il pilastro inferiore

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); } // Disegna il punteggio myGLCD.setColor(0, 0, 0); myGLCD.setBackColor(221, 216, 148); myGLCD.setFont(BigFont); myGLCD.printNumI(punteggio, 100, 220); }

//====== drawBird() - Funzione personalizzata

void drawBird(int y) { // Disegna l'uccello - bitmap myGLCD.drawBitmap (50, y, 35, 30, bird01); // Disegna rettangoli blu sopra e sotto l'uccello per cancellare il suo stato precedente myGLCD.setColor(114, 198, 206); myGLCD.fillRoundRect(50, y, 85, y-6); myGLCD.fillRoundRect(50, y+30, 85, y+36); } //======== gameOver() - Funzione personalizzata void gameOver() { delay(3000); // 1 secondo // Cancella lo schermo e stampa il testo myGLCD.clrScr(); myGLCD.setColor(255, 255, 255); myGLCD.setBackColor(0, 0, 0); myGLCD.setFont(BigFont); myGLCD.print("GAME OVER", CENTER, 40); myGLCD.print("Punteggio:", 100, 80); myGLCD.printNumI(punteggio, 200, 80); myGLCD.print("Riavvio…", CENTRO, 120); myGLCD.setFont(SevenSegNumFont); myGLCD.printNumI(2, CENTER, 150); ritardo(1000); myGLCD.printNumI(1, CENTER, 150); ritardo(1000); // Scrive il punteggio più alto nella EEPROM if (score >highScore) {highScore = score; EEPROM.write(0, punteggio più alto); } // Reimposta le variabili per iniziare i valori di posizione xP=319; yB=50; tasso di caduta=0; punteggio = 0; lastSpeedUpScore = 0; MovingRate = 3; gameStarted = falso; // Riavvia il gioco iniziaGame(); }

Passaggio 3: fatto

Fatto!
Fatto!

Abbiamo realizzato il circuito e compilato il codice. Ora non ci resta che collegare Arduino mega e giocare.

Qui ho un link a un video che mostra come funziona questo gioco e cosa fare per configurarlo:

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

Fammi sapere se hai problemi in basso.

Consigliato: