Sisällysluettelo:

Arduino Space Rocks Peli: 3 vaihetta
Arduino Space Rocks Peli: 3 vaihetta

Video: Arduino Space Rocks Peli: 3 vaihetta

Video: Arduino Space Rocks Peli: 3 vaihetta
Video: This helmet is so real! Megatron! #transformers #megatron #unboxing #optimusprime #robot 2024, Heinäkuu
Anonim
Peli Arduino Space Rocks
Peli Arduino Space Rocks

Pelataanpa niitä tietokoneella, puhelimella, pelikonsolilla tai erillisellä laatikolla, monet videopelit sisältävät esteen välttämisen elementin. Toki, saatat saada pisteitä rahakkeiden keräämisestä tai tien löytämisestä sokkelon läpi, mutta voit olla varma, että pelissä on luultavasti jotain, jonka ainoa tarkoitus on estää sinua tekemästä sitä. Ensimmäinen videopeli oli Pong, mutta sen jälkeen suosituimpia pelejä olivat esimerkiksi "Asteroids" tai "Pac-Man". Uudempi muunnelma olisi yksinkertainen mutta koukuttava peli "Flappy Birds".

Äskettäin näin, että joku oli tehnyt yksinkertaisen kaksitasoisen version "Flappy Birdistä", jota toistettiin tavallisella 1602-nestekidenäytöllä. Ajattelin, että tämä olisi jotain sellaista, mitä lapsenlapset saattavat pitää, joten päätin tehdä oman muunnelmani alusta alkaen. 1602 -versiossa on vain kaksi tasoa, joten päätin käyttää sen sijaan vuoden 2004 nestekidenäyttöä (20x4) pelin vaikeuden lisäämiseksi. Päätin myös tehdä siitä enemmän "asteroideja" antamalla pelaajan ohjata "laivan" "avaruuskivien" labyrintin läpi. Vaikka et olisikaan kiinnostunut pelin rakentamisesta, ohjelmistossa voi olla joitain elementtejä, joita voit käyttää yhdessä omassa projektissasi.

Vaihe 1: Laitteisto

Laitteisto
Laitteisto
Laitteisto
Laitteisto
Laitteisto
Laitteisto

Laitteisto voi perustua melkein mihin tahansa Arduinon versioon. Tein prototyypin käyttämällä nanoa ja poltin sitten koodin ATMega328 -siruun. Tämä on sama siru kuin nanossa, mutta sen käyttö yksinään mahdollistaa kompaktimman rakenteen ja pienemmän virrankulutuksen. Kuten näette, rakensin piirin pienelle leipälevylle, joka on LCD -moduulin takana. Toinen näkökohta, joka on erilainen, on se, että Nano toimii 16 MHz: llä ulkoista kideä käyttäen, mutta päätin käyttää sisäänrakennettua 8 MHz: n oskillaattoria ATMega328-sirulle. Se säästää osia ja virtaa.

Vuoden 2004 LCD liitetään Arduinoon samalla tavalla kuin 1602 LCD. Mielenkiintoinen ero on näyttöpaikkojen osoitteissa. On selvää, että ero on olemassa, koska linjoja on neljä kahden sijasta, mutta vuonna 2004 kolmas rivi on ensimmäisen rivin jatke ja neljäs rivi toisen linjan jatke. Toisin sanoen, jos sinulla olisi testiohjelma, joka lähetti juuri merkkijonon nestekidenäyttöön, 21. merkki ilmestyisi kolmannen rivin alkuun ja 41. merkki kääriytyy ensimmäisen rivin alkuun. Käytän tätä ominaisuutta ohjelmistossa kaksinkertaistaaksesi sokkelon pituuden tehokkaasti.

Päätin tehdä versiostani akkukäyttöisen, joten käytin tavallista 18650 litiumioniakkua, 3,6 volttia. Tämä edellytti, että lisäsin pienen kortin USB -latauksen mahdollistamiseksi ja toisen pienen kortin, joka nostaa akun jännitteen 5 volttiin nestekidenäytössä ja ATMega -sirussa. Kuvissa näkyy käyttämäni moduulit, mutta on myös all-in-one-moduuleja, jotka suorittavat molemmat toiminnot.

Vaihe 2: Ohjelmisto

Ohjelmisto on sama sekä Nano- että ATMega328 -sirulle. Ainoa ero on ohjelmointimenetelmässä. Käytän omaa barebones -versiota 1602 LCD -ohjelmistosta ja tämän projektin LCD -ohjelmisto perustuu siihen. Minun oli lisättävä ominaisuuksia vuoden 2004 näytön ylimääräisten rivien käsittelemiseksi ja myös rutiineja näytön siirtämiseksi. Näytön siirto tarjoaa "kivien" liikkeen vaikutuksen "aluksen" ohi.

Kuten aiemmin mainittiin, rivit 1 ja 3 muodostavat pyöreän jonon ja linjat 2 ja 4 muodostavat samoin. Tämä tarkoittaa, että 20 vuoron jälkeen rivit 1 ja 3 vaihdetaan ja rivit 2 ja 4 vaihdetaan. 40 vuoron jälkeen linjat ovat takaisin alkuperäisiin paikkoihinsa. Tämän käyttäytymisen vuoksi alkuperäinen 20 merkin sokkelo muuttuu täysin erilaiseksi, kun rivit vaihdetaan. Se teki elämästä mielenkiintoisen, kun yritin muodostaa sokkelon. Avasin vihdoin Excel -laskentataulukon, jotta voisin kartoittaa polun ilman, että tarvitsen jatkuvasti muuttaa ohjelmistoa. Tässä toimitetussa ohjelmistossa on kaksi sokkeloversiota (yksi kommentoidaan), joten voit valita haluamasi tai tehdä oman.

Alunperin halusin tämän olevan tarpeeksi yksinkertaista, jotta nuoret lapsenlapset voisivat pelata sitä, mutta halusin myös, että sillä olisi lisähaastetta, jos he (tai joku muu) saisivat sen liian hyvin. Peli alkaa siirtonopeudella, joka on asetettu 1 sekunniksi. Sisäinen tikinopeus on 50 ms, mikä tarkoittaa, että on 20 aikaväliä, joiden aikana ylös/alas -painikkeita voidaan painaa. Itse asiassa painettu painike kuluttaa 2 tikkiä, koska 50 ms: n välein käytetään painalluksen havaitsemiseen ja toista 50 ms: n aikaväliä käytetään vapautuksen odottamiseen. Oletuslaboratoriossa suurin mahdollinen painallusten määrä ennen seuraavaa vuoroa on kolme. Yksinkertainen tapa lisätä pelin vaikeutta on lyhentää vuorojen välistä aikaa, joten pari koodiriviä tekee juuri niin pisteiden kasvaessa. Siirtonopeus on asetettu nopeutumaan 50 ms: lla 20 vuoron välein, ja vähimmäisnopeus on rajoitettu 500 ms: iin. Näitä parametreja on helppo muuttaa.

Ohjelmiston ensisijainen logiikka on siirtonopeuden muuttamisen lisäksi "laivan" siirtäminen ja sen selvittäminen, onko "alus" törmännyt "kallioon". Nämä toiminnot hyödyntävät määritettyä "rock/space" -ryhmää ja myös taulukkoa, joka määrittää muistipaikat näytössä. Siirtymien lukumäärä vastaa nestekidenäytön rivin pituutta (0-19) ja sitä käytetään indeksinä näihin matriiseihin. Logiikkaa vaikeuttaa hieman se, että linjat vaihdetaan 20 vuoron välein. Samanlaista logiikkaa käytetään määrittämään "aluksen" sijainti, joka voi olla millä tahansa neljästä linjasta.

Kunkin pelin pisteet ovat yksinkertaisesti tapahtuneiden vuorojen lukumäärä ja korkeat pisteet tallennetaan mikrokontrollerin sisäiseen EEROMiin. EEPROM -kirjastoa käytetään lukemaan ja kirjoittamaan tähän muistiin. Käytettävissä olevat rutiinit mahdollistavat yhden tavun lukemisen/kirjoittamisen ja liukulukuarvojen lukemisen/kirjoittamisen. Ensimmäiseen EEROM -paikkaan tallennetaan arvo 0xA5, joka osoittaa, että korkeat pisteet on tallennettu. Jos tämä arvo on päällä käynnistettäessä, korkean pistemäärän liukulukuarvo luetaan ja näytetään. Jos 0xA5 -arvoa ei ole, kutsutaan rutiini alustamaan huippupisteet arvoon 1. Sama rutiini kutsutaan, jos halutaan nollata korkea pisteet. Korkeat pisteet palautetaan arvoon 1 pitämällä yhtä ylös/alas -painikkeita painettuna ja painamalla sitten hetkeksi nollauspainiketta.

Vaihe 3: Pelin pelaaminen

Pelin pelaaminen
Pelin pelaaminen
Pelin pelaaminen
Pelin pelaaminen

Kun virta kytketään päälle, nykyinen huipputulos näytetään. Kun korkeat pisteet on näytetty, “kivien” ja”laivan” sokkelo näytetään, ja peli alkaa muutamaa sekuntia myöhemmin. Kun “laiva” osuu”kallioon”, viesti”CRASH AND BURN” vilkkuu muutaman kerran ennen pelin pisteytyksen näyttämistä. Jos uusi ennätys tehdään, myös tämä viesti näytetään. Uusi peli käynnistetään painamalla nollauspainiketta.

Suositeltava: