Mundarija:

Floppy Bird: 3 qadam
Floppy Bird: 3 qadam

Video: Floppy Bird: 3 qadam

Video: Floppy Bird: 3 qadam
Video: Я сделал игру Flappy Bird в 3D (Ж@ПА ГОРИТ И В 3D) 2024, Iyul
Anonim
Floppi qush
Floppi qush
Floppi qush
Floppi qush

Bugun biz TFT LCD yordamida o'yin qilamiz. Bu haqiqatan ham mashhur bo'lgan o'yin kabi ko'rinadi va ko'p odamlar hali ham bu o'yinni o'ynashadi. O'yin Flappy Bird deb nomlanadi, lekin bu o'yin biroz boshqacha, chunki foydalanuvchi interfeysi va o'yin uslubi boshqacha. Men bu o'yinni Floppy Bird deb nomladim, chunki bu mualliflik huquqi bilan bog'liq muammolarga olib kelishi mumkin. Shunga qaramay, bu juda qiziqarli o'yin va uni bajarish oson. Men buni sizga ko'rsatma berdim, bu sizga o'yinni to'liq bajarishga va men kabi ishlashiga imkon beradi. Agar sizda biron bir savol bo'lsa, iltimos, quyida izoh qoldiring va men bu savollarga iloji boricha tezroq javob berishga harakat qilaman.

Ta'minotlar

- Arduino Mega 2560 va kabel

- Arduino Mega qalqoni

- Arduino TFT LCD Arduino Mega 2560 bilan mos keladi

- SD -karta

1 -qadam: TFT LCD -ni yig'ish

TFT LCD -ni yig'ish
TFT LCD -ni yig'ish

Endi biz TFT LCD -ni yig'ishni boshlashimiz mumkin. Biz TFT LCD -ni qalqonga ulaymiz, shuning uchun birinchi navbatda TFT LCD -ni oling va uni qalqon ustidagi pinlar bilan tekislang. Pimlarni tekislaganingizdan so'ng, TFT LCD -ni pastga suring, shunda u joyiga to'g'ri keladi. Agar barcha pin boshlari qalqonda bo'lsa va siz pin boshlarini ko'rmasangiz, TFT LCD to'g'ri ulanganligini bilasiz. Keyin biz qalqonni Arduino Mega 2560 -ga ulashimiz mumkin. Arduino Mega -dagi qalqon pimlarini tekislang va ulang. Barcha pin boshlari Arduino Mega -da bo'lsa va siz pin boshlarini ko'rmasangiz, bu shunday bo'ladi. TFT LCD to'g'ri ulanganligini va uni yoqishga tayyorligini bilganingizda. LCD displeyni to'g'ri uladingizmi yoki yo'qmi, Arduino -ni ulang, agar LCD yoqilsa va ekran oq bo'lsa, tabriklayman, siz TFT LCD -ni muvaffaqiyatli uladingiz va endi u dasturga tayyor. Va nihoyat, bizda bitta narsa bor - bu SD -kartani LCD -ga ulash. TFT LCD -ning orqa tomonida SD -karta uyasi bor, u erda siz SD -kartani ulashingiz mumkin. Shuning uchun, uni tarmoqqa ulang va u tugadi.

2 -qadam: TFT LCD -ni dasturlash

TFT LCD -ni dasturlash
TFT LCD -ni dasturlash

Endi biz LCD -ni dasturlashtiramiz, shunda u o'yinni boshqaradi va biz uni o'ynay olamiz. Quyida siz Arduino IDE yordamida kompilyatsiya qilishingiz va yuklashingiz kerak bo'lgan kod keltirilgan.

Sizda bo'lishi mumkin bo'lgan muammolar:

TFT LCD displeyining parametrlarini sizda mavjud modelga muvofiq o'zgartiring.

To'liq kod:

#qo'shish #qo'shish #qo'shish

// ==== Ob'ektlarni yaratish

UTFT myGLCD (ILI9341_16, 38, 39, 40, 41); // Parametrlar URTouch myTouch (6, 5, 4, 3, 2) Display/Shield modeliga moslashtirilishi kerak;

// ==== Shriftlarni aniqlash

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

extern unsigned int bird01 [0x41A]; // Qushlarning bitmapi

int x, y; // Displey bosilgan koordinatalarning o'zgaruvchilari

// Floppy Bird

int xP = 319; int yP = 100; int yB = 50; int moveRate = 3; int fallRateInt = 0; float fallRate = 0; int bal = 0; int lastSpeedUpScore = 0; int yuqori reyting; boolean ekran Pressed = false; boolean gameStarted = false;

bo'sh o'rnatish () {

// myGLCD. InitLCD () displeyini ishga tushiring; myGLCD.clrScr (); myTouch. InitTouch (); myTouch.setPrecision (PREC_MEDIUM); eng yuqori reyting = EEPROM.read (0); // EEPROM inititeGame () dan eng yuqori ballni o'qing; // O'yinni boshlang}

void loop () {

xP = xP-harakatlanish darajasi; // xP - x pilarlarning koordinatasi; diapazon: 319 - (-51) drawPilars (xP, yP); // Qushlarning ustunlarini tortadi // yB - y koordinatasi tushayotgan Rate o'zgaruvchisining qiymatiga bog'liq yB+= fallRateInt; fallRate = fallRate+0,4; // Har bir inetratsiyada kuz tezligi oshadi, shunda biz tezlik/ tortish kuchi ta'sirini tushirishimiz mumkin fallRateInt = int (fallRate); // To'qnashuvni tekshiradi, agar (yB> = 180 || yB <= 0) {// yuqori va pastki gameOver (); } if ((xP = 5) && (yB <= yP-2)) {// yuqori ustunli gameOver (); } if ((xP = 5) && (yB> = yP+60)) {// pastki ustunli o'yinOver (); } // qushni DrawBird (yB) chizadi;

// Ustun ekran orqali o'tgandan keyin

agar (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); } if if (x <= 268) {// myGLCD.setColor ustunining o'ng tomonida ko'k to'rtburchak chizadi (114, 198, 206); myGLCD.fillRect (x+51, 0, x+60, y); // myGLCD.setColor ustunini chizadi (0, 200, 20); myGLCD.fillRect (x+49, 1, x+1, y-1); // Ustunning qora ramkasini chizadi myGLCD.setColor (0, 0, 0); myGLCD.drawRect (x+50, 0, x, y); // myGLCD.setColor ustunining chap tomonidagi ko'k to'rtburchakni chizadi (114, 198, 206); myGLCD.fillRect (x-1, 0, x-3, y);

// Pastki ustun

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) balini tortadi; myGLCD.setBackColor (221, 216, 148); myGLCD.setFont (BigFont); myGLCD.printNumI (ball, 100, 220); }

// ====== drawBird () - Maxsus funktsiya

void drawBird (int y) {// Qushni chizadi - bitMap myGLCD.drawBitmap (50, y, 35, 30, bird01); // myGLCD.setColor (114, 198, 206) holatini tozalash uchun qush ustidan va ostidan ko'k to'rtburchaklar chizadi; myGLCD.fillRoundRect (50, y, 85, y-6); myGLCD.fillRoundRect (50, y+30, 85, y+36); } // ======== gameOver () - Custom Function void gameOver () {delay (3000); // 1 soniya // Ekranni tozalaydi va matnni chop etadi myGLCD.clrScr (); myGLCD.setColor (255, 255, 255); myGLCD.setBackColor (0, 0, 0); myGLCD.setFont (BigFont); myGLCD.print ("O'YIN OVER", MARKAZI, 40); myGLCD.print ("Hisob:", 100, 80); myGLCD.printNumI (ball, 200, 80); myGLCD.print ("Qayta ishga tushirilmoqda …", MARKAZI, 120); myGLCD.setFont (SevenSegNumFont); myGLCD.printNumI (2, MARKAZI, 150); kechikish (1000); myGLCD.printNumI (1, MARKAZI, 150); kechikish (1000); // EEPROMda eng yuqori ballni yozadi, agar (ball> eng yuqori reyting) {eng yuqori skor = ball; EEPROM.write (0, eng yuqori reyting); } // o'zgaruvchilarni xP = 319 pozitsiya qiymatlari boshlanishiga qaytaradi; yB = 50; fallRate = 0; ball = 0; lastSpeedUpScore = 0; harakatlanish darajasi = 3; gameStarted = noto'g'ri; // inititeGame () o'yinini qayta ishga tushiring; }

3 -qadam: Bajarildi

Bajarildi!
Bajarildi!

Biz sxemani tuzdik va kodni tuzdik. Endi biz Arduino mega -ni ulashimiz va o'yinni o'ynashimiz kerak.

Menda bu o'yin qanday ishlashini va uni sozlash uchun nima qilish kerakligini ko'rsatadigan videoga havola bor:

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

Menga pastda muammolaringiz bo'lsa, menga xabar bering.

Tavsiya: