Talaan ng mga Nilalaman:

Floppy Bird: 3 Hakbang
Floppy Bird: 3 Hakbang

Video: Floppy Bird: 3 Hakbang

Video: Floppy Bird: 3 Hakbang
Video: My job is to observe the forest and something strange is happening here. 2024, Hulyo
Anonim
Floppy Bird
Floppy Bird
Floppy Bird
Floppy Bird

Ngayon ay gumagawa kami ng isang laro gamit ang isang TFT LCD. Ito ay magiging hitsura ng isang laro na talagang tanyag at maraming mga tao pa rin ang naglaro sa larong ito. Ang laro ay tinawag na Flappy Bird ngunit ang larong ito ay medyo magkakaiba dahil ang UI ay naiiba pati na rin ang paraan ng paggana ng laro. Tinawag ko ang larong ito na Floppy Bird dahil maaaring humantong ito sa mga isyu sa copyright. Gayunpaman ito ay isang talagang masaya laro at madaling gawin. Ginawa kong turuan ito na magbibigay-daan sa iyo upang ganap na gawin ang laro at gawin itong gumana tulad ng ginawa ko. Kung mayroon kang anumang mga katanungan kung gayon mangyaring magbigay ng puna sa ibaba at susubukan kong sagutin ang mga katanungang ito nang mas mabilis hangga't maaari.

Mga gamit

- Arduino Mega 2560 at cable

- Arduino Mega Shield

- Arduino TFT LCD Compatible sa Arduino Mega 2560

- SD Card

Hakbang 1: Pag-iipon ng TFT LCD

Pag-iipon ng TFT LCD
Pag-iipon ng TFT LCD

Ngayon, maaari naming simulan upang tipunin ang TFT LCD. Ikonekta namin ang TFT LCD sa kalasag, kaya unang gawin ang TFT LCD at karaniwang ihanay ito sa mga pin sa kalasag. Kapag naayos mo na ang mga pin, itulak ang TFT LCD pababa upang magkasya ito sa lugar. Kapag ang lahat ng mga pin ulo ay nasa kalasag at hindi mo makita ang mga pin na ulo, doon mo malalaman na ang TFT LCD ay konektado nang maayos. Susunod, maaari naming mai-plug in ang kalasag sa Arduino Mega 2560. I-align ang mga pin ng kalasag sa Arduino Mega at i-plug ito. Kapag ang lahat ng mga pin ng ulo ay nasa Arduino Mega at hindi mo makita ang mga pin na ulo, iyon ang kapag nalaman mo na ang TFT LCD ay konektado nang maayos at handa na itong mapatakbo. I-plug ang Arduino upang makita kung konektado mo nang maayos ang LCD, kung ang LCD ay nakabukas at ang screen ay puti pagkatapos ay binabati kita, matagumpay mong nakakonekta ang TFT LCD at handa na itong i-program. Panghuli, mayroon kaming isang bagay na dapat gawin, na kung saan ay upang ikonekta ang SD card sa LCD. Sa likuran ng TFT LCD mayroong isang puwang ng SD card kung saan maaari mo lamang mai-plug in ang SD card. Samakatuwid, i-plug lamang ito at tapos na.

Hakbang 2: Programming ang TFT LCD

Programming ang TFT LCD
Programming ang TFT LCD

Ngayon, ipaprogram namin ang LCD upang mapatakbo nito ang laro at maaari namin itong i-play. Nasa ibaba ang code na kailangan mong isulat at i-upload gamit ang Arduino IDE.

Mga problema na maaaring mayroon ka:

Baguhin ang mga parameter ng TFT LCD ayon sa modelo na mayroon ka.

KUMPLETO CODE:

# isama ang # isama ang # isama

// ==== Lumilikha ng Mga Bagay

UTFT myGLCD (ILI9341_16, 38, 39, 40, 41); // Parameter dapat ayusin sa iyong modelo ng Display / Shield URTouch myTouch (6, 5, 4, 3, 2);

// ==== Pagtukoy sa Mga Font

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

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

int x, y; // Mga variable para sa mga coordinate kung saan pinindot ang display

// Floppy Bird

int xP = 319; int yP = 100; int yB = 50; int movingRate = 3; int fallRateInt = 0; float fallRate = 0; int iskor = 0; int lastSpeedUpScore = 0; int pinakamataas naScore; boolean screenPressed = false; boolean gameStarted = false;

walang bisa ang pag-setup () {

// Initiate display myGLCD. InitLCD (); myGLCD.clrScr (); myTouch. InitTouch (); myTouch.setPrecision (PREC_MEDIUM); pinakamataas naScore = EEPROM.read (0); // Basahin ang pinakamataas na iskor mula sa EEPROM initiateGame (); // Initiate the game}

void loop () {

xP = xP-gumagalawRate; // xP - x coordinate ng pilars; saklaw: 319 - (-51) drawPilars (xP, yP); // Gumuhit ang mga haligi // yB - y coordinate ng ibon na nakasalalay sa halaga ng fallRate variable na yB + = fallRateInt; fallRate = fallRate + 0.4; // Ang bawat pagpasok ng pagtaas ng rate ng pagkahulog upang maaari naming ang epekto ng pagpapabilis / gravity fallRateInt = int (fallRate); // Checks for collision if (yB> = 180 || yB <= 0) {// top and bottom gameOver (); } kung ((xP = 5) && (yB <= yP-2)) {// itaas na haligi ng laroOver (); } kung ((xP = 5) && (yB> = yP + 60)) {// lower game gameOver (); } // Nakaguhit ang bird drawBird (yB);

// Matapos ang poste ay dumaan sa screen

kung (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); } iba pa kung (x <= 268) {// Nakaguhit ng asul na rektanggulo sa kanan ng haligi na myGLCD.setColor (114, 198, 206); myGLCD.fillRect (x + 51, 0, x + 60, y); // Ginaguhit ang haligi myGLCD.setColor (0, 200, 20); myGLCD.fillRect (x + 49, 1, x + 1, y-1); // Gumuhit ang itim na frame ng haligi myGLCD.setColor (0, 0, 0); myGLCD.drawRect (x + 50, 0, x, y); // Gumuhit ang asul na rektanggulo na kaliwa ng haligi myGLCD.setColor (114, 198, 206); myGLCD.fillRect (x-1, 0, x-3, y);

// Ang ilalim na haligi

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); } // Nakaguhit ang marka ng myGLCD.setColor (0, 0, 0); myGLCD.setBackColor (221, 216, 148); myGLCD.setFont (BigFont); myGLCD.printNumI (iskor, 100, 220); }

// ==== drawBird () - Pasadyang Pag-andar

void drawBird (int y) {// Nakaguhit ang ibon - bitmap myGLCD.drawBitmap (50, y, 35, 30, bird01); // Nakaguhit ng mga asul na parihaba sa itaas at ibaba ng ibon upang malinis ang estado ng previus na myGLCD.setColor (114, 198, 206); myGLCD.fillRoundRect (50, y, 85, y-6); myGLCD.fillRoundRect (50, y + 30, 85, y + 36); } // ==== gameOver () - Pasadyang Pag-andar na walang bisa na gameOver () {pagkaantala (3000); // 1 segundo // Nilinaw ang screen at na-print ang teksto na myGLCD.clrScr (); myGLCD.setColor (255, 255, 255); myGLCD.setBackColor (0, 0, 0); myGLCD.setFont (BigFont); myGLCD.print ("GAME OVER", CENTER, 40); myGLCD.print ("Iskor:", 100, 80); myGLCD.printNumI (iskor, 200, 80); myGLCD.print ("Restarting…", CENTER, 120); myGLCD.setFont (SevenSegNumFont); myGLCD.printNumI (2, CENTER, 150); pagkaantala (1000); myGLCD.printNumI (1, CENTER, 150); pagkaantala (1000); // Nagsusulat ng pinakamataas na iskor sa EEPROM kung (iskor> pinakamataas naScore) {pinakamataas na rating = iskor; EEPROM.write (0, pinakamataas naScore); } // I-reset ang mga variable upang simulan ang mga halaga ng posisyon xP = 319; yB = 50; fallRate = 0; puntos = 0; lastSpeedUpScore = 0; gumagalawRate = 3; gameStarted = false; // Restart game initiateGame (); }

Hakbang 3: Tapos Na

Tapos na!
Tapos na!

Ginawa namin ang circuit at naipon ang code. Ngayon, kailangan lang namin i-plug sa Arduino mega at i-play ang laro.

Narito, mayroon akong isang link sa isang video na nagpapakita kung paano gumagana ang larong ito at kung ano ang gagawin upang mai-set up ito:

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

Ipaalam sa akin kung mayroon kang anumang mga problema sa ibaba.

Inirerekumendang: