Differences

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

Link to this comparison view

pm:prj2021:amocanu:snake [2021/05/28 10:58]
andrei.mutu [Hardware Design]
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/​ 
  
-Pagina in format pdf:  +<​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
-{{ snake.pdf }}+
  
  
  
  
pm/prj2021/amocanu/snake.1622188727.txt.gz · Last modified: 2021/05/28 10:58 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