Spisu treści:
Wideo: Dyskietka: 3 kroki
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:28
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.
Zalecana:
Pierwsze kroki z IDE STM32f767zi Cube i prześlij własny szkic: 3 kroki
Rozpoczęcie pracy z IDE STM32f767zi i przesłanie własnego szkicu: KUP (kliknij test, aby kupić/odwiedzić stronę internetową) OPROGRAMOWANIE STM32F767Z WSPIERANE· IDE STM32CUBE· KEIL MDK ARM µVISION· EWARM IAR EMBEDDED WORKBENCH· Dostępne różne oprogramowanie ARDUINO służy do programowania mikrokontrolerów STM
Jak zrobić podwójną antenę 4G LTE BiQuade Proste kroki: 3 kroki
Jak zrobić podwójną antenę 4G LTE BiQuade Proste kroki: W większości przypadków nie mam dobrej siły sygnału w mojej codziennej pracy. Więc. Szukam i próbuję różnych typów anten, ale nie działa. Po zmarnowanym czasie znalazłem antenę, którą mam nadzieję zrobić i przetestować, bo to zasada budowy nie
Strumieniowanie wideo na żywo 4G/5G HD z drona DJI z małym opóźnieniem [3 kroki]: 3 kroki
Strumieniowanie wideo na żywo 4G/5G HD z drona DJI z małym opóźnieniem [3 kroki]: Poniższy przewodnik pomoże Ci uzyskać strumienie wideo na żywo w jakości HD z prawie każdego drona DJI. Za pomocą aplikacji mobilnej FlytOS i aplikacji internetowej FlytNow możesz rozpocząć przesyłanie strumieniowe wideo z drona
Pierwsze kroki z automatyką domową: Instalacja Home Assistant: 3 kroki
Rozpoczęcie pracy z automatyką domową: instalacja asystenta domowego: teraz rozpoczniemy serię automatyki domowej, w której stworzymy inteligentny dom, który pozwoli nam kontrolować takie rzeczy, jak światła, głośniki, czujniki itp., Za pomocą centralnego koncentratora wraz z asystent głosowy. W tym poście dowiemy się, jak ins
Dyskietka USB + ukryty tajny dysk: 7 kroków
Floppy USB + Hidden Secret Drive: Kontynuacja innego projektu, w którym uratowałem części do nowych projektów z przestarzałej stacji dyskietek. Chciałem zrobić więcej portów USB, ale nie chciałem bawić się z tyłu komputera w poszukiwaniu nowych portów, ale podobało mi się, jak