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> | ||