Talaan ng mga Nilalaman:

Laro ng Arduino Space Rocks: 3 Hakbang
Laro ng Arduino Space Rocks: 3 Hakbang

Video: Laro ng Arduino Space Rocks: 3 Hakbang

Video: Laro ng Arduino Space Rocks: 3 Hakbang
Video: 35 видео со страшными призраками: мегасборник 2023 года [V1] 2024, Nobyembre
Anonim
Laro ng Arduino Space Rocks
Laro ng Arduino Space Rocks

Kung nilalaro man ang mga ito sa isang computer, sa isang telepono, sa isang game console, o sa isang standalone box, maraming mga video game ang may kasamang elemento ng pag-iwas sa balakid. Oo naman, maaaring may mga puntos na iginawad para sa pagkolekta ng mga token o paghahanap ng iyong paraan sa pamamagitan ng isang maze, ngunit siguraduhin na marahil ay may isang bagay sa laro na ang nag-iisang layunin ay upang pigilan ka sa paggawa nito. Ang unang video game ay Pong, ngunit pagkatapos nito ang pinakatanyag na laro ay ang mga bagay tulad ng "Asteroids" o "Pac-Man". Ang isang mas kamakailang pagkakaiba-iba ay magiging simple ngunit nakakahumaling na laro ng "Flappy Birds".

Kamakailan ko nakita na ang isang tao ay gumawa ng isang simpleng dalawang antas na bersyon ng "Flappy Bird" na nilalaro sa isang karaniwang 1602 LCD. Naisip ko na iyon ay maaaring maging isang bagay na maaaring magustuhan ng mga apo kaya't napagpasyahan kong gawin ang sarili kong pagkakaiba-iba mula sa simula. Ang bersyon ng 1602 ay may dalawang antas lamang kaya't napagpasyahan kong gumamit ng isang 2004 LCD (20x4) sa halip upang medyo madagdagan ang paghihirap ng laro. Pinili ko din na gawin itong mas katulad ng "Asteroids" sa pamamagitan ng paggabay sa manlalaro ng isang "barko" sa pamamagitan ng isang maze ng "mga space rock". Kahit na hindi ka interesado sa pagbuo ng laro, maaaring may ilang mga elemento ng software na maaari mong gamitin sa isa sa iyong sariling mga proyekto.

Hakbang 1: Hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

Ang hardware ay maaaring batay sa halos anumang bersyon ng Arduino. Ginawa ko ang prototyping gamit ang isang Nano at pagkatapos ay sinunog ang code sa isang ATMega328 chip. Iyon ang parehong maliit na tilad na ginamit sa Nano ngunit ang paggamit nito nang mag-isa ay nagbibigay-daan para sa isang mas compact build at mas kaunting pagkonsumo ng kuryente. Tulad ng nakikita mo, itinayo ko ang circuit sa isang maliit na breadboard na mga piggyback sa module ng LCD. Ang iba pang aspeto na naiiba ay ang Nano ay tumatakbo sa 16-MHz gamit ang isang panlabas na kristal ngunit pinili kong gamitin ang built-in na 8-MHz oscillator para sa chip ng ATMega328. Makakatipid ng mga piyesa at lakas.

Ang 2004 LCD interface sa Arduino sa parehong paraan tulad ng isang 1602 LCD. Ang isang kagiliw-giliw na pagkakaiba ay sa pagtugon sa mga lokasyon ng display. Malinaw na mayroong pagkakaiba sapagkat mayroong apat na linya sa halip na dalawa ngunit, noong 2004, ang pangatlong linya ay isang extension ng unang linya at ang pang-apat na linya ay isang extension ng pangalawang linya. Sa madaling salita, kung mayroon kang isang programa sa pagsubok na nagpadala lamang ng isang string ng mga character sa LCD, ang ika-21 character ay lalabas sa pagsisimula ng pangatlong linya at ang pang-41 na character ay balot pabalik sa simula ng unang linya. Ginagamit ko ang katangiang iyon sa software upang mabisang doble ang haba ng maze.

Nagpasiya akong patakbuhin ang aking bersyon ng baterya kaya gumamit ako ng isang karaniwang 18650 Li-ion, 3.6-volt na baterya. Kinakailangan nito na magdagdag ako ng isang maliit na board upang payagan ang USB recharging at isa pang maliit na board upang mapalakas ang boltahe ng baterya sa 5 volts para sa LCD at sa chip ng ATMega. Ipinapakita ng mga larawan ang mga module na ginamit ko ngunit mayroon ding mga all-in-one na modyul na parehong gumagana.

Hakbang 2: Software

Ang software ay pareho para sa parehong Nano at ang ATMega328 chip. Ang pagkakaiba lamang ay sa pamamaraan ng pagprograma. Gumagamit ako ng aking sariling bersyon ng barebones ng 1602 LCD software at ang LCD software sa proyektong ito ay batay doon. Kailangan kong magdagdag ng mga kakayahan upang matugunan ang labis na mga linya ng 2004 display at nagdagdag din ng mga gawain para sa paglilipat ng display. Nagbibigay ang shift ng pagpapakita ng kilusang epekto ng "mga bato" na nakaraan sa "barko".

Tulad ng nabanggit kanina, ang mga linya 1 at 3 ay bumubuo ng isang pabilog na pila at ang mga linya 2 at 4 ay ginagawa rin. Nangangahulugan iyon na pagkatapos ng 20 paglilipat, ang mga linya 1 at 3 ay napalitan at ang mga linya 2 at 4 ay napalitan. Pagkatapos ng 40 paglilipat ng mga linya ay bumalik sa kanilang orihinal na posisyon. Dahil sa pag-uugaling ito, ang orihinal na 20-character na maze ay magiging ganap na naiiba kapag ang mga linya ay nagpapalit. Ginawang kawili-wili ang buhay noong sinubukan kong bumuo ng isang maze. Sa wakas ay binuksan ko lamang ang isang spreadsheet ng Excel upang maaari kong i-chart ang landas nang hindi kinakailangang palaging baguhin ang software. Ang software na ibinigay dito ay may dalawang bersyon ng maze (ang isa ay nagkomento) upang mapili mo kung alin ang gusto mo o bumubuo ng iyong sarili.

Orihinal na ginusto ko ito upang maging sapat na simple upang mai-play ito ng mga batang apo, ngunit nais ko rin itong magkaroon ng dagdag na hamon kung sila (o ibang tao) ay napakahusay dito. Nagsisimula ang laro sa shift rate na itinakda sa 1 segundo. Ang panloob na rate ng tic ay 50ms kaya nangangahulugan ito na mayroong 20 agwat kung saan ang pindutan ng pataas / pababa ay maaaring mapindot. Sa totoo lang, isang pinindot na pindutan ang kumonsumo ng 2 mga tics dahil ginagamit ang agwat ng 50ms upang makita ang pindutin at isa pang 50ms agwat ang ginagamit upang maghintay para sa paglabas. Gamit ang default na maze ang maximum na bilang ng mga pagpindot na kinakailangan bago ang susunod na paglilipat ay tatlo. Ang simpleng paraan upang madagdagan ang kahirapan sa laro ay upang paikliin ang oras sa pagitan ng mga paglilipat kaya't ang isang linya ng code ay ginagawa lamang habang tumataas ang iskor. Ang rate ng paglilipat ay nakatakda upang mapabilis ng 50ms bawat 20 paglilipat, na may minimum na rate na limitado sa 500ms. Madaling baguhin ang mga parameter na ito.

Maliban sa pagbabago ng rate ng paglilipat, ang pangunahing lohika sa software ay upang ilipat ang "barko" at upang matukoy kung ang "barko" ay nakabangga ng isang "bato". Sinasamantala ng mga pagpapaandar na ito ang tinukoy na array na "rock / space" at pati na rin ang array na tumutukoy sa mga lokasyon ng memorya sa display. Ang bilang ng shift ay tumutugma sa haba ng linya ng LCD (0-19) at ginagamit bilang isang index sa mga arrays na ito. Ang lohika ay medyo kumplikado sa pamamagitan ng ang katunayan na ang mga linya ay nagpapalit bawat 20 na bilang ng paglilipat. Ginagamit ang katulad na lohika upang matukoy ang posisyon ng "barko" na maaaring nasa alinman sa apat na linya.

Ang iskor para sa bawat pag-play ay ang bilang ng bilang ng mga shift na naganap at ang mataas na iskor ay nai-save sa microcontroller panloob na EEROM. Ginagamit ang library ng EEPROM upang gawin ang pagbabasa at magsulat sa memorya na ito. Ang mga magagamit na gawain ay nagbibigay-daan sa solong byte na nagbabasa / nagsusulat at nagbabasa / nagsusulat ng mga lumulutang halaga ng puntos. Ang isang halaga ng 0xA5 ay nakaimbak sa unang lokasyon ng EEROM upang ipahiwatig na ang isang mataas na marka ay nai-save. Kung ang halagang iyon ay naroroon sa power up, pagkatapos ay ang lumulutang na point point para sa mataas na iskor ay nabasa at ipinakita. Kung ang halagang 0xA5 ay wala, kung gayon ang isang gawain ay tinawag upang simulan ang mataas na iskor sa halagang 1. Ang parehong gawain ay tinatawag kung nais ang isang pag-reset ng mataas na iskor. Ang mataas na marka ay itinakda pabalik sa isang halaga ng 1 sa pamamagitan ng pagpindot ng isa sa mga pindutan ng pataas / pababa at pagkatapos ay pansamantalang pinindot ang pindutang i-reset.

Hakbang 3: Paglalaro ng Laro

Paglalaro ng Laro
Paglalaro ng Laro
Paglalaro ng Laro
Paglalaro ng Laro

Kapag inilapat ang lakas, ipinapakita ang kasalukuyang mataas na marka. Matapos maipakita ang mataas na iskor, ang maze ng "mga bato" at ang "barko" ay ipinakita pagkatapos magsimula ang laro ilang segundo mamaya. Kapag ang "barko" ay tumama sa isang "bato" ang mensahe na "CRASH AND BURN" ay kumikislap ng ilang beses bago ipakita ang iskor para sa laro. Kung ang isang bagong mataas na marka ay nagawa, pagkatapos ang mensahe na iyon ay ipinapakita rin. Ang isang bagong laro ay sinimulan sa pamamagitan ng pagpindot sa pindutan ng pag-reset.

Inirerekumendang: