Neagu Ana Maria Cristina - Snake

Descriere

Realizarea proiectului consta in implementarea jocului clasic Snake pe un LCD grafic.

Jocul va avea mai multe nivele, care sunt trecute daca jucatorul a atins un anumit scor. Un plus fata de varianta clasica a acestui joc ar fi introducerea unui buzzer, care va scoate un sunet de avertizare in cazul trecerii la un nivel urmator sau pierderii jocului.

Schema bloc

Lista de piese

  1. kit-ul de componente de baza
  2. 5 butoane
  3. LCD grafic
  4. buzzer activ
  5. fire mama-mama

Schema electrica

Versiunea initiala:

Versiunea finala:

Software Design

  • Am lucrat pe Windows si am folosit bootloader-ul oferit pe elf.cs in PowerShell.
  • Pentru Makefile am pornit de la cel de la laboratorul 1.
  • Pentru utilizarea LCD-ului grafic am folosit lcd.c si lcd.h dintr-o biblioteca pentru acest model.

Meniul de start ofera jucatorului posibilitatea de a alege modul de joc dorit, prin apasarea butonului de select. Cele 2 variante de joc sunt:

  • No Border: nu exista borduri ale ecranului, iar sarpele daca intra in unul din cei 4 pereti va aparea pe partea opusa;
  • Border: exista borduri, iar in cazul in care sarpele intra in unul din cei 4 pereti, jocul se va sfarsi;

Functii folosite:

  1. generate_x: generare coordonata x pentru mancare;
  2. generate_y: generare coordonata y pentru mancare;
  3. random_food: generare mancare random;
  4. start_snake: initializeaza sarpele intr-o pozitie initiala si cu directia de start spre stanga, totodata si punctul de mancare undeva random;
  5. move_snake: fiecare bloc al sarpelui va avea acum coordonatele blocului precedent sau, astfel se realizeaza deplasarea sa, iar capul sarpelui este tratat separat;
  6. verify_dir_head_snake: se verifica ce buton a fost apasat pentru schimbarea directiei sarpelui;
  7. lcd_display_food: afiseaza blocul de mancare;
  8. lcd_display_snake: afiseaza sarpele;
  9. lcd_display_border: afiseaza bordura daca este cazul;
  10. main_screen: afiseaza meniul principal de selectie;
  11. select_border_type: se asteapta selectarea unui mod de joc;
  12. end_game: mesaj la sfarsitul jocului si scorul care s-a facut;
  13. test_border: verific intersectia sarpelui cu bordura;
  14. test_bite_himself: verific daca sarpele s-a muscat;
  15. feed_snake: sarpele creste in dimensiune dupa ce a mancat mancare;
  16. test_eat_food: verific daca a ajuns la punctul de mancare;

Rezultate obtinute

Bibliografie/Resurse

  • Laboratoarele de PM
  • Proiectele din anii trecuti

Arhiva

PDF file

pm/prj2019/mlungoci/snakegame.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