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, Červenec
Anonim
Hra Arduino Space Rocks
Hra Arduino Space Rocks

Ať už se hrají na počítači, na telefonu, na herní konzoli nebo na samostatném boxu, mnoho videoher obsahuje prvek vyhýbání se překážkám. Jistě, za sbírání žetonů nebo nalezení cesty bludištěm mohou být uděleny body, ale buďte si jisti, že ve hře je pravděpodobně něco, jehož jediným účelem je zabránit vám v tom. První videohrou byl Pong, ale poté byly nejoblíbenějšími hrami věci jako „Asteroids“nebo „Pac-Man“. Novější variantou by byla jednoduchá, ale návyková hra „Flappy Birds“.

Nedávno jsem viděl, že někdo vytvořil jednoduchou dvouúrovňovou verzi „Flappy Bird“, která se hrála na běžném 1602 LCD. Myslel jsem, že to bude něco, co by se vnoučatům mohlo líbit, a tak jsem se rozhodl udělat svou vlastní variaci od nuly. Verze 1602 má pouze dvě úrovně, takže jsem se rozhodl použít LCD 2004 (20x4) místo toho, abych mírně zvýšil obtížnost hry. Také jsem se rozhodl, aby to bylo více jako „asteroidy“tím, že hráč provede „loď“bludištěm „vesmírných skal“. I když nemáte zájem stavět hru, mohou existovat některé prvky softwaru, které můžete použít v jednom ze svých vlastních projektů.

Krok 1: Hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

Hardware může být založen na téměř jakékoli verzi Arduino. Prototypování jsem provedl pomocí Nano a poté vypálil kód na čip ATMega328. Je to stejný čip používaný v Nano, ale jeho použití umožňuje kompaktnější sestavení a menší spotřebu energie. Jak vidíte, obvod jsem postavil na malém prkénku, které propojuje LCD modul. Dalším aspektem, který se liší, je, že Nano běží na 16 MHz pomocí externího krystalu, ale rozhodl jsem se použít vestavěný 8 MHz oscilátor pro čip ATMega328. Šetří to díly a energii.

LCD 2004 se připojuje k Arduinu stejným způsobem jako LCD 1602. Zajímavý rozdíl je v adresování zobrazovacích míst. Očividně existuje rozdíl, protože místo dvou jsou čtyři řádky, ale v roce 2004 je třetí řádek prodloužením prvního řádku a čtvrtý řádek je prodloužením druhého řádku. Jinými slovy, pokud jste měli testovací program, který právě vyslal řetězec znaků na LCD, 21. znak by se zobrazil na začátku třetího řádku a 41. znak se zalomil zpět na začátek prvního řádku. Tuto vlastnost používám v softwaru k efektivnímu zdvojnásobení délky bludiště.

Rozhodl jsem se, že nechám svoji verzi napájet bateriemi, takže jsem použil běžnou 18650 Li-ion, 3,6voltovou baterii. To vyžadovalo, abych přidal malou desku umožňující nabíjení USB a další malou desku pro zvýšení napětí baterie na 5 voltů pro LCD a čip ATMega. Obrázky ukazují moduly, které jsem použil, ale existují také moduly typu vše v jednom, které plní obě funkce.

Krok 2: Software

Software je stejný pro čip Nano i ATMega328. Jediný rozdíl je v metodě programování. Používám vlastní barebones verzi softwaru 1602 LCD a software LCD v tomto projektu je na tom založen. Potřeboval jsem přidat možnosti pro řešení dalších řádků displeje z roku 2004 a také přidat rutiny pro posunutí displeje. Posun displeje poskytuje pohybový efekt „skal“za „lodí“.

Jak již bylo zmíněno dříve, řádky 1 a 3 tvoří kruhovou frontu a řádky 2 a 4 také. To znamená, že po 20 směnách se prohodí řádky 1 a 3 a prohodí řádky 2 a 4. Po 40 směnách jsou řádky zpět na svých původních pozicích. Kvůli tomuto chování se původní 20místné bludiště stane úplně jiným, když se prohodí řádky. Díky tomu byl život zajímavý, když jsem se pokusil vytvořit bludiště. Nakonec jsem právě otevřel tabulku aplikace Excel, abych mohl mapovat cestu, aniž bych musel neustále měnit software. Zde poskytovaný software má dvě verze bludiště (jedna je okomentována), takže si můžete vybrat, kterou chcete, nebo si vytvořit vlastní.

Původně jsem chtěl, aby to bylo natolik jednoduché, aby to mohly hrát mladé vnoučata, ale také jsem chtěl, aby to mělo nějakou extra výzvu, pokud se v tom (nebo někdo jiný) příliš zlepší. Hra začíná rychlostí posunu nastavenou na 1 sekundu. Interní tic rate je 50ms, což znamená, že existuje 20 intervalů, během kterých lze stisknout tlačítka nahoru/dolů. Ve skutečnosti spotřebuje stisknuté tlačítko 2 tiky, protože k detekci stisknutí se používá 50ms interval a k čekání na uvolnění se používá další 50ms interval. Ve výchozím bludišti jsou maximální počet potřebných lisů před další směnou tři. Jednoduchý způsob, jak zvýšit obtížnost hry, je zkrátit dobu mezi směnami, takže pár řádků kódu to udělá se zvýšením skóre. Rychlost posunu je nastavena na zrychlení o 50 ms každých 20 směn, přičemž minimální rychlost je omezena na 500 ms. Změnit tyto parametry je snadné.

Kromě změny rychlosti posunu je primární logikou softwaru pohyb „lodi“a určení, zda se „loď“srazila s „skálou“. Tyto funkce využívají výhody definovaného pole „rock/space“a také pole, které definuje umístění paměti na displeji. Počet posunutí odpovídá délce řádku LCD (0-19) a používá se jako index do těchto polí. Logiku poněkud komplikuje fakt, že se řádky prohodí každých 20 směn. Podobná logika se používá k určení polohy „lodi“, která může být na kterémkoli ze čtyř řádků.

Skóre pro každou hru je jednoduše počet posunů, ke kterým došlo, a nejvyšší skóre se uloží do vnitřní EEROM mikrokontroléru. Knihovna EEPROM slouží k čtení a zápisu do této paměti. Dostupné rutiny umožňují čtení/zápis jednobajtových hodnot a čtení/zápis hodnot s plovoucí desetinnou čárkou. Na prvním místě EEROM je uložena hodnota 0xA5, která označuje, že bylo uloženo vysoké skóre. Pokud je tato hodnota přítomna při zapnutí, přečte se a zobrazí se hodnota s plovoucí desetinnou čárkou pro nejvyšší skóre. Pokud hodnota 0xA5 není k dispozici, je volána rutina pro inicializaci nejvyššího skóre na hodnotu 1. Stejná rutina se nazývá, pokud je požadováno resetování vysokého skóre. Nejvyšší skóre se nastaví zpět na hodnotu 1 podržením jednoho z tlačítek nahoru/dolů a následným stisknutím tlačítka reset.

Krok 3: Hraní hry

Hraní hry
Hraní hry
Hraní hry
Hraní hry

Když je připojeno napájení, zobrazí se aktuální nejvyšší skóre. Poté, co se zobrazí nejvyšší skóre, zobrazí se bludiště „skal“a „loď“, poté hra začne o několik sekund později. Když „loď“narazí na „kámen“, několikrát zabliká zpráva „CRASH AND BURN“, než se zobrazí skóre hry. Pokud je vytvořeno nové nejvyšší skóre, zobrazí se také tato zpráva. Nová hra se spustí stisknutím tlačítka reset.

Doporučuje: