Tartalomjegyzék:

Arduino Space Rocks Játék: 3 lépés
Arduino Space Rocks Játék: 3 lépés

Videó: Arduino Space Rocks Játék: 3 lépés

Videó: Arduino Space Rocks Játék: 3 lépés
Videó: Когда Контрнаступление Украины? (10 июня 2023) 2024, November
Anonim
Arduino Space Rocks játék
Arduino Space Rocks játék

Függetlenül attól, hogy számítógépen, telefonon, játékkonzolon vagy önálló dobozon játsszák, sok videojáték tartalmaz egy akadálykerülő elemet. Persze lehet, hogy kapnak pontokat a tokenek gyűjtéséért vagy az útvesztőben való eligazodásért, de biztos lehet benne, hogy valószínűleg van valami a játékban, amelynek egyetlen célja az, hogy megakadályozza ezt. Az első videojáték a Pong volt, de utána a legnépszerűbb játékok az olyan dolgok voltak, mint az „Asteroids” vagy a „Pac-Man”. Újabb variáció lenne a „Flappy Birds” egyszerű, de addiktív játéka.

Nemrég láttam, hogy valaki elkészítette a „Flappy Bird” egyszerű kétszintű változatát, amelyet egy közös 1602-es LCD-n játszottak le. Azt hittem, ez tetszeni fog az unokáknak, ezért úgy döntöttem, hogy a nulláról csinálom a saját változatomat. Az 1602 -es verziónak csak két szintje van, ezért úgy döntöttem, hogy egy 2004 -es LCD -t (20x4) használok, hogy kissé növeljem a játék nehézségét. Én is úgy döntöttem, hogy inkább az „aszteroidák” -hoz hasonlítom, hogy a játékos „hajót” vezessen az „űrsziklák” útvesztőjében. Még akkor is, ha nem érdekli a játék építése, előfordulhat, hogy vannak olyan elemei a szoftvernek, amelyeket saját projektjeiben használhat.

1. lépés: Hardver

Hardver
Hardver
Hardver
Hardver
Hardver
Hardver

A hardver nagyjából bármilyen Arduino verzióra épülhet. A prototípus elkészítését Nano segítségével végeztem, majd a kódot ATMega328 chipbe égettem. Ugyanaz a chip, amelyet a Nano -ban is használtak, de önmagában történő használata kompaktabb konstrukciót és kevesebb energiafogyasztást tesz lehetővé. Mint látható, az áramkört egy kis kenyérsütő táblára építettem, amely az LCD -modulon van. A másik szempont, hogy más, hogy a Nano 16 MHz-en működik külső kristály segítségével, de én úgy döntöttem, hogy az ATMega328 chiphez a beépített 8 MHz-es oszcillátort használom. Ez alkatrészeket és energiát takarít meg.

A 2004 -es LCD ugyanúgy kapcsolódik az Arduino -hoz, mint egy 1602 -es LCD. Érdekes különbség a megjelenítési helyek címzésében van. Nyilvánvaló, hogy van különbség, mert kettő helyett négy sor van, de 2004 -ben a harmadik sor az első sor, a negyedik pedig a második vonal kiterjesztése. Más szóval, ha lenne egy tesztprogramja, amely csak egy karakterláncot küldött ki az LCD -re, a 21. karakter megjelenik a harmadik sor elején, a 41. karakter pedig az első sor elejéig. Ezt a jellemzőt használom a szoftverben a labirintus hosszának hatékony megkétszerezésére.

Úgy döntöttem, hogy a verziómat akkumulátorral működtetem, ezért egy közös 18650 Li-ion, 3,6 voltos akkumulátort használtam. Ehhez egy kis táblát kellett hozzáadnom az USB újratöltéshez, és egy másik kis táblát, hogy az akkumulátor feszültségét 5 voltra emelje az LCD és az ATMega chip esetében. A képek az általam használt modulokat mutatják, de vannak all-in-one modulok, amelyek mindkét funkciót ellátják.

2. lépés: Szoftver

A szoftver ugyanaz mind a Nano, mind az ATMega328 chipnél. Az egyetlen különbség a programozási módszerben van. Az 1602 LCD szoftver saját barebones verzióját használom, és a projektben az LCD szoftver ezen alapul. Hozzá kellett adnom képességeket a 2004 -es kijelző további sorainak kezeléséhez, valamint rutinokat kellett hozzáadnom a kijelző eltolásához. A kijelző eltolása biztosítja a „sziklák” mozgási hatását a „hajó” mellett.

Amint azt korábban említettük, az 1. és a 3. sor kör alakú sort képez, a 2. és a 4. pedig szintén. Ez azt jelenti, hogy 20 műszak után az 1. és 3. sor felcserélődik, a 2. és 4. sor pedig felcserélődik. 40 váltás után a vonalak visszaálltak eredeti helyzetükbe. E viselkedés miatt az eredeti 20 karakterből álló labirintus teljesen más lesz, amikor sorokat cserélnek. Ez tette érdekessé az életet, amikor labirintust próbáltam kialakítani. Végül csak megnyitottam egy Excel táblázatot, hogy lerajzolhassam az utat anélkül, hogy folyamatosan változtatnom kellene a szoftveren. Az itt található szoftvernek két változata van a labirintusból (az egyik megjegyzésben van), így kiválaszthatja, hogy melyiket szeretné, vagy kitalálja a sajátját.

Eredetileg azt akartam, hogy ez elég egyszerű legyen ahhoz, hogy a fiatal unokák játszhassanak vele, de azt is szerettem volna, ha valami plusz kihívást jelentene, ha ők (vagy valaki más) túl jól értenek hozzá. A játék az 1 másodpercre beállított váltási sebességgel kezdődik. A belső tic arány 50 ms, ami azt jelenti, hogy 20 időközönként lehet lenyomni a fel/le gombokat. Valójában egy megnyomott gomb 2 ticset fogyaszt, mivel 50 ms intervallumot használnak a sajtó észlelésére, és további 50 ms intervallumot használnak a felszabadítás várására. Az alapértelmezett labirintus esetén a következő műszak előtt háromszor kell megnyomni. Az egyszerű módja annak, hogy növelje a játék nehézségét, ha lerövidíti a műszakok közötti időt, így néhány sor kód ezt teszi a pontszám növekedésével. A műszak sebessége 20 műszakonként 50 ms -ra gyorsul, a minimális sebesség pedig 500 ms. Könnyű megváltoztatni ezeket a paramétereket.

A váltási sebesség megváltoztatásán kívül a szoftver elsődleges logikája a „hajó” mozgatása, és annak megállapítása, hogy a „hajó” ütközött -e egy „sziklával”. Ezek a funkciók kihasználják a meghatározott „rock/space” tömböt, valamint azt a tömböt, amely meghatározza a kijelző memóriahelyeit. Az eltolásszám az LCD vonalhosszának felel meg (0-19), és indexként használják ezeket a tömböket. A logikát némileg bonyolítja az a tény, hogy a sorok cseréje 20 műszakonként számít. Hasonló logikával határozzák meg a „hajó” helyzetét, amely a négy vonal bármelyikén lehet.

Az egyes játékok pontszáma egyszerűen a bekövetkezett műszakok számát jelenti, és a magas pontszámot elmenti a mikrokontroller belső EEROM -jába. Az EEPROM könyvtár az olvasásra és írásra szolgál erre a memóriára. A rendelkezésre álló rutinok lehetővé teszik a lebegőpontos értékek egyetlen bájtos olvasását/írását és olvasását/írását. 0xA5 értéket tárol az első EEROM helyen, jelezve, hogy magas pontszámot mentett. Ha ez az érték a bekapcsoláskor jelen van, akkor a magas pontszám lebegőpontos értéke beolvasásra és megjelenítésre kerül. Ha a 0xA5 érték nincs jelen, akkor egy rutint hívnak a magas pontszám 1 -es inicializálására. Ugyanezt a rutint hívják meg, ha a magas pontszám visszaállítását kívánják. A magas pontszámot visszaállítja 1 értékre, ha lenyomva tartja az egyik fel/le gombot, majd egy pillanatra megnyomja a reset gombot.

3. lépés: Játék

Játék
Játék
Játék
Játék

Áramellátáskor az aktuális magas pontszám jelenik meg. A magas pontszám megjelenítése után a „sziklák” és a „hajó” labirintusa jelenik meg, majd a játék néhány másodperccel később kezdődik. Amikor a „hajó” eléri a „sziklát”, a „CRASH AND BURN” üzenet néhányszor felvillan, mielőtt megjeleníti a játék pontszámát. Ha új magas pontszámot kap, akkor ez az üzenet is megjelenik. Új játék indul a reset gomb megnyomásával.

Ajánlott: