Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
Dzisiaj będziemy tworzyć grę na wyświetlaczu TFT LCD. Wyglądałoby to na grę, która jest bardzo popularna i wiele osób nadal w nią gra. Gra nazywa się Flappy Bird, ale ta gra jest nieco inna, ponieważ interfejs użytkownika jest inny, a także sposób działania gry. Nazwałem tę grę Floppy Bird, ponieważ może to prowadzić do problemów z prawami autorskimi. Niemniej jednak jest to naprawdę fajna gra i łatwa do zrobienia. Zrobiłem to instruktażowe, co pozwoli ci całkowicie stworzyć grę i sprawić, by działała tak, jak ja. Jeśli masz jakieś pytania, skomentuj poniżej, a postaram się odpowiedzieć na nie tak szybko, jak to możliwe.
Kieszonkowe dzieci
- Arduino Mega 2560 i kabel
- Mega Tarcza Arduino
- Arduino TFT LCD kompatybilny z Arduino Mega 2560
-Karta SD
Krok 1: Montaż wyświetlacza TFT LCD
Teraz możemy przystąpić do montażu wyświetlacza TFT LCD. Podłączymy wyświetlacz TFT LCD do osłony, więc najpierw weź wyświetlacz TFT LCD i w zasadzie wyrównaj go z pinami na osłonie. Po wyrównaniu pinów wciśnij wyświetlacz TFT LCD, aby znalazł się na swoim miejscu. Gdy wszystkie główki szpilek znajdują się w osłonie i nie widać główek szpilek, wtedy wiesz, że wyświetlacz TFT LCD jest prawidłowo podłączony. Następnie możemy podłączyć nakładkę do Arduino Mega 2560. Wyrównaj piny nakładki na Arduino Mega i podłącz ją. Gdy wszystkie główki pinów są w Arduino Mega i nie widać ich, to jest gdy wiesz, że wyświetlacz TFT LCD jest prawidłowo podłączony i gotowy do włączenia. Podłącz Arduino, aby sprawdzić, czy prawidłowo podłączyłeś wyświetlacz LCD, jeśli wyświetlacz LCD włącza się, a ekran jest biały, to gratulacje, udało Ci się podłączyć wyświetlacz TFT LCD i teraz można go zaprogramować. Na koniec mamy jedną rzecz do zrobienia, a mianowicie podłączenie karty SD do wyświetlacza LCD. Z tyłu wyświetlacza TFT LCD znajduje się gniazdo kart SD, do którego można po prostu podłączyć kartę SD. Dlatego po prostu podłącz i gotowe.
Krok 2: Programowanie TFT LCD
Teraz zaprogramujemy LCD, aby uruchamiał grę i możemy w nią grać. Poniżej znajduje się kod, który musisz skompilować i przesłać za pomocą Arduino IDE.
Problemy, które możesz mieć:
Zmień parametry TFT LCD zgodnie z posiadanym modelem.
KOMPLETNY KOD:
#include #include #include
//==== Tworzenie obiektów
UTFT mójGLCD(ILI9341_16, 38, 39, 40, 41); //Parametry należy dostosować do modelu wyświetlacza/ekranu URTouch myTouch(6, 5, 4, 3, 2);
//==== Definiowanie czcionek
extern uint8_t SmallFont; extern uint8_t BigFont; extern uint8_t SevenSegNumFont;
extern unsigned int bird01[0x41A]; // Bitmapa ptaków
int x, y; // Zmienne dla współrzędnych, w których naciśnięto wyświetlacz
// Ptasiek
int xP = 319; int yP = 100; int yB = 50; intruchomość = 3; int fallRateInt = 0; współczynnik opadania pływaka = 0; wynik wewnętrzny = 0; int lastSpeedUpScore = 0; int najwyższy wynik; boolean screenPressed = false; gra logicznaUruchomiona = fałsz;
pusta konfiguracja () {
// Rozpocznij wyświetlanie myGLCD. InitLCD(); mójGLCD.clrScr(); myTouch. InitTouch(); myTouch.setPrecision(PREC_MEDIUM); najwyższy Wynik = EEPROM.read(0); // Odczytaj najwyższy wynik z EEPROM initialGame(); // Rozpocznij grę }
pusta pętla () {
xP=xP-szybkość ruchu; // xP - współrzędna x filarów; zakres: 319 - (-51) drawPilars(xP, yP); // Rysuje filary // yB - współrzędna y ptaka, która zależy od wartości zmiennej fallRate yB+=fallRateInt; FallRate=fallRate+0,4; // Z każdym inetracją szybkość opadania wzrasta tak, że możemy uzyskać efekt przyspieszenia/ grawitacji fallRateInt= int(fallRate); // Sprawdza kolizje if(yB>=180 || yB<=0){ // góra i dół gameOver(); } if((xP=5) && (yB<=yP-2){ // górny filar gameOver(); } if((xP=5) && (yB>=yP+60)){ // dolny filar gameOver(); } // Rysuje ptaka drawBird(yB);
// Po przejściu filaru przez ekran
if (xPRESET=250) && (x=0) && (y=0) && (x=30) && (y=270){ myGLCD.setColor(0, 200, 20); mójGLCD.fillRect(318, 0, x, y-1); mójGLCD.setColor(0, 0, 0); mójGLCD.drawRect(319, 0, x-1, y);
mójGLCD.setColor(0, 200, 20);
mójGLCD.fillRect(318, y+81, x, 203); mójGLCD.setColor(0, 0, 0); mójGLCD.drawRect(319, y+80, x-1, 204); } else if(x<=268) { // Rysuje niebieski prostokąt na prawo od filaru myGLCD.setColor(114, 198, 206); mójGLCD.fillRect(x+51, 0, x+60, y); // Rysuje filar myGLCD.setColor(0, 200, 20); mójGLCD.fillRect(x+49, 1, x+1, y-1); // Rysuje czarną ramkę filaru myGLCD.setColor(0, 0, 0); mójGLCD.drawRect(x+50, 0, x, y); // Rysuje niebieski prostokąt na lewo od filaru myGLCD.setColor(114, 198, 206); mójGLCD.fillRect(x-1, 0, x-3, y);
// Dolny filar
mójGLCD.setColor(114, 198, 206); mójGLCD.fillRect(x+51, y+80, x+60, 204); mójGLCD.setColor(0, 200, 20); mójGLCD.fillRect(x+49, y+81, x+1, 203); mójGLCD.setColor(0, 0, 0); mójGLCD.drawRect(x+50, y+80, x, 204); mójGLCD.setColor(114, 198, 206); mójGLCD.fillRect(x-1, y+80, x-3, 204); } // Rysuje wynik myGLCD.setColor(0, 0, 0); mójGLCD.setBackColor(221, 216, 148); mójGLCD.setFont(BigFont); myGLCD.printNumI(wynik, 100, 220); }
//====== drawBird() - funkcja niestandardowa
void drawBird(int y) { // Rysuje ptaka - bitmapa myGLCD.drawBitmap (50, y, 35, 30, bird01); // Rysuje niebieskie prostokąty nad i pod ptakiem, aby wyczyścić jego poprzedni stan myGLCD.setColor(114, 198, 206); mójGLCD.fillRoundRect(50, y, 85, y-6); mójGLCD.fillRoundRect(50, y+30, 85, y+36); } //======== gameOver() - Funkcja niestandardowa void gameOver() { delay(3000); // 1 sekunda // Czyści ekran i drukuje tekst myGLCD.clrScr(); mójGLCD.setColor(255, 255, 255); mójGLCD.setBackColor(0, 0, 0); mójGLCD.setFont(BigFont); myGLCD.print("KONIEC GRY", CENTRUM, 40); myGLCD.print("Wynik:", 100, 80); myGLCD.printNumI(wynik, 200, 80); myGLCD.print("Ponowne uruchamianie…", CENTRUM, 120); mójGLCD.setFont(SevenSegNumFont); myGLCD.printNumI(2, CENTRUM, 150); opóźnienie (1000); myGLCD.printNumI(1, CENTRUM, 150); opóźnienie (1000); // Zapisuje najwyższy wynik w pamięci EEPROM if (score > najwyższyScore) { najwyższyScore = wynik; EEPROM.write(0, najwyższy wynik); } // Resetuje zmienne do wartości pozycji początkowej xP=319; yB=50; wskaźnik upadku=0; wynik = 0; lastSpeedUpScore = 0; szybkość ruchu = 3; gameStarted = fałsz; // Zrestartuj grę initialGame(); }
Krok 3: Gotowe
Zrobiliśmy obwód i skompilowaliśmy kod. Teraz wystarczy podłączyć Arduino mega i zacząć grać.
Tutaj mam link do filmu, który pokazuje, jak działa ta gra i co zrobić, aby ją skonfigurować:
drive.google.com/file/d/18hKQ8v2w2OkM_std-…
Daj mi znać, jeśli masz jakieś problemy poniżej.