This shows you the differences between two versions of the page.
pm:prj2021:abirlica:jumping_game [2021/05/30 16:39] adrian.florea2502 |
pm:prj2021:abirlica:jumping_game [2021/05/30 18:17] (current) adrian.florea2502 |
||
---|---|---|---|
Line 7: | Line 7: | ||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
- | Proiectul consta in implementarea unui simplu joc, folosind un ecran LCD, butoane si un buzzer. | + | Proiectul consta in implementarea unui simplu joc, folosind un ecran LCD, butoane si un buzzer. Ecranul LCD este conectat la microcontroller printr-un modul I2C. Jucatorul poate alege dificultatea jocului, care se refera la viteza de deplasare a personajului. La apasarea de butoane sau la diverse evenimente ale jocului, buzzerul este setat cu anumite melodii/sunete. |
{{:pm:prj2021:abirlica:block_design_af336cb.png?700|}} | {{:pm:prj2021:abirlica:block_design_af336cb.png?700|}} | ||
Line 26: | Line 26: | ||
===== Software Design ===== | ===== Software Design ===== | ||
- | {{:pm:prj2021:abirlica:af336cb_diagrama.png?850|}} | + | {{:pm:prj2021:abirlica:af336cb_diagrama.png?800|}} |
+ | |||
+ | {{:pm:prj2021:abirlica:af336cb_diagrama2.png?500|}} | ||
+ | |||
+ | void setup() | ||
+ | - seteaza pinii pentru buzzer, selectare dificultate, saritura (JUMP button); | ||
+ | - creaza obiectele pentru scena folosind initializeGraphics() | ||
+ | - loop in functia menu() pana cand utilizatorul alege o dificultate, dupa care programul trece in loop() | ||
+ | - porneste lcd-ul declarat global | ||
+ | |||
+ | void loop() | ||
+ | - in functie de dificultatea aleasa apeleaza functia principala draw_func(int delay_time) | ||
+ | - delay_time se refera la viteza cu care se actualizeaza scena | ||
+ | |||
+ | void menu() | ||
+ | - parseaza prin setarile de dificultate pana cand se foloseste butonul de jump pentru a incepe jocul | ||
+ | |||
+ | void beginning() | ||
+ | - printeaza mesajul de inceput al jocului, inainte de selectarea dificultatii | ||
+ | |||
+ | void draw_func(int delay_time) | ||
+ | - daca jucatorul nu a avut o coliziune, primeste input de la butonul de jump | ||
+ | - daca s-a intamplat o coliziune, jocul se blocheaza si asteapta input pe jump | ||
+ | - altfel scena se shifteaza la stanga constant folosind functia advanceTerrain() | ||
+ | |||
+ | bool drawHero(byte position, char* terrainUpper, char* terrainLower, unsigned int score) | ||
+ | - verificarea coliziunii dintre personaj si scena | ||
+ | - afiseaza personajul si animatiile sale | ||
+ | |||
+ | void advanceTerrain(char* terrain, byte newTerrain) | ||
+ | - afiseaza piese in scena si genereaza parti noi | ||
+ | |||
+ | |||
+ | PIN 4: select\\ | ||
+ | PIN 3: buzzer\\ | ||
+ | PIN 2: jump\\ | ||
+ | <note> | ||
+ | Biblioteca folosita pentru comunicarea I2C este atasata in sectiunea [[:pm:prj2021:abirlica:jumping_game#Bibliografie/Resurse]]. | ||
+ | </note> | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
Line 39: | Line 77: | ||
<note tip> | <note tip> | ||
- | {{https://youtu.be/vlh2DuX1jmI|DEMO}} | + | {{https://youtu.be/vlh2DuX1jmI| < < DEMO > > }} |
</note> | </note> | ||