Mündəricat:

Floppy Bird: 3 addım
Floppy Bird: 3 addım

Video: Floppy Bird: 3 addım

Video: Floppy Bird: 3 addım
Video: Как рисовать FLAPPY BIRD Шаг за шагом Легко | 2/3 2024, Iyul
Anonim
Floppy Bird
Floppy Bird
Floppy Bird
Floppy Bird

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ı

TFT LCD -nin yığılması
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ı

TFT LCD -nin proqramlaşdırılması
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

Bitdi!
Bitdi!

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ə: