This shows you the differences between two versions of the page.
pm:prj2021:amocanu:snake [2021/05/28 11:00] andrei.mutu [Bibliografie/Resurse] |
pm:prj2021:amocanu:snake [2021/06/01 12:19] (current) andrei.mutu [Bibliografie/Resurse] |
||
---|---|---|---|
Line 17: | Line 17: | ||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
- | {{ schema_electrica_snake.jpeg?700x500}} | + | |
==== Lista de piese ==== | ==== Lista de piese ==== | ||
<note> | <note> | ||
Line 29: | Line 29: | ||
==== Schema electrica ==== | ==== Schema electrica ==== | ||
+ | {{ schema_electrica_snake.jpeg?700x500}} | ||
+ | {{ naked_snake.jpeg?700x700 }} | ||
+ | |||
+ | ===== Software Design ===== | ||
+ | Descrierea codului aplicației: | ||
+ | * mediu de dezvoltare: Arduino IDE | ||
+ | * librarii şi surse 3rd-party: | ||
+ | * <Wire.h> | ||
+ | * <SPI.h> | ||
+ | * <I2Cdev.h> | ||
+ | * <MPU6050.h> | ||
+ | * <Adafruit_GFX.h> | ||
+ | * <Adafruit_ST7735.h> | ||
+ | * algoritmi si structuri de date: | ||
+ | * logica simpla (if, while, for) | ||
+ | * structuri de baza C: variabile, constante | ||
+ | * structura Pair: retine coordonatele unui segment de sarpe alaturi de directia de deplasare | ||
+ | * surse si functii implementate: | ||
+ | * check_movement(int last_direction): citeste input-ul de la accelerometru si decodifica directia de deplasare | ||
+ | * generate_random_fruit(): genereaza un nou fruct pe harta | ||
+ | * check_fruit_colision(): verifica coliziunea cu fructul de pe harta | ||
+ | * get_highest_snake_part_on_y(): returneaza elementul din sarpe cel mai aproape de marginea superioara a ecranului | ||
+ | * snake_falling_down(): animatia de cadere a sarpelui dupa terminarea jocului | ||
+ | * check_walls_colision(): verifica coliziunea cu marginile hartii | ||
+ | * move_snake(): miscarea sarpelui, capul sarpelui este cel ce influenteaza directia, iar restul elementelor preiau pozitia elemtenlor de dinaintea lor | ||
+ | * setup(void): intializam lcd-ul si accelerometrul, afisam elementele incipiente, generam capul sarpelui cu pozitie si directie aleatoare | ||
+ | * clear_screen_horizontal(): curata ecranul cu linii orizontale | ||
+ | * clear_screen_vertical(): curata ecranul cu linii verticale | ||
+ | * clear_screen(): genereaza aniamtia de curatare a ecranului folosind functiile de curatare | ||
+ | * loop(): verifica daca jocul s-a terminat si porneste animatia de final de joc, iar in cazul contrat continue sa genereze fructe si sa actioneze miscarea sarpelui | ||
+ | * print_end(): printam mesajul de final de joc | ||
+ | * print_message(String txt, int xPos, int yPos): printam un mesaj la anumite coordonate pe ecran | ||
+ | * print_snake_logo(): printam titlul jocului intr-un mod circular prin schimbarea orientarii | ||
+ | * print_snake_logo_orientation(int i): printam titlul jocului cu o culoare diferita in functie de orientare | ||
+ | |||
+ | ===== Rezultate obtinute ===== | ||
+ | [[https://github.com/mandrei12/pm|Cod sursă]] \\ | ||
+ | [[https://www.youtube.com/watch?v=XMZUxWBAQOw|Demo]] | ||
+ | ===== Concluzii ===== | ||
+ | Proiectul la PM a fost o experienta interesanta, pe de o parte a fost o provocare destul de incurcata, iar pe de alta a fost o modalitate placuta de a invata tehnologii noi. Din punct de vedere hardware proiectul nu a fost foarte complex, insa provocarea a fost modalitatea de prezentare: cum poate fi prezentat intr-o cutie cat mai mica. Provocarea de compensare a complexitatii proiectului a venit in aspectul estetic al acestuia, efect realizat prin variate functii ce joaca rol de eye-candy. In final pot spune ca a fost o experienta care a meritat in mod clar si cel mai suprinzator lucru a fost ca este mult mai usor sa faci un joc decat sa joci un joc, sau sa il calibrezi sa fie usor de jucat. | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
- | Link catre pagina: | + | * https://www.youtube.com/watch?v=xDgwxYMmhGI |
- | https://ocw.cs.pub.ro/courses/pm/prj2021/amocanu/snake | + | * https://www.youtube.com/watch?v=wTfSfhjhAU0 |
+ | * https://cdn-learn.adafruit.com/downloads/pdf/adafruit-gfx-graphics-library.pdf | ||
+ | * https://chrishewett.com/blog/true-rgb565-colour-picker/ | ||
<html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> |