This shows you the differences between two versions of the page.
pm:prj2021:alazar:snake_the_game [2021/05/31 21:36] tiberiu.celeapca [Snake - The Game] |
pm:prj2021:alazar:snake_the_game [2021/06/01 20:41] (current) tiberiu.celeapca [Jurnal] |
||
---|---|---|---|
Line 12: | Line 12: | ||
* Pe matricea LED 8x8 va fi afișat jocul | * Pe matricea LED 8x8 va fi afișat jocul | ||
- | ==== Schema bloc: ==== | + | ==== Schema bloc ==== |
{{ :pm:prj2021:alazar:pm_schema_bloc.png }} | {{ :pm:prj2021:alazar:pm_schema_bloc.png }} | ||
Line 36: | Line 36: | ||
**VCC** conectat la **5V** \\ | **VCC** conectat la **5V** \\ | ||
**SW** neconectat | **SW** neconectat | ||
- | |||
- | ---- | ||
---- | ---- | ||
Line 57: | Line 55: | ||
\\ | \\ | ||
- | === Schema electrică: === | + | === Schema electrică === |
+ | {{ :pm:prj2021:alazar:schema_electrica_snake.png?direct&700 |}} | ||
===== Software Design ===== | ===== Software Design ===== | ||
Line 77: | Line 76: | ||
};</code> | };</code> | ||
\\ | \\ | ||
- | În etapa de **setup**, se inițializează matricea și coordonatele capului șarpelui (în mod random) și se afișează mesajul **SNAKE - THE GAME** pe matricea LED.\\ | + | În etapa de **setup**, se inițializează matricea și coordonatele capului șarpelui (în mod random) și se afișează mesajul „**SNAKE - THE GAME**” pe matricea LED.\\ |
În etapa **loop**, se generează mâncarea în mod random, se citesc datele primite de la joystick, se calculează pozițiile șarpelui și se verifică dacă, între timp, s-a ajuns în starea **Game Over**.\\ | În etapa **loop**, se generează mâncarea în mod random, se citesc datele primite de la joystick, se calculează pozițiile șarpelui și se verifică dacă, între timp, s-a ajuns în starea **Game Over**.\\ | ||
- | În cazul în care se ajunge în starea **Game Over** (din pricina faptului că șarpele și-a mușcat propria coadă, se afișează pe matrice mesajul **GAME OVER** și se reinițializează jocul: mâncarea este pusă într-un loc random și capul șarpelui la fel. Inițial, șarpele are lungime 3 (trei leduri luminoase). | + | În cazul în care se ajunge în starea **Game Over** (din pricina faptului că șarpele și-a mușcat propria coadă, se afișează pe matrice mesajul „**GAME OVER**” și se reinițializează jocul: mâncarea este pusă într-un loc random și capul șarpelui la fel. Inițial, șarpele are lungime 3 (trei leduri luminoase).\\ |
+ | \\ | ||
+ | \\ | ||
+ | **Funcții:** | ||
+ | <code> | ||
+ | // generează mâncarea random | ||
+ | void generateFood(); | ||
+ | |||
+ | // citește datele trimise de joystick și setează direcția | ||
+ | void scanJoystick(); | ||
+ | |||
+ | // calculează mișcările șarpelui, verifică dacă acesta a ajuns pe poziția mâncării | ||
+ | // și transmite un ton prin buzzer în caz afirmativ | ||
+ | void calculateSnake(); | ||
+ | |||
+ | // dacă șarpele iese din ecran, acesta apare în cealaltă parte | ||
+ | void fixEdge(); | ||
+ | |||
+ | // verifică dacă jocul a ajuns în starea „Game Over” | ||
+ | void checkIfOver(); | ||
+ | |||
+ | // reinițializează matricea și jocul | ||
+ | void reinit(); | ||
+ | |||
+ | // clipește ecranul de 7 ori și se sting ledurile care indicau poziția șarpelui | ||
+ | void clearSnake(); | ||
+ | |||
+ | // funcție folosită pentru afișarea mișcărilor pe serială | ||
+ | void debugInSerial(); | ||
+ | |||
+ | // afișează mesajul „SNAKE - THE GAME” pe matrice | ||
+ | void showStartMessage(); | ||
+ | |||
+ | // afișează mesajul „GAME OVER” pe matrice | ||
+ | void showGameOverMessage(); | ||
+ | </code> | ||
===== Rezultate Obținute ===== | ===== Rezultate Obținute ===== | ||
+ | == Fotografii == | ||
+ | \\ | ||
+ | {{ :pm:prj2021:alazar:snake_the_game_1.jpg?direct&600 |}} | ||
+ | \\ | ||
+ | {{ :pm:prj2021:alazar:snake_the_game_2.jpg?direct&600 |}} | ||
+ | \\ | ||
+ | {{ :pm:prj2021:alazar:snake_the_game_3.jpg?direct&600 |}} | ||
+ | \\ | ||
+ | \\ | ||
+ | == Video == | ||
+ | [[https://youtu.be/org8-QNjwCw | Snake - The Game (Demo)]] | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | Dezvoltarea proiectului a fost o experiență plăcută pentru mine, am învățat mai multe despre Arduino, matrice LED, joystick și buzzer. Cu siguranță pot fi adăugate mai multe funcționalități, poate chiar mai multe matrici led pentru a face terenul mai mare.\\ | ||
+ | Per total, consider că mi-a ieșit bine și sunt mulțumit de output. | ||
===== Download ===== | ===== Download ===== | ||
+ | {{:pm:prj2021:alazar:snake_the_game_implementation.zip}} | ||
===== Jurnal ===== | ===== Jurnal ===== | ||
+ | 25/04/2021 -> confirmarea proiectului; realizarea paginii wiki, a introducerii și a schemei bloc | ||
+ | |||
+ | 29/05/2021 -> realizare software design | ||
+ | |||
+ | 29/05/2021 -> realizare hardware design | ||
+ | |||
+ | 30/05/2021 -> actualizare proiect (hardware + software) | ||
+ | |||
+ | 30/05/2021 -> finalizare implementări hardware și software | ||
+ | |||
+ | 31/05/2021 -> actualizare pagină wiki | ||
+ | |||
+ | 01/06/2021 -> finalizare pagină wiki | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
- | * {{:pm:prj2021:alazar:snake_the_game.pdf|}} | + | * [[https://ocw.cs.pub.ro/courses/pm/prj2021/alazar/snake_the_game?do=export_pdf | snake_the_game.pdf]] |
+ | * [[https://components101.com/modules/joystick-module]] | ||
+ | * [[https://components101.com/displays/8x8-led-matrix-module]] | ||
+ | * [[https://github.com/wayoda/LedControl]] | ||
+ | * [[https://create.arduino.cc/projecthub/rishab8551/arduino-snake-game-using-arduino-and-martix-6c230c]] | ||
+ | * [[https://howtomechatronics.com/tutorials/arduino/8x8-led-matrix-max7219-tutorial-scrolling-text-android-control-via-bluetooth/]] | ||