Obsah:

Hra Arduino Space Rocks: 3 kroky
Hra Arduino Space Rocks: 3 kroky

Video: Hra Arduino Space Rocks: 3 kroky

Video: Hra Arduino Space Rocks: 3 kroky
Video: Cosplay by b.tech final year at IIT Kharagpur 2024, November
Anonim
Hra Arduino Space Rocks
Hra Arduino Space Rocks

Bez ohľadu na to, či sa hrajú na počítači, telefóne, hernej konzole alebo v samostatnom boxe, mnohé videohry obsahujú prvok vyhýbania sa prekážkam. Iste, body môžu byť udelené za zbieranie žetónov alebo nájdenie cesty bludiskom, ale buďte si istí, že v hre je pravdepodobne niečo, čo má za cieľ zabrániť vám v tom. Prvá videohra bola Pong, ale potom boli najobľúbenejšími hrami ako „Asteroids“alebo „Pac-Man“. Novšou variáciou by bola jednoduchá, ale návyková hra „Flappy Birds“.

Nedávno som videl, že niekto vytvoril jednoduchú dvojúrovňovú verziu hry „Flappy Bird“, ktorá sa hrala na bežnom displeji LCD 1602. Myslel som si, že to bude niečo, čo by sa vnúčatám mohlo páčiť, a tak som sa rozhodol urobiť vlastnú variáciu od začiatku. Verzia 1602 má iba dve úrovne, takže som sa namiesto toho rozhodol použiť LCD 2004 (20x4) z roku 2004, aby som mierne zvýšil obtiažnosť hry. Tiež som sa rozhodol urobiť to viac ako „asteroidy“tým, že hráč prevedie „loď“bludiskom „vesmírnych skál“. Aj keď nemáte záujem stavať hru, môžu existovať niektoré prvky softvéru, ktoré môžete použiť v jednom z vašich vlastných projektov.

Krok 1: Hardvér

Hardvér
Hardvér
Hardvér
Hardvér
Hardvér
Hardvér

Hardvér môže byť založený na takmer akejkoľvek verzii Arduino. Urobil som prototyp pomocou Nano a potom som kód napálil na čip ATMega328. Je to ten istý čip používaný v Nano, ale jeho použitie umožňuje kompaktnejšie zostavenie a nižšiu spotrebu energie. Ako vidíte, obvod som postavil na malom breadboarde, ktorý sa pripája na LCD modul. Ďalším aspektom, ktorý sa líši, je to, že Nano beží na 16 MHz pomocou externého kryštálu, ale rozhodol som sa použiť vstavaný 8 MHz oscilátor pre čip ATMega328. To šetrí diely a energiu.

LCD displej z roku 2004 je prepojený s Arduino rovnako ako 1602 LCD. Zaujímavý rozdiel je v adresovaní miest zobrazenia. Je zrejmé, že existuje rozdiel, pretože namiesto dvoch sú štyri riadky, ale v roku 2004 je tretí riadok predĺžením prvého riadku a štvrtý riadok je predĺžením druhého riadku. Inými slovami, ak ste mali testovací program, ktorý práve odoslal reťazec znakov na LCD, 21. znak by sa zobrazil na začiatku tretieho riadka a 41. znak by sa zalomil späť na začiatok prvého riadka. Túto charakteristiku používam v softvéri na efektívne zdvojnásobenie dĺžky bludiska.

Rozhodol som sa, že moju verziu budem napájať batériou, takže som použil bežnú lítium-iónovú batériu 18650, 3,6 voltov. To si vyžiadalo, aby som pridal malú dosku, ktorá umožní nabíjanie cez USB, a ďalšiu malú dosku na zvýšenie napätia batérie na 5 voltov pre LCD a čip ATMega. Obrázky ukazujú moduly, ktoré som použil, ale existujú aj moduly typu všetko v jednom, ktoré vykonávajú obe funkcie.

Krok 2: Softvér

Softvér je rovnaký pre čip Nano aj ATMega328. Jediný rozdiel je v metóde programovania. Používam svoju vlastnú barebones verziu softvéru 1602 LCD a softvér LCD v tomto projekte je na tom založený. Potreboval som pridať možnosti na riešenie ďalších riadkov displeja z roku 2004 a tiež pridať rutiny na posúvanie displeja. Posun displeja poskytuje pohybový efekt „skál“za „loď“.

Ako už bolo spomenuté, riadky 1 a 3 tvoria kruhový front a riadky 2 a 4 tiež. To znamená, že po 20 smenách sa prehodia riadky 1 a 3 a riadky 2 a 4. Po 40 smenách sa čiary vrátia do svojich pôvodných polôh. Vďaka tomuto správaniu sa pôvodné 20-znakové bludisko stane úplne iným, keď sa čiary vymenia. Vďaka tomu bol život zaujímavý, keď som sa pokúsil vytvoriť bludisko. Nakoniec som práve otvoril tabuľku programu Excel, aby som mohol zmapovať cestu bez toho, aby som musel neustále meniť softvér. Tu poskytovaný softvér má dve verzie bludiska (jedna je komentovaná), takže si môžete vybrať, ktorú chcete, alebo si vytvoriť vlastnú.

Pôvodne som chcel, aby to bolo také jednoduché, že by to mohli hrať mladé vnúčatá, ale tiež som chcel, aby to malo nejakú extra výzvu, ak sa v tom (alebo niekto iný) príliš zlepší. Hra sa začína rýchlosťou posunu nastavenou na 1 sekundu. Interná frekvencia tikov je 50 ms, čo znamená, že existuje 20 intervalov, počas ktorých je možné stlačiť tlačidlá hore/dole. V skutočnosti stlačené tlačidlo spotrebuje 2 tiky, pretože na detekciu stlačenia sa používa 50 ms interval a na čakanie na uvoľnenie sa používa ďalší 50 ms interval. V predvolenom bludisku sú maximálny počet stlačení požadovaný pred ďalšou zmenou tri. Jednoduchý spôsob, ako zvýšiť obtiažnosť hry, je skrátiť čas medzi zmenami, takže pár riadkov kódu to robí iba so zvyšovaním skóre. Rýchlosť posunu je nastavená tak, aby sa zrýchľovala o 50 ms každých 20 zmien, pričom minimálna rýchlosť je obmedzená na 500 ms. Tieto parametre je ľahké zmeniť.

Okrem zmeny rýchlosti posunu je primárnou logikou softvéru pohyb „lode“a určenie, či „loď“narazila do „skaly“. Tieto funkcie využívajú definované pole „rock/space“a tiež pole, ktoré definuje miesta pamäte na displeji. Počet posunov zodpovedá dĺžke riadka LCD (0-19) a používa sa ako index do týchto polí. Logiku trochu komplikuje skutočnosť, že riadky sa prehodia každých 20 zmien. Podobná logika sa používa na určenie polohy „lode“, ktorá môže byť na ktoromkoľvek zo štyroch riadkov.

Skóre pre každú hru je jednoducho súčet počtu posunov, ku ktorým došlo a najvyššie skóre sa uloží do vnútornej EEROM mikrokontroléra. Na čítanie a zápis do tejto pamäte sa používa knižnica EEPROM. Dostupné rutiny umožňujú jednobajtové čítanie/zápis a čítanie/zápis hodnôt s pohyblivou rádovou čiarkou. Na prvom mieste EEROM je uložená hodnota 0xA5, ktorá označuje, že bolo uložené vysoké skóre. Ak je táto hodnota prítomná pri zapnutí, načíta sa a zobrazí sa hodnota s pohyblivou rádovou čiarkou pre najvyššie skóre. Ak nie je prítomná hodnota 0xA5, zavolá sa rutina na inicializáciu najvyššieho skóre na hodnotu 1. Rovnaká rutina sa vyvolá, ak je požadované vynulovanie vysokého skóre. Vysoké skóre sa nastaví späť na hodnotu 1 podržaním jedného z tlačidiel hore/dole a následným stlačením tlačidla reset.

Krok 3: Hranie hry

Hranie hry
Hranie hry
Hranie hry
Hranie hry

Po zapnutí napájania sa zobrazí aktuálne najvyššie skóre. Po zobrazení vysokého skóre sa zobrazí bludisko „skál“a „lode“a hra sa začne o niekoľko sekúnd neskôr. Keď „loď“narazí na „kameň“, pred zobrazením skóre hry niekoľkokrát zabliká správa „PORUŠENIE A PÁLENIE“. Ak sa dosiahne nové najvyššie skóre, zobrazí sa táto správa. Nová hra sa spustí stlačením tlačidla reset.

Odporúča: