Turinys:

„Arduino Space Rocks“žaidimas: 3 žingsniai
„Arduino Space Rocks“žaidimas: 3 žingsniai

Video: „Arduino Space Rocks“žaidimas: 3 žingsniai

Video: „Arduino Space Rocks“žaidimas: 3 žingsniai
Video: High Density 2022 2024, Gruodis
Anonim
Žaidimas „Arduino Space Rocks“
Žaidimas „Arduino Space Rocks“

Nesvarbu, ar jie žaidžiami kompiuteryje, telefone, žaidimų konsolėje, ar atskiroje dėžutėje, daugelyje vaizdo žaidimų yra kliūčių vengimo elementas. Žinoma, gali būti skiriami taškai už žetonų surinkimą ar kelią per labirintą, tačiau būkite tikri, kad žaidime tikriausiai yra kažkas, kurio vienintelis tikslas yra neleisti jums to padaryti. Pirmasis vaizdo žaidimas buvo „Pong“, tačiau po to populiariausi žaidimai buvo tokie kaip „Asteroidai“ar „Pac-Man“. Naujausias variantas būtų paprastas, bet priklausomybę sukeliantis „Flappy Birds“žaidimas.

Neseniai pamačiau, kad kažkas padarė paprastą dviejų lygių „Flappy Bird“versiją, kuri buvo grojama įprastu 1602 LCD. Maniau, kad tai gali patikti anūkams, todėl nusprendžiau padaryti savo variantą nuo nulio. „1602“versija turi tik du lygius, todėl nusprendžiau naudoti 2004 m. Skystųjų kristalų ekraną (20x4), kad šiek tiek padidintų žaidimo sunkumą. Aš taip pat nusprendžiau padaryti jį panašesnį į „asteroidus“, leisdamas žaidėjui vadovauti „laivui“per „kosminių uolų“labirintą. Net jei nesate suinteresuotas kurti žaidimą, gali būti tam tikrų programinės įrangos elementų, kuriuos galite naudoti viename iš savo projektų.

1 žingsnis: Aparatūra

Techninė įranga
Techninė įranga
Techninė įranga
Techninė įranga
Techninė įranga
Techninė įranga

Techninė įranga gali būti pagrįsta beveik bet kuria „Arduino“versija. Aš sukūriau prototipą naudodamas „Nano“ir tada įrašiau kodą į „ATMega328“lustą. Tai tas pats lustas, naudojamas „Nano“, tačiau naudojant jį pats, galima kompaktiškesnę konstrukciją ir mažiau energijos. Kaip matote, aš sukūriau grandinę ant mažos duonos lentos, kuri pritvirtinta prie LCD modulio. Kitas skirtingas aspektas yra tas, kad „Nano“veikia 16 MHz dažniu, naudodamas išorinį kristalą, tačiau aš nusprendžiau naudoti įmontuotą 8 MHz osciliatorių „ATMega328“mikroschemai. Tai taupo dalis ir energiją.

2004 m. LCD jungiasi prie „Arduino“taip pat, kaip ir 1602 LCD. Įdomus skirtumas yra rodomų vietų adresavimas. Akivaizdu, kad yra skirtumas, nes yra keturios eilutės, o ne dvi, tačiau 2004 m. Trečioji eilutė yra pirmosios eilutės pratęsimas, o ketvirtoji eilutė - antrosios eilutės pratęsimas. Kitaip tariant, jei turėtumėte bandomąją programą, kuri tiesiog išsiuntė simbolių eilutę į LCD, 21 -asis simbolis būtų rodomas trečiosios eilutės pradžioje, o 41 -as simbolis suvyniotų iki pirmosios eilutės pradžios. Aš naudoju šią charakteristiką programinėje įrangoje, kad efektyviai padvigubinčiau labirinto ilgį.

Aš nusprendžiau, kad mano versija būtų maitinama baterijomis, todėl naudojau įprastą 18650 ličio jonų, 3,6 voltų bateriją. Tam reikėjo pridėti mažą plokštę, kad būtų galima įkrauti USB, ir kitą mažą plokštę, kad akumuliatoriaus įtampa padidėtų iki 5 voltų LCD ir „ATMega“mikroschemai. Paveikslėliai rodo mano naudojamus modulius, tačiau taip pat yra „viskas viename“modulių, kurie atlieka abi funkcijas.

2 žingsnis: programinė įranga

Programinė įranga yra vienoda tiek „Nano“, tiek „ATMega328“mikroschemai. Vienintelis skirtumas yra programavimo metodas. Aš naudoju savo 1602 skystųjų kristalų programinės įrangos „barebones“versiją, ir šiame projekte yra sukurta LCD programinė įranga. Man reikėjo pridėti galimybių, kad būtų galima išspręsti papildomas 2004 m. Ekrano eilutes, taip pat pridėjau ekrano keitimo tvarką. Ekrano poslinkis suteikia „uolų“judėjimo efektą pro „laivą“.

Kaip minėta anksčiau, 1 ir 3 eilutės sudaro apskritimo eilę, o 2 ir 4 eilutės taip pat. Tai reiškia, kad po 20 pamainų 1 ir 3 eilutės keičiamos, o 2 ir 4 eilutės keičiamos. Po 40 pamainų linijos grįžta į pradinę padėtį. Dėl tokio elgesio, pasikeitus eilutėms, originalus 20 simbolių labirintas tampa visiškai kitoks. Tai padarė gyvenimą įdomų, kai bandžiau suformuoti labirintą. Pagaliau ką tik atidariau „Excel“skaičiuoklę, kad galėčiau nubrėžti kelią, nekeisdamas nuolatinės programinės įrangos. Čia pateikta programinė įranga turi dvi labirinto versijas (viena yra komentuojama), todėl galite pasirinkti, kurią norite, arba susikurti savo.

Iš pradžių norėjau, kad tai būtų pakankamai paprasta, kad jaunieji anūkai galėtų žaisti, bet taip pat norėjau, kad tai sukeltų papildomų iššūkių, jei jiems (ar kam nors kitam) tai pavyktų. Žaidimas prasideda pamainos greičiu, nustatytu 1 sekundę. Vidinis tikėjimo greitis yra 50 ms, tai reiškia, kad yra 20 intervalų, per kuriuos galima paspausti aukštyn/žemyn mygtukus. Tiesą sakant, paspaustas mygtukas sunaudoja 2 taškus, nes 50 ms intervalas naudojamas spaudai aptikti, o kitas 50 ms intervalas naudojamas laukti išleidimo. Naudojant numatytąjį labirintą, iki kitos pamainos reikia tris kartus paspausti tris kartus. Paprastas būdas padidinti žaidimo sunkumą yra sutrumpinti laiką tarp pamainų, todėl pora kodo eilučių tai daro didėjant rezultatui. Nustatyta, kad perjungimo dažnis paspartėja 50 ms kas 20 pamainų, o minimali - 500 ms. Šiuos parametrus lengva pakeisti.

Išskyrus poslinkio greičio keitimą, pagrindinė programinės įrangos logika yra perkelti „laivą“ir nustatyti, ar „laivas“susidūrė su „uola“. Šios funkcijos naudoja apibrėžtą „roko/erdvės“masyvą ir masyvą, kuris apibrėžia atminties vietas ekrane. Poslinkių skaičius atitinka LCD eilutės ilgį (0–19) ir yra naudojamas kaip šių masyvų rodyklė. Logiką šiek tiek apsunkina tai, kad eilutės keičiamos kas 20 pamainų. Panaši logika naudojama norint nustatyti „laivo“padėtį, kuri gali būti bet kurioje iš keturių linijų.

Kiekvieno žaidimo rezultatas yra tiesiog įvykusių pamainų skaičius ir aukštas rezultatas išsaugomas vidiniame mikrovaldiklio EEROM. EEPROM biblioteka naudojama skaityti ir rašyti į šią atmintį. Turimos procedūros leidžia vieno baito skaityti/rašyti ir skaityti/rašyti slankiojo kablelio reikšmes. Pirmoje EEROM vietoje saugoma 0xA5 reikšmė, rodanti, kad išsaugotas aukštas rezultatas. Jei ši vertė yra įjungus, tada skaitoma aukšto balo slankiojo kablelio vertė ir rodoma. Jei 0xA5 reikšmės nėra, iškviečiama tvarka inicijuoti aukštą rezultatą iki 1. Ta pati tvarka iškviečiama, jei norima iš naujo nustatyti aukštą balą. Aukštas balas grąžinamas į 1 vertę, laikant nuspaudus vieną iš aukštyn/žemyn mygtukų ir akimirksniu paspaudžiant atstatymo mygtuką.

3 žingsnis: Žaidimas

Žaidžia žaidimą
Žaidžia žaidimą
Žaidžia žaidimą
Žaidžia žaidimą

Įjungus maitinimą, rodomas dabartinis aukštas rezultatas. Kai rodomas aukštas rezultatas, rodomas „uolų“ir „laivo“labirintas, tada žaidimas prasideda po kelių sekundžių. „Laivui“atsitrenkus į „uolą“, prieš rodant žaidimo rezultatą, kelis kartus sumirksi pranešimas „CRASH AND BURN“. Jei pasiekiamas naujas aukštas rezultatas, rodomas ir šis pranešimas. Naujas žaidimas pradedamas paspaudus atstatymo mygtuką.

Rekomenduojamas: