This shows you the differences between two versions of the page.
pm:prj2021:dbrigalda:endlessrunnermatrix [2021/05/06 22:03] rares.popescu0807 created |
pm:prj2021:dbrigalda:endlessrunnermatrix [2021/06/02 19:00] (current) rares.popescu0807 [Download] |
||
---|---|---|---|
Line 4: | Line 4: | ||
//[[rares.popescu0807@stud.acs.upb.ro| Popescu Rares]]// | //[[rares.popescu0807@stud.acs.upb.ro| Popescu Rares]]// | ||
===== Introducere ===== | ===== Introducere ===== | ||
- | Proiectez un joc de tipul endless runner folosind o matrice de leduri 8x8. Jocul va avea colectabile, obstacole, un LCD pe care sa apara scorul, un buzzer care sa anunte cand am colectat ceva si butoane de start si stop. | + | Proiectez un joc de tipul endless runner folosind o matrice de leduri 8x8. Jocul va avea colectabile, obstacole, un LCD pe care sa apara scorul, un buzzer care sa anunte cand am colectat ceva . |
+ | Proiectul este un joc distractiv, care impresioneaza prin simplitatea graficii sale si prin efectele sonore de exceptie. Ideal pentru a fi jucat de unul singur, dar si pentru a-ti provoca prietenii sa-ti depaseasca recordul. | ||
+ | Mi s-a parut ca matricea 8x8 de leduri are potential si am vrut sa o pun in valoarea intr-un stil propriu. | ||
===== 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.\\ | ||
+ | \\ | ||
+ | |||
==== Schema bloc ==== | ==== Schema bloc ==== | ||
{{:pm:prj2021:dbrigalda:schemabloc69.png?700|}} | {{:pm:prj2021:dbrigalda:schemabloc69.png?700|}} | ||
Line 17: | 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.\\ |