This shows you the differences between two versions of the page.
pm:prj2021:avaduva:2048sounds [2021/06/01 23:56] mihai_daniel.radu99 |
pm:prj2021:avaduva:2048sounds [2021/06/02 10:15] (current) mihai_daniel.radu99 |
||
---|---|---|---|
Line 45: | Line 45: | ||
===== Software Design ===== | ===== Software Design ===== | ||
- | {{ :pm:prj2021:avaduva:2048sounds_flow_diagram.png?700 |}} | + | |
+ | Diagrama de flow: | ||
+ | |||
+ | {{ :pm:prj2021:avaduva:2048sounds_flow_diagram.png?700 |2048Sounds Flow Diagram}} | ||
+ | |||
+ | Pentru a scrie cod cat mai curat si lizibil, am impartit in 3 codul: partea de Arduino si setup-ul necesar, mecanicile si logica de joc 2048 si fisierul cu efectele sonore. | ||
+ | |||
+ | Am inceput design-ul software prin a seta toti pinii folositi si prin a apela constructorul necesar pentru configuratia seriala prin SPI a display-ului 128x64 ST7920. | ||
+ | Folosind biblioteca u8g2 si manualul de referinte si resurse din aceasta, am desenat fiecare ecran din cadrul jocului: ecranul de "Hello & Welcome!", ecranul de joc cu matricea si numerele din aceasta, ecranul de "Game Won" si ecranul de "Game Lost". | ||
+ | <note tip>Implementarea ecranelor de vizualizare contine foarte putine valori hardcodate sau specifice doar display-ului sau componentelor pe care le-am utilizat eu, deci am respectat o norma de "clean code".</note> | ||
+ | |||
+ | Pentru a capta input-ul jucatorului, verific intotdeauna daca a existat vreo schimbare in starile butoanelor(apasat/neapasat), iar daca a existat, fac debouncing pentru a ma asigura ca este o miscare adevarata din partea jucatorului si nu o fluctuatie de curent sau orice altceva ce ar putea schimba starile butoanelor. | ||
+ | |||
+ | In ceea ce priveste jocul de 2048, in matricea de joc pastrez valorile puteri ale lui 2, deci valorile posibile in cadrul jocului sunt cuprinse intre 0 si 11, iar transformarea este efectuata la vizualizarea ecranelor, nefiind importanta pentru logica jocului decat exponentul bazei 2. Prin intermediul mai multor functii si flag-uri, verific daca jocul este inceput, castigat(exista valoarea 2048 in matrice) sau pierdut(nu mai exista miscari posibile valide in matrice), iar in functie de aceastea decid ce ecran afisez sau ce efecte sonore sunt activate. | ||
+ | La apasarea unui buton, verific daca exista miscari valide in directia impusa de buton, iar daca exista o efectuez si adaug un nou numar in matrice. | ||
+ | |||
+ | Efectele sonore joaca un rol important in jocul meu si de aceea am construit mai multe melodii si sunete care se potrivesc foarte bine cu jocul. Theme song-ul care canta pe fundal in ecranul de "Hello & Welcome!" este partea de inceput din "The Godfather", modificata de mine pentru a complimenta atmosfera in jocul de 2048. La apasarea butoanelor se aude un sunet inspirat din jocurile retro arcade, iar la ecranele de "Game Won" si "Game Lost" sunt redate sunete din aceeasi sfera retro potrivite pentru castigul sau pierderea jocului. | ||
+ | |||
+ | La final, este afisat scorul obtinut in urma jocului, iar la apasarea oricarui buton dupa afisarea ecranelor de castigare/pierdere, jucatorul este trimis inapoi la ecranul de inceput "Hello & Welcome!". | ||
===== Rezultate obtinute ===== | ===== Rezultate obtinute ===== | ||
+ | Ecran "Hello & Welcome!": | ||
+ | {{ :pm:prj2021:avaduva:2048sounds_hello.jpeg?500 |}} | ||
+ | Ecran matricea de joc: | ||
+ | {{ :pm:prj2021:avaduva:2048sounds_matrix.jpeg?500 |}} | ||
- | ===== Concluzii ===== | + | Ecran "Game Won!": |
+ | {{ :pm:prj2021:avaduva:2048sounds_gamewon.jpeg?500 |}} | ||
+ | Ecran "Game Lost!": | ||
+ | {{ :pm:prj2021:avaduva:2048sounds_gamelost.jpeg?500 |}} | ||
- | ===== Download ===== | + | <note important>[[https://www.youtube.com/watch?v=JoHIpk7h1nw&t=4s|Demo 2048Sounds Youtube]]</note> |
+ | ===== Concluzii ===== | ||
+ | Consider ca a fost unul dintre cele mai interesante proiecte din facultate, nu doar datorita oportunitatii de a cunoaste si a intelege hardware-ul, dar si datorita faptului ca am reusit sa creez ceva de la 0 si sa mearga impecabil! | ||
+ | |||
+ | ===== Download ===== | ||
+ | {{:pm:prj2021:avaduva:332cc_radu_mihai-daniel_2048sounds.zip|Download Cod 2048Sounds}} | ||
===== Jurnal ===== | ===== Jurnal ===== | ||
Line 80: | Line 110: | ||
* [[https://www.youtube.com/watch?v=uzxw1yl1s_M|Tutorial util soldering]] | * [[https://www.youtube.com/watch?v=uzxw1yl1s_M|Tutorial util soldering]] | ||
* [[https://musescore.com/user/35463/scores/55160|Partitura theme song The Godfather]] | * [[https://musescore.com/user/35463/scores/55160|Partitura theme song The Godfather]] | ||
+ | * [[https://www.arduino.cc/en/Tutorial/BuiltInExamples/toneMelody|Fisier note muzicale buzzer]] | ||
+ | * {{:pm:prj2021:avaduva:2048_sounds.pdf|Fisier PDF 2048Sounds}} | ||