Բովանդակություն:

Անգործունյա թռչուն ՝ 3 քայլ
Անգործունյա թռչուն ՝ 3 քայլ

Video: Անգործունյա թռչուն ՝ 3 քայլ

Video: Անգործունյա թռչուն ՝ 3 քայլ
Video: Արագաչափ կամ «պարկած մլիցա» Բաղրամյանում 2024, Նոյեմբեր
Anonim
Անգործունյա թռչուն
Անգործունյա թռչուն
Անգործունյա թռչուն
Անգործունյա թռչուն

Այսօր մենք խաղ ենք պատրաստելու ՝ օգտագործելով TFT LCD: Սա կարծես մի խաղ լինի, որն իսկապես տարածված է, և շատերը դեռ խաղում են այս խաղը: Խաղը կոչվում է Flappy Bird, բայց այս խաղը մի փոքր այլ է, քանի որ UI- ն տարբեր է, ինչպես նաև խաղի ձևը: Այս խաղը կոչեցի Floppy Bird, քանի որ դա կարող է հանգեցնել հեղինակային իրավունքի խնդիրների: Այնուամենայնիվ, դա իսկապես զվարճալի խաղ է և հեշտ է պատրաստել: Ես դարձրել եմ սա ուսանելի, ինչը թույլ կտա ձեզ ամբողջովին դարձնել խաղը և այն դարձնել այնպես, ինչպես ես եմ արել: Եթե ունեք հարցեր, խնդրում ենք մեկնաբանել ներքևում, և ես կփորձեմ հնարավորինս արագ պատասխանել այս հարցերին:

Պարագաներ

- Arduino Mega 2560 և մալուխ

- Arduino Mega Shield

- Arduino TFT LCD Համատեղելի է Arduino Mega 2560- ի հետ

- SD քարտ

Քայլ 1: TFT LCD- ի հավաքում

TFT LCD- ի հավաքում
TFT LCD- ի հավաքում

Այժմ մենք կարող ենք սկսել TFT LCD- ի հավաքումը: Մենք TFT LCD- ը կմիացնենք վահանին, ուստի առաջին հերթին վերցրեք TFT LCD- ը և հիմնականում այն հավասարեցրեք վահանի կապումներին: Երբ կապումներն իրար հավասարեցրեք, TFT LCD- ն իջեցրեք ներքև, որպեսզի այն տեղավորվի տեղում: Երբ բոլոր կապող գլուխները գտնվում են վահանի մեջ, և դուք չեք կարող տեսնել դրանք, դա այն ժամանակ է, երբ դուք գիտեք, որ TFT LCD- ը պատշաճ կերպով միացված է: Հաջորդը, մենք կարող ենք վահանը միացնել Arduino Mega 2560 -ին: Հավասարեցրեք վահանի կապումներն Arduino Mega- ի վրա և միացրեք այն: երբ գիտեք, որ TFT LCD- ը պատշաճ կերպով միացված է և պատրաստ է միացման: Միացրեք Arduino- ին `տեսնելու համար, թե արդյոք LCD- ը ճիշտ եք միացրել, LCD- ը միանում է, իսկ էկրանը սպիտակ է, շնորհավորում եմ, հաջողությամբ միացրել եք TFT LCD- ը և այժմ այն պատրաստ է ծրագրավորման համար: Ի վերջո, մենք պետք է անենք մեկ բան, այն է `SD քարտը միացնել LCD- ին: TFT LCD- ի հետևի մասում կա SD քարտի բնիկ, որտեղ կարող եք պարզապես միացնել SD քարտը: Հետեւաբար, պարզապես միացրեք այն, եւ դա արվում է:

Քայլ 2. TFT LCD ծրագրավորում

TFT LCD ծրագրավորում
TFT LCD ծրագրավորում

Այժմ մենք ծրագրավորելու ենք LCD- ն, որպեսզի այն վարի խաղը և մենք կարողանանք խաղալ այն: Ստորև բերված է այն կոդը, որը դուք պետք է կազմեք և վերբեռնեք ՝ օգտագործելով Arduino IDE- ն:

Խնդիրներ, որոնք կարող են ունենալ

Փոխեք TFT LCD- ի պարամետրերը `ըստ ձեր ունեցած մոդելի:

Ամբողջական Կոդ:

#ներառել #ներառել #ներառել

// ==== Օբյեկտների ստեղծում

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 ;

արտաքին անստորագիր int bird01 [0x41A]; // Թռչնի Bitmap

int x, y; // Կոորդինատների փոփոխականներ, որտեղ սեղմված է էկրանը

// անգործունյա թռչուն

int xP = 319; int yP = 100; int yB = 50; int moveRate = 3; int fallRateInt = 0; float fallRate = 0; int հաշիվ = 0; int lastSpeedUpScore = 0; int ամենաբարձր միավոր; բուլյան screenPressed = կեղծ; բուլյան gameStarted = կեղծ;

void setup () {

// Սկսել ցուցադրել myGLCD. InitLCD (); myGLCD.clrScr (); myTouch. InitTouch (); myTouch.setPrecision (PREC_MEDIUM); ամենաբարձր միավոր = EEPROM.read (0); // Կարդացեք EEPROM initateGame- ի ամենաբարձր գնահատականը (); // Սկսել խաղը}

դատարկ շրջան () {

xP = xP-moveRate; // xP - x սյուների կոորդինատ; միջակայք `319 - (-51) drawPilars (xP, yP); // Գծում է սյուները // yB - y թռչնի կոորդինատը, որը կախված է ընկնող Rate փոփոխականի արժեքից yB+= fallRateInt; fallRate = fallRate+0.4; // Յուրաքանչյուր ներխուժման անկման տեմպը մեծանում է, որպեսզի մենք կարողանանք արագացման/ ծանրության ազդեցությունը fallRateInt = int (fallRate); // Ստուգում է բախման եթե (yB> = 180 || yB <= 0) {// վերևի և ներքևի խաղը Over (); } if ((xP = 5) && (yB <= yP-2)) {// վերին սյան խաղը Over (); } if ((xP = 5) && (yB> = yP+60)) {// ստորին սյունով խաղը Over (); } // Նկարում է թռչնի 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) {// Draws the bird - bitmap myGLCD.drawBitmap (50, y, 35, 30, bird01); // Թռչունի վերևից և ներքևից գծում է կապույտ ուղղանկյուններ `մաքրելու իր նախածննդյան վիճակը myGLCD.setColor (114, 198, 206); myGLCD.fillRoundRect (50, y, 85, y-6); myGLCD.fillRoundRect (50, y+30, 85, y+36); } // ======== gameOver () - Պատվերով գործառույթ void gameOver () {հետաձգում (3000); // 1 վայրկյան // Մաքրում է էկրանը և տպում տեքստը myGLCD.clrScr (); myGLCD.setColor (255, 255, 255); myGLCD.setBackColor (0, 0, 0); myGLCD.setFont (BigFont); myGLCD.print ("GAME OVER", CENTER, 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, ամենաբարձր գնահատական); } // Վերականգնում է փոփոխականները ՝ սկսելու դիրքի արժեքները xP = 319; yB = 50; fallRate = 0; հաշիվ = 0; lastSpeedUpScore = 0; moveRate = 3; gameStarted = կեղծ; // Վերագործարկեք խաղը initateGame (); }

Քայլ 3: Կատարված է:

Կատարած!
Կատարած!

Մենք կազմել ենք շրջանը և կազմել ծածկագիրը: Այժմ մենք պարզապես պետք է միացնենք Arduino մեգան և խաղանք խաղը:

Ահա, ես ունեմ մի տեսանյութի հղում, որը ցույց է տալիս, թե ինչպես է աշխատում այս խաղը և ինչ անել այն կարգավորելու համար.

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

Տեղեկացրեք ինձ, եթե որևէ խնդիր ունեք ներքևում:

Խորհուրդ ենք տալիս: