Мазмуну:
Video: Floppy Bird: 3 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:38
Бүгүн биз TFT LCDди колдонуп оюн жасайбыз. Бул чынында эле популярдуу болгон оюнга окшош болмок жана көптөгөн адамдар дагы эле бул оюнду ойношот. Оюн Flappy Bird деп аталат, бирок бул оюн бир аз башкача, анткени UI оюндун иштөө ыкмасынан айырмаланат. Мен бул оюнду Floppy Bird деп атадым, анткени бул автордук укук маселелерине алып келиши мүмкүн. Ошентсе да, бул абдан кызыктуу оюн жана аны жасоо оңой. Мен бул оюнду кылдым, бул сизге оюнду толугу менен жасоого жана мен сыяктуу иштешине мүмкүнчүлүк берет. Эгерде сизде кандайдыр бир суроолор болсо, төмөндө комментарий калтырыңыз, мен бул суроолорго мүмкүн болушунча тезирээк жооп берүүгө аракет кылам.
Жабдуулар
- Arduino Mega 2560 жана кабель
- Arduino Mega Shield
- Arduino TFT LCD Arduino Mega 2560 менен шайкеш келет
- SD карта
1 -кадам: 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 ЖКны программалоо
Эми биз ЖКны программалайбыз, андыктан ал оюнду иштетет жана биз аны ойной алабыз. Төмөндө сиз 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-…
Төмөндө кандайдыр бир көйгөйлөр болсо мага кабарлаңыз.
Сунушталууда:
Arduino Flappy Bird - Arduino 2.4 "TFT сенсордук экраны SPFD5408 Bird Game Project: 3 кадам
Arduino Flappy Bird | Arduino 2.4 "TFT сенсордук экраны SPFD5408 Bird Game Project: Flappy Bird ал жерде бир нече жыл ичинде өтө популярдуу оюн болгон жана көптөгөн адамдар аны өз жолу менен жаратышкан, мен Arduino менен flappy куштун мина версиясын жана 2.4" TFT Сенсордук экран SPFD5408, Ошентип, баштайлы
Apple II Floppy Hackintosh I7-7700 3.6Ghz: 7 кадам
Apple II Floppy Hackintosh I7-7700 3.6Ghz: Бул биринчи сүрөт сизге таза драйвка шилтеме берүү үчүн (оригиналдуу асан-үсөн Apple логотиби менен), менин үстүмдө бир аз көбүрөөк. Экинчи сүрөт - бул ички сүрөттөр, мен аны ажыратуудан мурун сүрөткө түшүүнү унутуп койгом, ошондуктан Googтун уруксаты менен
Amiga Arduino Floppy Drive Case/Корпус: 5 кадам
Amiga Arduino Floppy Drive Case/Enclosure: Бул көрсөтмө Windows проектиси үчүн Arduino Amiga Floppy Disk Reader/Writer үчүн дискета корпусун кантип чогултуу керектигин түшүндүрөт. Бул долбоорду аягына чыгаруу үчүн: 3D принтери абада
SD/MMC Floppy Edge коннекторуна туура келет: 8 кадам (сүрөттөр менен)
SD/MMC Floppy Edge коннекторуна туура келет: Сиз SD камера эстутум картасын бир нече I/O төөнөгүчтөрү бар ар кандай homebrew DIY долбооруна тиркеп койсоңуз болот. түзмөктүн драйверлери жана ар кандай ачык булактуу Linux дистрибьюторун орнотуу
Apple Floppy Amp: 8 кадам (сүрөттөр менен)
Apple Floppy Amp: Эски 5.25 табылды " үнөмдөөчү дүкөндө 5.99 долларга диск. Бул мага Apple IIe балалыгымды эстетти, ошондуктан аны менен эмне кыларымды билбей туруп сатып алдым. Мен анахронизмдин күйөрманымын (уятсыз плагин: ретро hi-fi көрсөтмөсүн караңыз) жана