Sisukord:

Arduino Space Rocks Mäng: 3 sammu
Arduino Space Rocks Mäng: 3 sammu

Video: Arduino Space Rocks Mäng: 3 sammu

Video: Arduino Space Rocks Mäng: 3 sammu
Video: Только не говори никому.. Как легко можно восстановить жидкокристаллический экран.. 2024, Juuli
Anonim
Arduino Space Rocks mäng
Arduino Space Rocks mäng

Ükskõik, kas neid mängitakse arvutis, telefonis, mängukonsoolil või eraldiseisvas kastis, sisaldavad paljud videomängud takistuste vältimise elementi. Muidugi võib märkide kogumise või labürindi kaudu leidmise eest punkte saada, kuid võite olla kindel, et mängus on tõenäoliselt midagi, mille ainus eesmärk on takistada teil seda tegemast. Esimene videomäng oli Pong, kuid pärast seda olid kõige populaarsemad mängud sellised asjad nagu “Asteroidid” või “Pac-Man”. Uuem variatsioon oleks lihtne, kuid sõltuvust tekitav mäng "Flappy Birds".

Hiljuti nägin, et keegi oli teinud lihtsa kahetasandilise versiooni “Flappy Birdist”, mida mängiti tavalisel 1602 LCD-ekraanil. Arvasin, et see võiks lapselastele meeldida, nii et otsustasin nullist oma variatsiooni teha. 1602 versioonil on ainult kaks taset, nii et otsustasin selle asemel kasutada 2004. aasta LCD -ekraani (20x4), et pisut suurendada mängimisraskusi. Samuti otsustasin muuta selle sarnasemaks "asteroididega", lastes mängijal "laeva" läbi "kosmosekivimite" labürindi suunata. Isegi kui te pole mängu ehitamisest huvitatud, võib tarkvara mõningaid elemente kasutada ühes oma projektis.

Samm: riistvara

Riistvara
Riistvara
Riistvara
Riistvara
Riistvara
Riistvara

Riistvara võib põhineda peaaegu igal Arduino versioonil. Tegin prototüüpimise Nano abil ja põletasin seejärel koodi ATMega328 kiibiks. See on sama kiip, mida kasutatakse nanos, kuid selle kasutamine iseenesest võimaldab kompaktsemat ehitust ja väiksemat energiatarbimist. Nagu näete, ehitasin vooluringi väikesele leivaplaadile, mis on LCD -moodulil tagasi. Teine aspekt, mis erineb, on see, et Nano töötab välise kristalli abil sagedusel 16 MHz, kuid ma otsustasin ATMega328 kiibi jaoks kasutada sisseehitatud 8 MHz ostsillaatorit. See säästab osi ja energiat.

2004. aasta LCD liidesed Arduinoga samamoodi nagu 1602 LCD. Huvitav erinevus on kuvamiskohtade aadressides. Ilmselgelt on erinevus, sest kahe rea asemel on neli rida, kuid 2004. aastal on kolmas rida esimese rea pikendus ja neljas rida teise rea pikendus. Teisisõnu, kui teil oleks testprogramm, mis lihtsalt saatis LCD -le tähemärkide rea, ilmuks 21. märk kolmanda rea alguses ja 41. märk liigub tagasi esimese rea algusesse. Ma kasutan seda omadust tarkvaras, et tõhusalt kahekordistada labürindi pikkust.

Otsustasin muuta oma versiooni aku toiteks, nii et kasutasin tavalist 18650 liitium-ioon, 3,6-voldist akut. See nõudis, et lisan väikese tahvli, mis võimaldab USB -laadimist, ja teise väikese tahvli, et tõsta aku ja pinge LCD -le ja ATMega kiibile 5 volti. Piltidel on näha minu kasutatud moodulid, kuid on ka kõik-ühes mooduleid, mis täidavad mõlemat funktsiooni.

Samm 2: Tarkvara

Tarkvara on sama nii Nano kui ka ATMega328 kiibi puhul. Ainus erinevus on programmeerimismeetodis. Ma kasutan oma 1602 LCD tarkvara paljaste versioonide versiooni ja selle projekti LCD -tarkvara põhineb sellel. Ma pidin lisama võimalusi 2004. aasta ekraani lisaridade käsitlemiseks ja lisasin ka rutiini ekraani nihutamiseks. Ekraani nihutamine tagab kivide liikumisefekti laevast mööda.

Nagu varem mainitud, moodustavad read 1 ja 3 ümmarguse järjekorra ning read 2 ja 4 samuti. See tähendab, et pärast 20 vahetust vahetatakse read 1 ja 3 ning read 2 ja 4. Pärast 40 vahetust on liinid tagasi oma algsesse asendisse. Selle käitumise tõttu muutub algne 20-tähemärgiline labürint ridade vahetamisel täiesti teistsuguseks. See tegi elu huvitavaks, kui proovisin labürinti moodustada. Lõpuks avasin lihtsalt Exceli arvutustabeli, et saaksin tee kaardistada ilma tarkvara pidevalt muutmata. Siin pakutaval tarkvaral on labürindist kaks versiooni (üks on kommenteeritud), nii et saate valida, millist soovite või koostada oma.

Algselt tahtsin, et see oleks piisavalt lihtne, et noored lapselapsed saaksid seda mängida, kuid tahtsin ka, et sellel oleks lisaväljakutseid, kui neil (või kellelgi teisel) oleks see liiga hea. Mäng algab nihke määraga 1 sekund. Sisemine tic määr on 50 ms, mis tähendab, et on 20 intervalli, mille jooksul saab üles/alla nuppe vajutada. Tegelikkuses kulutab vajutatud nupp 2 punkti, kuna pressi tuvastamiseks kasutatakse 50 ms intervalli ja veel 50 ms intervalli vabastamise ootamiseks. Vaikimisi labürindis on enne järgmist vahetust nõutav maksimaalne vajutuste arv kolm. Lihtne viis mängu raskuste suurendamiseks on lühendada vahetuste vahelist aega, nii et paar koodirida teevad seda sama, kui skoor suureneb. Vahetuskiirus on seatud kiirendama 50 ms iga 20 vahetuse järel, minimaalne kiirus on 500 ms. Neid parameetreid on lihtne muuta.

Peale nihke muutmise on tarkvara esmane loogika „laeva“liigutamine ja selle kindlakstegemine, kas „laev“on kiviga kokku põrganud. Need funktsioonid kasutavad ära määratletud „rock/space” massiivi ja ka massiivi, mis määrab mälu asukohad ekraanil. Nihkearv vastab vedelkristallekraani rea pikkusele (0–19) ja seda kasutatakse nende massiivide indeksina. Loogikat teeb mõnevõrra keeruliseks asjaolu, et read vahetatakse iga 20 vahetuse järel. Sarnast loogikat kasutatakse laeva asukoha määramiseks, mis võib asuda mis tahes neljal real.

Iga mängu tulemus on lihtsalt toimunud vahetuste arv ja kõrge tulemus salvestatakse mikrokontrolleri sisemisse EEROM -i. Selle mälu lugemiseks ja kirjutamiseks kasutatakse EEPROMi raamatukogu. Saadaval olevad rutiinid võimaldavad ujuva punkti väärtuste lugemist/kirjutamist ja lugemist/kirjutamist ühe baidiga. Esimesse EEROM -i asukohta salvestatakse väärtus 0xA5, mis näitab, et kõrge tulemus on salvestatud. Kui see väärtus on sisselülitamisel olemas, loetakse ja kuvatakse kõrge skoori ujukoma väärtus. Kui väärtust 0xA5 pole, kutsutakse üles rutiin, mis lähtestab kõrge skoori väärtuseks 1. Sama rutiin kutsutakse esile, kui soovitakse kõrge tulemuse lähtestamist. Kõrge skoor taastatakse väärtusele 1, hoides all ühte üles/alla nuppu ja vajutades seejärel hetkeks lähtestamisnuppu.

3. samm: mängu mängimine

Mängu mängimine
Mängu mängimine
Mängu mängimine
Mängu mängimine

Toite sisselülitamisel kuvatakse praegune rekord. Pärast rekordite kuvamist kuvatakse “kivide” ja “laeva” labürint ning mäng algab paar sekundit hiljem. Kui “laev” tabab “kivi”, vilgub paar korda enne mängu tulemuse kuvamist teade “CRASH AND BURN”. Kui tehakse uus rekord, kuvatakse ka see teade. Uue mängu alustamiseks vajutage lähtestusnuppu.

Soovitan: