This shows you the differences between two versions of the page.
|
pm:prj2021:dbrigalda:endlessrunnermatrix [2021/05/26 23:23] rares.popescu0807 [Descriere generală] |
pm:prj2021:dbrigalda:endlessrunnermatrix [2021/06/02 19:00] (current) rares.popescu0807 [Download] |
||
|---|---|---|---|
| Line 10: | Line 10: | ||
| ===== Descriere generală ===== | ===== Descriere generală ===== | ||
| + | \\ | ||
| + | Placuta updateaza matricea periodic:\\ | ||
| + | -face obstacolele si colectabilele sa se apropie cu cate un pixel\\ | ||
| + | -in functie de inputul primit de la jotstick misca sau nu jucatorul\\ | ||
| + | -genereaza noi obstacole si colectabile periodic\\ | ||
| + | \\ | ||
| + | Placuta afiseaza pe LCD scorul curent.\\ | ||
| + | \\ | ||
| + | Placuta verifica coliziunile si actioneaza in consecinta:\\ | ||
| + | -cand colectam un colectabil activam buzzerul pentru o scurta perioada si updatam scorul de pe LCD\\ | ||
| + | -cand lovim un obstacol activam buzzerul pentru o perioada mai lunga, afisam pe LCD "Game over" si restartam jocul\\ | ||
| + | \\ | ||
| + | Cand incepe jocul, pe matricea de leduri este afisat mesajul "GO" din pixeli.\\ | ||
| + | \\ | ||
| + | Jocul poate fi restartat apasand butonul de pe placuta.\\ | ||
| + | \\ | ||
| - | Placuta updateaza matricea periodic: | ||
| - | -face obstacolele si colectabilele sa se apropie cu cate un pixel | ||
| - | -in functie de inputul primit de la jotstick misca sau nu jucatorul | ||
| - | -genereaza noi obstacole si colectabile periodic | ||
| - | |||
| - | Placuta afiseaza pe LCD scorul curent. | ||
| - | |||
| - | Placuta verifica coliziunile si actioneaza in consecinta: | ||
| - | -cand colectam un colectabil activam buzzerul pentru o scurta perioada si updatam scorul de pe LCD | ||
| - | -cand lovim un obstacol activam buzzerul pentru o perioada mai lunga, afisam pe LCD "Game over" si restartam jocul | ||
| ==== Schema bloc ==== | ==== Schema bloc ==== | ||
| {{:pm:prj2021:dbrigalda:schemabloc69.png?700|}} | {{:pm:prj2021:dbrigalda:schemabloc69.png?700|}} | ||
| Line 30: | Line 36: | ||
| | Matrice leduri 8x8 | 1 | | | Matrice leduri 8x8 | 1 | | ||
| | Buzzer | 1 | | | Buzzer | 1 | | ||
| - | | LED-uri | 2 | | ||
| - | | Butoane | 2 | | ||
| | LCD | 1 | | | LCD | 1 | | ||
| | Breadboard | 1 | | | Breadboard | 1 | | ||
| + | \\ | ||
| + | Placuta Arduino face toate calculele.\\ | ||
| + | Joystickul este sursa de input pe care o folosim pentru a controla caracterul nostru.\\ | ||
| + | Pe matricea de Leduri este afisata harta in timp real, updatandu-se periodic, pentru fiecare schimbare.\\ | ||
| + | Buzzerul este o componenta de output care semnaleaza sonor evenimente din joc.\\ | ||
| + | Breadbordul faciliteaza crearea circuitului.\\ | ||
| ===== Software Design ===== | ===== Software Design ===== | ||
| + | \\ | ||
| + | Pentru a dezvolta codul necesar proiectului am folosit Arduino IDE. | ||
| + | Pentru matricea de leduri si pentru LCD a fost nevoie de o cate o biblioteca: Adafruit_NeoPixel.h si LiquidCrystal_I2C.h. De asemenea am adaugat si biblioteca wire.h.\\ | ||
| + | Pentru personaj, obstacole, si colectabil a fost nevoie sa folosesc cate o pereche de variabile pentru coordonate.\\ | ||
| + | Pentru culoare e nevoie de 3 numere pt RGB.\\ | ||
| + | Pentru mesajul GO am folosit matricea go.\\ | ||
| + | Pentru a transpune usor coordonatele in numarul care corespunde pixelului de pe matrice dorit am folosit matricea light.\\ | ||
| + | Pentru a accesa matricea de leduri am folosit strip.\\ | ||
| + | Pentru a accesa LCDul am folosit lcd.\\ | ||
| + | Variabila speedS este folosita pentru a controla intervalul la care se fac updeturi, deci cat de repede se misca jocul.\\ | ||
| + | Functiile folosite sunt:\\ | ||
| + | RANDOM pentru a calcula niste pozitii ale obstacolelor si colectabilului care sa nu se suprapuna\\ | ||
| + | myDelay pentru a astepta inputul joystickului.\\ | ||
| + | joyStick pentru a determina directia in care e indreptata maneta.\\ | ||
| + | gameOver pentru a anunta ca jocul a fost pierdut si pentru a pregati jocul pentru restart.\\ | ||
| + | mobile pentru a misca pixelul care reprezinta caracterul nostru doar daca maneta era indreptata in sus sau in jos.\\ | ||
| + | displays pentru a afisa harta pe matricea de leduri.\\ | ||
| + | shiftMap pentru a face obstacolele si colectabilele sa se apropie de noi si pentru a verifica coliziunile.\\ | ||
| + | |||
| ===== Rezultate obtinute ===== | ===== Rezultate obtinute ===== | ||
| + | Rezultate obtinute se pot vedea cel mai bine in videoclipul de prezentare de la adresa\\ | ||
| + | [[https://www.youtube.com/watch?v=Un7D3QY8qws&ab_channel=Rares9913]]. | ||
| ===== Concluzii ===== | ===== Concluzii ===== | ||
| + | |||
| + | Sunt incantat ca am avut ocazia de a lucra cu o placuta arduino. | ||
| ===== Download ===== | ===== Download ===== | ||
| + | sursa: {{:pm:prj2021:dbrigalda:er.zip|}} | ||
| ===== Jurnal ===== | ===== Jurnal ===== | ||
| ===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
| + | Am folosit documentatiile pentru diferite componente si functii sau am cautat pe google tutoriale.\\ | ||
| + | M-am uitat si pe mai multe implementari de snake, pe arduino sau doar in C, ca punct de plecare.\\ | ||