Satura rādītājs:

Arduino Space Rocks Spēle: 3 soļi
Arduino Space Rocks Spēle: 3 soļi

Video: Arduino Space Rocks Spēle: 3 soļi

Video: Arduino Space Rocks Spēle: 3 soļi
Video: Volcano Eruption Project - Fun Science Fair Project by Vanessa 2024, Jūlijs
Anonim
Spēle Arduino Space Rocks
Spēle Arduino Space Rocks

Neatkarīgi no tā, vai tās tiek atskaņotas datorā, tālrunī, spēļu konsolē vai atsevišķā kastē, daudzas videospēles ietver šķēršļu novēršanas elementu. Protams, var tikt piešķirti punkti par žetonu savākšanu vai ceļa atrašanu labirintā, taču esiet droši, ka spēlē, iespējams, ir kaut kas tāds, kura vienīgais mērķis ir liegt jums to darīt. Pirmā videospēle bija Pong, bet pēc tam populārākās spēles bija tādas kā “Asteroids” vai “Pac-Man”. Jaunāka variācija būtu vienkāršā, bet aizraujošā spēle “Flappy Birds”.

Nesen es redzēju, ka kāds bija izveidojis vienkāršu divu līmeņu versiju “Flappy Bird”, kas tika atskaņota kopējā 1602 LCD. Es domāju, ka tas varētu patikt mazbērniem, tāpēc nolēmu izdarīt savu variantu no nulles. 1602 versijai ir tikai divi līmeņi, tāpēc es nolēmu tā vietā izmantot 2004. gada LCD (20x4), lai nedaudz palielinātu spēles grūtības. Es arī izvēlējos to padarīt līdzīgāku “Asteroīdiem”, liekot spēlētājam vadīt „kuģi” cauri „kosmosa iežu” labirintam. Pat ja jūs neinteresē spēles veidošana, iespējams, ir daži programmatūras elementi, kurus varat izmantot kādā no saviem projektiem.

1. darbība. Aparatūra

Aparatūra
Aparatūra
Aparatūra
Aparatūra
Aparatūra
Aparatūra

Aparatūras pamatā var būt gandrīz jebkura Arduino versija. Es veicu prototipēšanu, izmantojot Nano, un pēc tam kodu sadedzināju ATMega328 mikroshēmā. Tā ir tā pati mikroshēma, ko izmanto Nano, taču tās izmantošana pati par sevi nodrošina kompaktāku konstrukciju un mazāku enerģijas patēriņu. Kā redzat, es izveidoju ķēdi uz neliela maizes dēļa, kas atrodas uz LCD moduļa. Otrs atšķirīgais aspekts ir tas, ka Nano darbojas ar frekvenci 16 MHz, izmantojot ārēju kristālu, bet es izvēlējos ATMega328 mikroshēmai izmantot iebūvēto 8 MHz oscilatoru. Tas ietaupa detaļas un enerģiju.

2004. gada LCD savienojas ar Arduino tāpat kā 1602 LCD. Interesanta atšķirība ir displeja atrašanās vietu adresēšana. Acīmredzot pastāv atšķirība, jo divu līniju vietā ir četras līnijas, bet 2004. gadā trešā līnija ir pirmās līnijas pagarinājums, bet ceturtā līnija ir otrās līnijas pagarinājums. Citiem vārdiem sakot, ja jums būtu testa programma, kas LCD ekrānā tikko nosūtītu rakstzīmju virkni, trešās rindas sākumā tiktu parādīta 21. rakstzīme, bet 41. rakstzīme - līdz pirmās rindas sākumam. Es izmantoju šo īpašību programmatūrā, lai efektīvi dubultotu labirinta garumu.

Es nolēmu savu versiju darbināt ar akumulatoru, tāpēc es izmantoju parasto 18650 litija jonu 3,6 voltu akumulatoru. Tam bija jāpievieno neliela tāfele, lai varētu uzlādēt USB, un vēl viena maza plāksne, lai palielinātu akumulatora spriegumu līdz 5 voltiem LCD un ATMega mikroshēmai. Attēlos ir redzami manis izmantotie moduļi, taču ir arī daudzfunkciju moduļi, kas veic abas funkcijas.

2. darbība: programmatūra

Programmatūra ir vienāda gan Nano, gan ATMega328 mikroshēmai. Vienīgā atšķirība ir programmēšanas metodē. Es izmantoju savu 1602 LCD programmatūras barebones versiju, un LCD programmatūra šajā projektā ir balstīta uz to. Man bija jāpievieno iespējas, lai risinātu 2004. gada displeja papildu rindas, kā arī jāpievieno rutīnas displeja maiņai. Displeja nobīde nodrošina “akmeņu” kustības efektu aiz “kuģa”.

Kā minēts iepriekš, 1. un 3. līnija veido apļveida rindu, bet 2. un 4. rindas arī. Tas nozīmē, ka pēc 20 maiņām 1. un 3. rindas tiek apmainītas un 2. un 4. rindas tiek apmainītas. Pēc 40 maiņām līnijas atgriežas sākotnējā stāvoklī. Šīs uzvedības dēļ sākotnējais 20 rakstzīmju labirints, mainoties līnijām, kļūst pilnīgi atšķirīgs. Tas padarīja dzīvi interesantu, kad mēģināju veidot labirintu. Beidzot es tikko atvēru Excel izklājlapu, lai es varētu iezīmēt ceļu, nemainot programmatūru. Šeit piedāvātajai programmatūrai ir divas labirinta versijas (viena ir komentēta), lai jūs varētu izvēlēties, kuru vēlaties, vai izveidot savu.

Sākotnēji es gribēju, lai tas būtu pietiekami vienkārši, lai jaunie mazbērni varētu to spēlēt, taču es arī gribēju, lai tam būtu papildu izaicinājums, ja viņi (vai kāds cits) to pārāk labi iemācītos. Spēle sākas ar nobīdes ātrumu 1 sekundē. Iekšējais ticamības koeficients ir 50 ms, kas nozīmē, ka ir 20 intervāli, kuros var nospiest augšup/lejup vērstās pogas. Patiesībā, nospiesta poga patērē 2 atzīmes, jo preses noteikšanai tiek izmantots 50 ms intervāls, bet vēl 50 ms - lai gaidītu atbrīvošanu. Izmantojot noklusējuma labirintu, maksimālais spiedienu skaits, kas nepieciešams pirms nākamās maiņas, ir trīs. Vienkāršs veids, kā palielināt spēles grūtības, ir saīsināt laiku starp maiņām, lai pāris koda rindiņas to darītu, palielinoties rezultātam. Pārmaiņu ātrums ir paātrināts par 50 ms ik pēc 20 maiņām, minimālais ātrums ir ierobežots līdz 500 ms. Šos parametrus ir viegli mainīt.

Izņemot nobīdes ātruma maiņu, programmatūras galvenā loģika ir pārvietot “kuģi” un noteikt, vai “kuģis” nav sadūries ar “iezi”. Šīs funkcijas izmanto definēto “rock/space” masīvu, kā arī masīvu, kas nosaka atmiņas vietas displejā. Maiņu skaits atbilst LCD līnijas garumam (0-19) un tiek izmantots kā indekss šajos masīvos. Loģiku nedaudz sarežģī fakts, ka rindas tiek mainītas ik pēc 20 maiņām. Līdzīgu loģiku izmanto, lai noteiktu “kuģa” stāvokli, kas var atrasties jebkurā no četrām līnijām.

Katras spēles rezultāts ir vienkārši notikušo maiņu skaits un augstākais rezultāts tiek saglabāts mikrokontrollera iekšējā EEROM. EEPROM bibliotēka tiek izmantota lasīšanai un rakstīšanai šajā atmiņā. Pieejamās rutīnas ļauj nolasīt/ierakstīt viena baita vērtības un nolasīt/rakstīt peldošā komata vērtības. Vērtība 0xA5 tiek saglabāta pirmajā EEROM vietā, lai norādītu, ka ir saglabāts augsts rezultāts. Ja šī vērtība ir ieslēgšanas brīdī, tiek nolasīta un parādīta augstākā rezultāta peldošā komata vērtība. Ja 0xA5 vērtības nav, tiek izsaukta rutīna, lai inicializētu augstāko punktu skaitu līdz 1. Šī pati rutīna tiek izsaukta, ja ir vēlams atiestatīt augstāko punktu skaitu. Augstais rādītājs tiek atiestatīts uz vērtību 1, turot nospiestu vienu no augšup/lejup pogām un pēc tam īslaicīgi nospiežot atiestatīšanas pogu.

3. darbība. Spēles spēlēšana

Spēles spēlēšana
Spēles spēlēšana
Spēles spēlēšana
Spēles spēlēšana

Kad tiek izmantota strāvas padeve, tiek parādīts pašreizējais labākais rādītājs. Pēc tam, kad ir parādīts labākais rezultāts, tiek parādīts “klinšu” labirints un “kuģis”, pēc tam spēle sākas dažas sekundes vēlāk. Kad “kuģis” ietriecas “klintī”, pirms spēles rezultātu parādīšanas dažas reizes mirgo ziņojums “CRASH AND BURN”. Ja tiek veikts jauns augsts rādītājs, tiek parādīts arī šis ziņojums. Jauna spēle tiek sākta, nospiežot atiestatīšanas pogu.

Ieteicams: