Мазмуну:

Floppy Bird: 3 кадам
Floppy Bird: 3 кадам

Video: Floppy Bird: 3 кадам

Video: Floppy Bird: 3 кадам
Video: Five Little Birds 3 | CoCoMelon Nursery Rhymes & Kids Songs 2024, Ноябрь
Anonim
Floppy Bird
Floppy Bird
Floppy Bird
Floppy Bird

Бүгүн биз TFT LCDди колдонуп оюн жасайбыз. Бул чынында эле популярдуу болгон оюнга окшош болмок жана көптөгөн адамдар дагы эле бул оюнду ойношот. Оюн Flappy Bird деп аталат, бирок бул оюн бир аз башкача, анткени UI оюндун иштөө ыкмасынан айырмаланат. Мен бул оюнду Floppy Bird деп атадым, анткени бул автордук укук маселелерине алып келиши мүмкүн. Ошентсе да, бул абдан кызыктуу оюн жана аны жасоо оңой. Мен бул оюнду кылдым, бул сизге оюнду толугу менен жасоого жана мен сыяктуу иштешине мүмкүнчүлүк берет. Эгерде сизде кандайдыр бир суроолор болсо, төмөндө комментарий калтырыңыз, мен бул суроолорго мүмкүн болушунча тезирээк жооп берүүгө аракет кылам.

Жабдуулар

- Arduino Mega 2560 жана кабель

- Arduino Mega Shield

- Arduino TFT LCD Arduino Mega 2560 менен шайкеш келет

- SD карта

1 -кадам: TFT ЖК чогултуу

TFT ЖК чогултуу
TFT ЖК чогултуу

Эми, биз TFT LCDди чогулта баштасак болот. Биз TFT ЖКны калканга туташтырабыз, андыктан биринчиден TFT ЖК алып, аны негизинен калкандагы казыктар менен тегиздеңиз. Кадрларды тегиздеп алгандан кийин, TFT ЖКны ылдый түшүрүңүз, ошондо ал өз ордуна келет. Бардык төөнөгүч баштар калканчта болгондо жана сиз төөнөгүчтөрдүн баштарын көрө албай жатканыңызда, TFT ЖКнын туура туташканын билсеңиз болот. Андан кийин, биз калканды Arduino Mega 2560ке туташтыра алабыз. Arduino Megaдагы калканын казыктарын тегиздеп, туташтырыңыз. Бардык төөнөгүчтөрдүн баштары Arduino Mega -де болгондо жана пинтин баштарын көрө албасаңыз, бул качан сиз TFT ЖК туура туташтырылганын билсеңиз жана ал күйгүзүлүүгө даяр. ЖКнын туура туташканын текшерүү үчүн Arduino'yү сайыңыз, эгерде ЖК күйүп, экраны ак болсо, анда куттуктайм, сиз TFT LCDди ийгиликтүү туташтырдыңыз, эми ал программалоого даяр. Акырында, бизде бир нерсе бар, бул ЖКдагы SD картаны туташтыруу. TFT ЖКнын арткы тарабында SD картанын уячасы бар, анда сиз жөн гана SD картаны сайа аласыз. Ошондуктан, аны жөн эле сайыңыз жана ал бүттү.

2 -кадам: TFT ЖКны программалоо

TFT LCDди программалоо
TFT LCDди программалоо

Эми биз ЖКны программалайбыз, андыктан ал оюнду иштетет жана биз аны ойной алабыз. Төмөндө сиз Arduino IDEди колдонуп түзүшүңүз керек болгон код бар.

Сизде болушу мүмкүн болгон көйгөйлөр:

Сизде бар моделге ылайык TFT ЖКнын параметрлерин өзгөртүңүз.

ТОЛУК КОД:

#кошуу #кошуу #кошуу

// ==== Объекттерди түзүү

UTFT myGLCD (ILI9341_16, 38, 39, 40, 41); // Параметрлерди Display/Shield моделине тууралаш керек URTouch myTouch (6, 5, 4, 3, 2);

// ==== Ариптерди аныктоо

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

extern unsigned int bird01 [0x41A]; // Bird Bitmap

int x, y; // Дисплей басылган координаттар үчүн өзгөрмөлөр

// Floppy Bird

int xP = 319; int yP = 100; int yB = 50; int moveRate = 3; int fallRateInt = 0; float fallRate = 0; int score = 0; int lastSpeedUpScore = 0; int highScore; логикалык экран Pressed = false; логикалык оюнStarted = false;

жараксыз орнотуу () {

// myGLCD. InitLCD () дисплейин иштетүү; myGLCD.clrScr (); myTouch. InitTouch (); myTouch.setPrecision (PREC_MEDIUM); Эң жогорку рейтинг = EEPROM.read (0); // EEPROM inititeGameден эң жогорку баллды окуңуз (); // Оюнду баштоо}

void loop () {

xP = xP-moveRate; // xP - x пиларлардын координаты; диапазону: 319 - (-51) drawPilars (xP, yP); // Түштөрдү тартат // yB - y чымчыктын координаты, ал түшүп жаткан ылдамдыктын маанисине көз каранды yB+= fallRateInt; fallRate = fallRate+0.4; // Ар бир инетрация күздүн ылдамдыгын жогорулатат, андыктан биз ылдамдануунун/ тартылуу күчүнүн таасирин түшүрө алабыз fallRateInt = int (fallRate); // Кагылышууну текшерет, эгерде (yB> = 180 || yB <= 0) {// top and bottom gameOver (); } if ((xP = 5) && (yB <= yP-2)) {// жогорку түркүк gameOver (); } if ((xP = 5) && (yB> = yP+60)) {// төмөнкү түркүк gameOver (); } // кушту тартат drawBird (yB);

// Мамы экран аркылуу өткөндөн кийин

эгер (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 (114, 198, 206) мамычасынын оң жагындагы көк төрт бурчтукту тартат; myGLCD.fillRect (x+51, 0, x+60, y); // мамыны тартат myGLCD.setColor (0, 200, 20); myGLCD.fillRect (x+49, 1, x+1, y-1); // myGLCD.setColor түркүгүнүн кара алкагын тартат (0, 0, 0); myGLCD.drawRect (x+50, 0, x, y); // myGLCD.setColor мамынын сол жагындагы көк төрт бурчтукту тартат (114, 198, 206); myGLCD.fillRect (x-1, 0, x-3, y);

// Астыңкы мамы

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

// ====== drawBird () - Көнүмүш функция

void drawBird (int y) {// Канаттууну тартат - myGLCD.drawBitmap (50, y, 35, 30, bird01) bitmap; // myGLCD.setColor (114, 198, 206) абалын тазалоо үчүн куштун үстүнөн жана астынан көк тик бурчтуктарды тартат; myGLCD.fillRoundRect (50, y, 85, y-6); myGLCD.fillRoundRect (50, y+30, 85, y+36); } // ======== gameOver () - Custom Function void gameOver () {delay (3000); // 1 секунд // Экранды тазалайт жана текстти басып чыгарат myGLCD.clrScr (); myGLCD.setColor (255, 255, 255); myGLCD.setBackColor (0, 0, 0); myGLCD.setFont (BigFont); myGLCD.print ("ОЮН БУТТУ", БОРБОРУ, 40); myGLCD.print ("Упай:", 100, 80); myGLCD.printNumI (балл, 200, 80); myGLCD.print ("Кайра баштоо…", БОРБОРУ, 120); myGLCD.setFont (SevenSegNumFont); myGLCD.printNumI (2, БОРБОРУ, 150); кечигүү (1000); myGLCD.printNumI (1, БОРБОРУ, 150); кечигүү (1000); // EEPROMде эң жогорку баллды жазат, эгерде (балл> эң жогорку упай) {жогорку рейтинг = упай; EEPROM.write (0, highScore); } // Өзгөрмөлөрдү позициянын маанилерин баштапкы абалга келтирет xP = 319; yB = 50; fallRate = 0; балл = 0; lastSpeedUpScore = 0; moveRate = 3; gameStarted = false; // оюн демилгечи оюнун кайра баштоо (); }

3 -кадам: Бүттү

Бүттү!
Бүттү!

Биз схеманы түзүп, кодду түздүк. Эми биз жөн гана Arduino мегасын туташтырып, оюнду ойношубуз керек.

Бул жерде менде бул оюндун кантип иштээри жана аны орнотуу үчүн эмне кылуу керектиги көрсөтүлгөн видеого шилтеме бар:

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

Төмөндө кандайдыр бир көйгөйлөр болсо мага кабарлаңыз.

Сунушталууда: