Georgiana-Iuliana Barbuceanu (78270) - joc Snake LCD

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Proiectul va consta in implementarea unui joc de Snake clasic pe LCD.

Descriere generala

Jocul va avea 3 nivele de dificultate, trecerea dintre acestea fiind realizata la atingerea unui anumit scor. Elementele inovative aduse variantei clasice sunt feedback sonor pe parcursul jocului cu ajutorul unui buzzer si alerte transmise de LED-uri (in momentul castigarii unui punct, avansarii nivelului, pierderii jocului, etc), precum si stocarea high-scores folosind memoria EEPROM.

Schema bloc:

Dupa cum se poate observa din schema bloc, dispozitivele de input sunt butoanele, iar cele de output buzzer-ul, ecranul LCD si LED-ul.

Hardware design

Lista piese:

  1. kit-ul de componente de baza;
  2. 5 butoane
  3. LCD
  4. buzzer pasiv
  5. LED RGB
  6. fire mama-mama, fire mama-tata
  7. rezistente

Schema electrica

Software design

Pentru dezvoltarea programului am folosit editorul Sublime,compilatorul avr-gcc si utilitarul bootloadHID. De asemenea, am utilizat biblioteca nokia5110 pentru a interactiona cu ecranul, iar implementarea urmareste urmatorii pasi:

  • folosesc o structura de tip coordinate (cu componentele x si y, specifice oricarui punct din spatiu) pentru a retine sarpele(vector), mancarea si obstacolele(vector)
  • implementarea diferitelor functii pentru a obtine o structura lizibila a codului :
    • init_buttons(), init_led(), init_buzzer() functii de initializare a componentelor hardware + activare intreruperi pentru citirea input-ului de la butoane pentru a evita polling-ul
    • up(), down(), right(), left(), select() functii ce verifica apasarea butoanelor
    • melody1(), melody2() sunete specifice inceperii si terminarii jocului
    • draw_food(), draw_snake(), draw_border(), draw_obstacles() - pe baza coordonatelor generate aterior, desenez pe ecran scena jocului: sarpele, mancarea, obstacolele, rama ecranului
    • draw_start_screen() afiseaza meniul de start al jocului ce cuprinde 3 niveluri de dificultate
    • draw_end_screen() afiseaza meniul de final al jocului cu un mesaj specific si scorul obtinut
    • move_snake(), feed_snake() functii specifice jocului de snake (miscare, hranire)

Jucatorul poate alege de la inceput viteza imprimata sarpelui din meniul de start, iar pe masura ce acumuleaza puncte, jocul ofera 3 nivele de dificultate: easy, medium(ecranul are bordura), hard(apare atat rama ecranului, cat si obstacole random).

Rezultate obtinute

Download

Concluzii

A fost unul dintre cele mai interesante proiecte la care am lucrat pana acum si desi tema proiectului parea una basic la inceput, din punct de vedere al implementarii software, pe parcursul dezvoltarii acestuia, am invatat foarte multe in timpul realizarii implementarii hardware, dar si a legaturii dintre soft si hard. Dupa deprinderea abilitatilor de intelegere a componentelor si legaturilor dintre acestea, a fost o adevarata placere sa customizez “jocul copilariei” dupa bunul plac.

Jurnal

18 Aprilie 2019 - Alegerea temei proiectului si realizarea documentatiei pentru Milestone1

23 Aprilie 2019 - Realizarea si testarea placutei de baza

7 Mai 2019 - Realizarea schemei electrice si adaugarea sa la pagina de wiki

15-20 Mai 2019 - Realizarea implementarii software si hardware

20 Mai 2019 - Refacerea schemei electrice

21 Mai 2019 - Finalizare documentatie

Bibliografie/Resurse

pm/prj2019/astratulat/78720.txt · Last modified: 2021/04/14 17:07 (external edit)
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