Talaan ng mga Nilalaman:

LCD Invaders: isang Space Invaders Tulad ng Laro sa 16x2 LCD Character Display: 7 Mga Hakbang
LCD Invaders: isang Space Invaders Tulad ng Laro sa 16x2 LCD Character Display: 7 Mga Hakbang

Video: LCD Invaders: isang Space Invaders Tulad ng Laro sa 16x2 LCD Character Display: 7 Mga Hakbang

Video: LCD Invaders: isang Space Invaders Tulad ng Laro sa 16x2 LCD Character Display: 7 Mga Hakbang
Video: Sinoalice x Space Invaders Collab! SHOULD YOU PULL? 2024, Nobyembre
Anonim
LCD Invaders: isang Space Invaders Tulad ng Laro sa 16x2 LCD Character Display
LCD Invaders: isang Space Invaders Tulad ng Laro sa 16x2 LCD Character Display
LCD Invaders: isang Space Invaders Tulad ng Laro sa 16x2 LCD Character Display
LCD Invaders: isang Space Invaders Tulad ng Laro sa 16x2 LCD Character Display
LCD Invaders: isang Space Invaders Tulad ng Laro sa 16x2 LCD Character Display
LCD Invaders: isang Space Invaders Tulad ng Laro sa 16x2 LCD Character Display
LCD Invaders: isang Space Invaders Tulad ng Laro sa 16x2 LCD Character Display
LCD Invaders: isang Space Invaders Tulad ng Laro sa 16x2 LCD Character Display

Hindi na kailangang ipakilala ang isang maalamat na laro na "Space Invaders". Ang pinaka-kagiliw-giliw na tampok ng proyektong ito ay ang paggamit nito ng pagpapakita ng teksto para sa grapikong output. Nakamit ito sa pamamagitan ng pagpapatupad ng 8 pasadyang mga character.

Maaari mong i-download ang kumpletong Arduino sketch dito:

github.com/arduinocelentano/LCD_invaders/

Mga gamit

Arduino UNO board

LCD keypad na kalasag

USB cable para sa pag-upload ng sketch

Hakbang 1: Disenyo ng Laro

Disenyo ng Laro
Disenyo ng Laro

Hindi pinapayagan ng screen na kontrolin ang magkakahiwalay na mga pixel at nagbibigay ng dalawang linya lamang ng teksto na hindi sapat para sa laro. Ngunit pinapayagan nitong magpatupad ng hanggang sa 8 pasadyang mga character. Ang trick ay ang pagproseso ng bawat character na 5x8 pixel bilang dalawang 5x4 pixel na mga cell ng laro. Iyon ay upang sabihin, magkakaroon kami ng 16x4 na larangan ng laro, na may katuturan. Ang 8 character ay sapat lamang upang magpatupad ng mga sprite para sa sasakyang panghimpapawid ng sasakyang panghimpapawid, mga bala at animated na dayuhan. Dahil ang sprites ay 5x4 at ang mga character ay 5x8, kakailanganin namin ang ilang mga character na may dalawang sprite tulad ng "isang sasakyang pangalangaang at isang bala" sprite, "isang dayuhan at isang bala sprite" atbp. Lahat ng mga pasadyang character ay ipinapakita sa larawan.

Hakbang 2: Mga Pindutan sa Pagproseso

Mga Pindutan sa pagpoproseso
Mga Pindutan sa pagpoproseso

Karaniwan, ang lahat ng mga pindutan sa isang kalasag na LCD ay konektado sa parehong analogue pin. Mayroong iba't ibang mga bersyon ng LCD kalasag, kaya malamang na kailangan mong baguhin nang bahagya ang mga integer literal sa aking code sa pagpoproseso ng pindutan.

Hakbang 3: Hierarchy ng Mga Klase

Mga Hierarchy ng Klase
Mga Hierarchy ng Klase

Nagpatupad ako ng isang base class na GameObject na mayroong mga coordinate at bilis ng patlang at pinoproseso ang mga banggaan. Ang Classes Ship, Alien at Bullet ay minana mula rito.

Hakbang 4: Ina-update ang Screen

Ina-update ang Screen
Ina-update ang Screen

Ang pag-render ng lohika ay maaaring magmukhang medyo kumplikado dahil kailangan naming ibahin ang 16x4 na lohika sa laro sa 16x2 display. Mangyaring basahin ang mga komento sa code para sa karagdagang sanggunian. Upang maiwasan ang pag-flicker, gumamit ako ng isang dalawang dimensional na char array bilang isang buffer ng teksto. Pinapayagan itong gumamit ng isang pares (isa para sa bawat linya) ng mga pagpapatakbo sa pag-print upang mai-update ang screen.

Hakbang 5: Logic ng Laro

Laro Lohika
Laro Lohika

Narito ang puso ng laro. Binabago ng pangunahing loop ang mga coordinate ng lahat ng mga bagay, sinuri ang lahat ng mga uri ng mga banggaan at mga kaganapan sa pagpindot sa pindutan. Ang bilis ng mga dayuhan at ang posibilidad ng pagbaril ay tumataas mula sa antas hanggang sa antas. Ngunit tumataas din ang gantimpala ng iskor.

Hakbang 6: Isang Egg ng Easter

Isang Egg ng Easter
Isang Egg ng Easter

Walang antas pagkatapos ng antas 42. Seryoso. Ito ang Ultimate Level of Life, The Universe, at Lahat.:)

Inirerekumendang: