INHOUDSOPGAWE:

Arduino Space Rocks Game: 3 stappe
Arduino Space Rocks Game: 3 stappe

Video: Arduino Space Rocks Game: 3 stappe

Video: Arduino Space Rocks Game: 3 stappe
Video: Learn Arduino in 30 Minutes: Examples and projects 2024, Julie
Anonim
Arduino Space Rocks Game
Arduino Space Rocks Game

Of dit nou op 'n rekenaar, op 'n telefoon, op 'n spelkonsole of op 'n losstaande boks gespeel word, baie videospeletjies bevat 'n element van hindernisvermyding. Sekerlik, daar kan punte toegeken word vir die versameling van tokens of om deur 'n doolhof te kom, maar wees verseker dat daar waarskynlik iets in die spel is wat die enigste doel is om te verhoed dat u dit doen. Die eerste videospeletjie was Pong, maar daarna was die gewildste speletjies dinge soos "Asteroids" of "Pac-Man". 'N Meer onlangse variasie sou die eenvoudige, maar verslawende spel van "Flappy Birds" wees.

Onlangs het ek gesien dat iemand 'n eenvoudige twee-vlak weergawe van "Flappy Bird" gemaak het wat op 'n gewone 1602 LCD gespeel is. Ek het gedink dit sou iets wees wat die kleinkinders sou wou hê, en ek het besluit om my eie variasie van nuuts af te doen. Die 1602 -weergawe het slegs twee vlakke, so ek het besluit om 'n 2004 LCD (20x4) te gebruik om die moeilikheid van speel effens te verhoog. Ek het ook gekies om dit meer soos 'Asteroïdes' te maak deur die speler 'n 'skip' deur 'n doolhof van 'ruimte -gesteentes' te laat lei. Selfs as u nie daarin belangstel om die spel te bou nie, is daar moontlik 'n paar elemente van die sagteware wat u in een van u eie projekte kan gebruik.

Stap 1: Hardeware

Hardeware
Hardeware
Hardeware
Hardeware
Hardeware
Hardeware

Die hardeware kan op feitlik enige Arduino -weergawe gebaseer wees. Ek het die prototipe gemaak met 'n Nano en daarna die kode in 'n ATMega328 -chip verbrand. Dit is dieselfde chip wat in die Nano gebruik word, maar as u dit op sigself gebruik, kan u 'n meer kompakte konstruksie en minder kragverbruik kry. Soos u kan sien, het ek die stroombaan op 'n klein broodbord gebou wat op die LCD -module spoel. Die ander aspek wat anders is, is dat die Nano met 'n eksterne kristal op 16-MHz werk, maar ek het gekies om die ingeboude 8-MHz-ossillator vir die ATMega328-chip te gebruik. Dit bespaar dele en krag.

Die 2004 LCD koppelvlak met die Arduino op dieselfde manier as 'n 1602 LCD. 'N Interessante verskil is in die aanspreek van die vertoonplekke. Daar is duidelik 'n verskil, want daar is vier reëls in plaas van twee, maar in 2004 is die derde reël 'n verlenging van die eerste reël en die vierde reël 'n verlenging van die tweede reël. Met ander woorde, as u 'n toetsprogram gehad het wat pas 'n string karakters na die LCD gestuur het, verskyn die 21ste karakter aan die begin van die derde reël en die 41ste karakter draai terug na die begin van die eerste reël. Ek gebruik die kenmerk in die sagteware om die lengte van die doolhof effektief te verdubbel.

Ek het besluit om my weergawe-battery aan te dryf, en ek gebruik 'n gewone 18650 Li-ion, 3.6-volt battery. Dit het vereis dat ek 'n klein bordjie byvoeg om USB te herlaai en nog 'n klein bord om die batteryspanning tot 5 volt vir die LCD en die ATMega -chip te verhoog. Die foto's toon die modules wat ek gebruik het, maar daar is ook alles-in-een modules wat albei funksies verrig.

Stap 2: sagteware

Die sagteware is dieselfde vir beide die Nano- en die ATMega328 -chip. Die enigste verskil is in die programmeermetode. Ek gebruik my eie barebones weergawe van 1602 LCD sagteware en die LCD sagteware in hierdie projek is daarop gebaseer. Ek moes funksies byvoeg om die ekstra reëls van die 2004 -skerm aan te spreek, en ek het ook roetines bygevoeg om die skerm te verskuif. Die vertoonskof bied die bewegingseffek van die "rotse" verby die "skip".

Soos vroeër genoem, vorm reëls 1 en 3 'n ronde tou en reëls 2 en 4 doen dit ook. Dit beteken dat reël 1 en 3 na 20 skofte omgeruil en reël 2 en 4 omgeruil word. Na 40 skofte is die lyne terug in hul oorspronklike posisies. As gevolg van hierdie gedrag word die oorspronklike doolhof van 20 karakters heeltemal anders as die lyne omruil. Dit het die lewe interessant gemaak toe ek 'n doolhof probeer vorm. Uiteindelik het ek 'n Excel -sigblad oopgemaak sodat ek die pad kon bepaal sonder om die sagteware voortdurend te hoef te verander. Die sagteware wat hier aangebied word, het twee weergawes van die doolhof (die een word kommentaar gelewer), sodat u kan kies watter u wil hê, of u eie kan maak.

Ek wou oorspronklik dat dit eenvoudig genoeg was sodat die jong kleinkinders dit kon speel, maar ek wou ook hê dat dit 'n ekstra uitdaging sou hê as hulle (of iemand anders) te goed sou wees. Die spel begin met die skuifkoers wat op 1 sekonde gestel is. Die interne tiktempo is 50 ms, wat beteken dat daar 20 tussenposes is waartydens op/af -knoppies gedruk kan word. In werklikheid verbruik 'n ingedrukte knoppie 2 tics, want 'n interval van 50 ms word gebruik om die pers op te spoor en nog 'n interval van 50 ms word gebruik om te wag vir die vrystelling. Met die standaard doolhof is die maksimum aantal perse wat benodig word voor die volgende skof drie. Die eenvoudige manier om die spelprobleme te verhoog, is om die tyd tussen skofte te verkort, sodat 'n paar reëls kode presies dit doen namate die telling toeneem. Die verskuiwingstempo moet elke 20 skofte met 50ms bespoedig, met die minimum tempo beperk tot 500ms. Dit is maklik om hierdie parameters te verander.

Behalwe die verandering van die verskuiwingstempo, is die primêre logika in die sagteware om die 'skip' te beweeg en te bepaal of die 'skip' met 'n 'rots' gebots het. Hierdie funksies trek voordeel uit die gedefinieerde 'rock/space' -skikking en ook die skikking wat die geheue -liggings in die skerm definieer. Die skofgetal stem ooreen met die reellengte van die LCD (0-19) en word as 'n indeks vir hierdie skikkings gebruik. Die logika word ietwat ingewikkeld deur die feit dat die lyne elke 20 skof tel. Soortgelyke logika word gebruik om die posisie van die "skip" wat op enige van die vier reëls kan wees, te bepaal.

Die telling vir elke spel is eenvoudig die telling van die aantal skofte wat plaasgevind het en die hoë telling word in die interne EEROM van die mikrobeheerder gestoor. Die EEPROM -biblioteek word gebruik om die geheue te lees en te skryf. Die beskikbare roetines laat enkele byte lees/skryf en lees/skryf van drywende puntwaardes toe. 'N Waarde van 0xA5 word op die eerste EEROM -plek gestoor om aan te dui dat 'n hoë telling gestoor is. As die waarde teenwoordig is, word die drywende puntwaarde vir die hoë telling gelees en vertoon. As die 0xA5 -waarde nie teenwoordig is nie, word 'n roetine opgeroep om die hoë telling te initialiseer tot 'n waarde van 1. Dieselfde roetine word genoem as 'n herstelling van die hoë telling verlang word. Die hoë telling word teruggestel na 'n waarde van 1 deur een van die op/af knoppies ingedruk te hou en dan kortliks op die reset knoppie te druk.

Stap 3: Speel die spel

Speel die spel
Speel die spel
Speel die spel
Speel die spel

As krag toegepas word, word die huidige hoë telling vertoon. Nadat die hoë telling vertoon is, word die doolhof van "rotse" en die "skip" vertoon, en dan begin die spel 'n paar sekondes later. As die 'skip' 'n 'rots' tref, flits die boodskap 'CRASH AND BURN' 'n paar keer voordat die telling vir die spel vertoon word. As 'n nuwe hoë telling gemaak word, word die boodskap ook vertoon. 'N Nuwe speletjie word begin deur op die reset -knoppie te druk.

Aanbeveel: