Mündəricat:
Video: Floppy Bird: 3 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:44
Bu gün bir TFT LCD istifadə edərək bir oyun edəcəyik. Bu həqiqətən məşhur olan bir oyuna bənzəyəcək və bir çox insan hələ də bu oyunu oynayır. Oyun Flappy Bird adlanır, lakin bu oyun bir qədər fərqlidir, çünki UI də oyunun işləmə üsulu ilə fərqlidir. Müəllif hüquqları problemlərinə səbəb ola biləcəyi üçün bu oyunu Floppy Bird adlandırdım. Buna baxmayaraq, həqiqətən əyləncəli bir oyundur və bunu etmək çox asandır. Oyunu tamamilə düzəltməyinizə və etdiyim kimi işləməyinizə imkan verən bu təlimatı mən hazırladım. Hər hansı bir sualınız varsa, aşağıya yazın və bu suallara mümkün qədər tez cavab verməyə çalışacağam.
Təchizat
- Arduino Mega 2560 və kabel
- Arduino Mega Shield
- Arduino TFT LCD, Arduino Mega 2560 ilə uyğun gəlir
- SD Kart
Addım 1: TFT LCD -nin yığılması
İndi TFT LCD -ni yığmağa başlaya bilərik. TFT LCD -ni qalxana bağlayacağıq, buna görə əvvəlcə TFT LCD -ni götürün və əsasən onu qalxandakı sancaqlar ilə hizalayın. Sancaqları hizaladıqdan sonra, TFT LCD -ni aşağı itələyin ki, yerinə uyğun olsun. Bütün pin başları qalxanda və pin başlarını görə bilmədiyiniz zaman, TFT LCD -nin düzgün bağlandığını bildiyiniz zaman. Sonra, qalxanı Arduino Mega 2560 -a bağlaya bilərik. Arduino Mega üzərindəki qalxanın pinlərini hizalayın və qoşun. Bütün pin başları Arduino Mega -da olduqda və pin başlarını görə bilmədiyiniz zaman TFT LCD -nin düzgün bağlandığını və açılmağa hazır olduğunu bildiyiniz zaman. LCD -ni düzgün bağladığınızı yoxlamaq üçün Arduino -ya qoşun, LCD açılırsa və ekran ağdırsa, təbrik edirəm, TFT LCD -ni uğurla bağladınız və indi proqramlaşdırılmağa hazırsınız. Nəhayət, SD kartını LCD -yə bağlamaq üçün bir işimiz var. TFT LCD -nin arxa tərəfində sadəcə SD kartı bağlaya biləcəyiniz bir SD kart yuvası var. Buna görə də, sadəcə qoşun və bitdi.
Addım 2: TFT LCD -nin proqramlaşdırılması
İndi LCD -ni proqramlaşdıracağıq ki, oyunu idarə etsin və oynaya bilək. Aşağıda Arduino IDE istifadə edərək tərtib etməli və yükləməli olduğunuz kod var.
Problemləriniz ola bilər:
Sahib olduğunuz modelə görə TFT LCD -nin parametrlərini dəyişdirin.
KOMPLE KOD:
#daxil edin #daxil edin #daxil edin
// ==== Obyektlərin yaradılması
UTFT myGLCD (ILI9341_16, 38, 39, 40, 41); // Parametrlər Display/Shield modelinizə uyğun olmalıdır URTouch myTouch (6, 5, 4, 3, 2);
// ==== Şriftlərin müəyyən edilməsi
extern uint8_t SmallFont ; xarici uint8_t BigFont ; xarici uint8_t SevenSegNumFont ;
extern işarəsiz int bird01 [0x41A]; // Quş Bitmapi
int x, y; // Ekranın basıldığı koordinatlar üçün dəyişənlər
// Floppy Bird
int xP = 319; int yP = 100; int yB = 50; int moveRate = 3; int fallRateInt = 0; float fallRate = 0; int hesab = 0; int lastSpeedUpScore = 0; int highScore; boolean ekran Pressed = yalan; boolean gameStarted = yalan;
boş quraşdırma () {
// myGLCD. InitLCD () ekranını işə salın; myGLCD.clrScr (); myTouch. InitTouch (); myTouch.setPrecision (PREC_MEDIUM); aliScore = EEPROM.read (0); // EEPROM inititeGame () -dən ən yüksək balı oxuyun; // Oyuna başlayın}
boşluq döngəsi () {
xP = xP-hərəkət dərəcəsi; // xP - x pilarların koordinatı; diapazon: 319 - (-51) drawPilars (xP, yP); // Düşən Hız dəyişəninin dəyərindən asılı olan quşun // yB - y koordinatını çəkir yB+= fallRateInt; fallRate = fallRate+0.4; // Hər inetrasiya düşmə sürətini artırır ki, sürətlənmə/ cazibə qüvvəsinin təsirini düşə bilək fallRateInt = int (fallRate); // (yB> = 180 || yB <= 0) {// üst və alt gameOver (); } if ((xP = 5) && (yB <= yP-2)) {// üst sütun gameOver (); } if ((xP = 5) && (yB> = yP+60)) {// alt sütun oyunuOver (); } // Quş drawBird (yB) çəkir;
// Sütun ekrandan keçdikdən sonra
əgər (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) {// myGLCD.setColor sütunun sağ tərəfində mavi düzbucaqlı çəkir (114, 198, 206); myGLCD.fillRect (x+51, 0, x+60, y); // myGLCD.setColor sütununu çəkir (0, 200, 20); myGLCD.fillRect (x+49, 1, x+1, y-1); // myGLCD.setColor sütununun qara çərçivəsini çəkir (0, 0, 0); myGLCD.drawRect (x+50, 0, x, y); // myGLCD.setColor sütununun solundakı mavi düzbucağı çəkir (114, 198, 206); myGLCD.fillRect (x-1, 0, x-3, y);
// Alt sütun
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); } // MyGLCD.setColor (0, 0, 0) hesabını çəkir; myGLCD.setBackColor (221, 216, 148); myGLCD.setFont (BigFont); myGLCD.printNumI (hesab, 100, 220); }
// ====== drawBird () - Xüsusi funksiya
void drawBird (int y) {// Quşu çəkir - myGLCD.drawBitmap bitmap (50, y, 35, 30, bird01); // myGLCD.setColor (114, 198, 206) vəziyyətini təmizləmək üçün quşun üstündən və altından mavi düzbucaqlılar çəkir; myGLCD.fillRoundRect (50, y, 85, y-6); myGLCD.fillRoundRect (50, y+30, 85, y+36); } // ======== gameOver () - Xüsusi Fonksiyon void gameOver () {gecikmə (3000); // 1 saniyə // Ekranı təmizləyir və mətni yazır myGLCD.clrScr (); myGLCD.setColor (255, 255, 255); myGLCD.setBackColor (0, 0, 0); myGLCD.setFont (BigFont); myGLCD.print ("OYUN OVER", MƏRKƏZ, 40); myGLCD.print ("Hesab:", 100, 80); myGLCD.printNumI (hesab, 200, 80); myGLCD.print ("Yenidən başlatılır …", MƏRKƏZ, 120); myGLCD.setFont (SevenSegNumFont); myGLCD.printNumI (2, MƏRKƏZ, 150); gecikmə (1000); myGLCD.printNumI (1, MƏRKƏZ, 150); gecikmə (1000); // EEPROM -da ən yüksək balı yazarsa (hesab> ən yüksək skor) {ən yüksək skor = hesab; EEPROM.write (0, ən yüksək skor); } // Dəyişənləri mövqe dəyərlərini sıfırlayaraq xP = 319; yB = 50; fallRate = 0; bal = 0; lastSpeedUpScore = 0; moveRate = 3; gameStarted = yalan; // oyunu başlatın inititeGame (); }
Addım 3: Bitti
Dövr etdik və kodu tərtib etdik. İndi Arduino meqasını bağlamalı və oyunu oynamalıyıq.
Burada, bu oyunun necə işlədiyini və onu qurmaq üçün nə edəcəyimi göstərən bir videoya bir linkim var:
drive.google.com/file/d/18hKQ8v2w2OkM_std-…
Aşağıda hər hansı bir probleminiz varsa mənə bildirin.
Tövsiyə:
Əzələ ilə işləyən Flappy Bird: 9 addım (şəkillərlə)
Muscle Powered Flappy Bird: Flappy Bird -in dünyanı fırtınaya sürüklədiyini və nəticədə yaradıcının arzuolunmaz reklamlardan qaçmaq üçün onu tətbiq mağazalarından sildiyini xatırlaya bilərsiniz. Bu Flappy Bird, əvvəllər heç görmədiyiniz kimi; rəfdəki bir neçə kompozisiyanı birləşdirərək
Floppy Disk IR Kamera Hack: 8 Addım (Şəkillərlə birlikdə)
Floppy Disk IR Kamera Hack: Son yeddi ildir ki, ətrafımda uzanan qırıq bir rəqəmsal kamera var. Hələ şəkil çəkə bilir, ancaq ekranın qırıq olması səbəbindən istifadə etmək demək olar ki, mümkün deyil. Əsas problem, bəzən menyunun təsadüfən əldə oluna bilməməsidir
SD/MMC Floppy Edge konnektoruna uyğundur: 8 addım (şəkillərlə)
SD/MMC Floppy Edge konnektoruna uyğundur: Yəqin ki, hazırda əldə etdiyiniz adi bağlayıcılardan istifadə edərək, bir neçə I/O pimi olan hər hansı bir homebrew DIY layihəsinə SD kamera yaddaş kartı əlavə edə bilərsiniz. cihaz sürücüləri və müxtəlif açıq mənbə Linux dağıtımlarının quraşdırılması
Apple Floppy Amp: 8 addım (şəkillərlə birlikdə)
Apple Floppy Amp: Köhnə 5.25 tapıldı " 5.99 dollara qənaət mağazasında disket sürücüsü. Apple IIe uşaqlığımı xatırlatdı, buna görə nə edəcəyimi bilmədən satın aldım. Mən anaxronizmin pərəstişkarıyam (utanmaz fiş: retro hi-fi təlimatına baxın) və
Floppy Powered PCI Yuvası Case Fan: 4 Addım
Floppy Powered PCI Slot Case Fan: Disket demək olar ki, tükənmiş olsa da, bir çox PSU -da hələ də disket güc konnektorları var. Onlarla nə etməli olduğunda itkin düşdün? PCI Slot Case Fan -ı sındıraraq qüllənizi sərinləmək üçün istifadə edin