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
kit-ul de componente de baza
5 butoane
LCD grafic
buzzer activ
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:
generate_x: generare coordonata x pentru mancare;
generate_y: generare coordonata y pentru mancare;
random_food: generare mancare random;
start_snake: initializeaza sarpele intr-o pozitie initiala si cu directia de start spre stanga, totodata si punctul de mancare undeva random;
move_snake: fiecare bloc al sarpelui va avea acum coordonatele blocului precedent sau, astfel se realizeaza deplasarea sa, iar capul sarpelui este tratat separat;
verify_dir_head_snake: se verifica ce buton a fost apasat pentru schimbarea directiei sarpelui;
lcd_display_food: afiseaza blocul de mancare;
lcd_display_snake: afiseaza sarpele;
lcd_display_border: afiseaza bordura daca este cazul;
main_screen: afiseaza meniul principal de selectie;
select_border_type: se asteapta selectarea unui mod de joc;
end_game: mesaj la sfarsitul jocului si scorul care s-a facut;
test_border: verific intersectia sarpelui cu bordura;
test_bite_himself: verific daca sarpele s-a muscat;
feed_snake: sarpele creste in dimensiune dupa ce a mancat mancare;
test_eat_food: verific daca a ajuns la punctul de mancare;
Rezultate obtinute
Link filmulet:
Bibliografie/Resurse
Arhiva
PDF file