Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2021:amocanu:snake [2021/05/28 13:02]
andrei.mutu
pm:prj2021:amocanu:snake [2021/06/01 12:19] (current)
andrei.mutu [Bibliografie/Resurse]
Line 31: Line 31:
 {{ schema_electrica_snake.jpeg?​700x500}} {{ schema_electrica_snake.jpeg?​700x500}}
  
-{{ naked_snake.jpeg?​800x800 ​}}+{{ naked_snake.jpeg?​700x700 ​}}
  
 ===== Software Design ===== ===== Software Design =====
 Descrierea codului aplicației:​ Descrierea codului aplicației:​
   * mediu de dezvoltare: Arduino IDE   * mediu de dezvoltare: Arduino IDE
-  * librării ​şi surse 3rd-party: ​+  * librarii ​şi surse 3rd-party: ​
     * <​Wire.h>​     * <​Wire.h>​
     * <​SPI.h>​     * <​SPI.h>​
Line 43: Line 43:
     * <​Adafruit_GFX.h>​     * <​Adafruit_GFX.h>​
     * <​Adafruit_ST7735.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 =====
   * https://​www.youtube.com/​watch?​v=xDgwxYMmhGI   * https://​www.youtube.com/​watch?​v=xDgwxYMmhGI
 +  * 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/​
  
  
pm/prj2021/amocanu/snake.1622196142.txt.gz · Last modified: 2021/05/28 13:02 by andrei.mutu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0