Cristina-Elena ALEXANDRU (25481) - LED Snake
Autorul poate fi contactat la adresa: Login pentru adresa
Introducere
Proiectul consta in implementarea jocului SNAKE. Insa este o varianta putin mai speciala, avand in vedere ca proiectarea jocului nu se va face pe LCD, ci pe o matrice de LED-uri. Interactiunea se va face prin intermediul a 4 butoane care vor dirija snake-ul in patru directii posibile (stanga, dreapta, sus, jos).
Inceputul si sfarsitul jocului vor fi semnalizate prin anumite pattern-uri ale aprinderii matricei de led-uri.
Descriere generală
Pentru a interactiona cu “personajul” jocului se folosesc cele 4 butoane, care reprezinta directiile de deplasare. Start-ul jocului va fi in momentul in care utilizatorul apasa oricare buton.
Schema Bloc
Hardware Design
LISTA DE PIESE:
→ Componentele placii de baza:
2 Condensatoare 10uF
2 LED-uri
1 Microcontroller
1 Soclu
2 Rezistente 4k7
2 Rezistente 10k
1 Rezistenta 15k
2 Rezistente 1k
2 Diode
2 Push Buttons
1 Header Pini (40p)
→ Componente extra:
Modul cu Matrice de LED-uri MAX7219
Buzzer Activ de 5V
Header de pini (40p)
Fire Colorate
Push Buttons
Schema electrica:
Software Design
Ca si mediu de dezvoltare am folosit WinAVR. rd
Comunicatia cu modului matricei de led-uri (MAX7219) se realizeaza prin SPI.
Algoritmul jocului l-am realizat dupa urmatoarea logica:
makeApple() genereaza punctul random care trebuie sa fie atins de catre snake.
pozitia snake-ului o retin cu ajutorul unui vector care contine toate ledurile aprinse.
cand snake-ul se misca, practic, aprind urmatorul led, si il sting pe ultimul ( shiftez elementele din vector, si adaug unul nou)
la fiecare pas, exista un sens de mers al sarpelui, sensul opus fiind dezactivat ( daca sarpele merge spre dreapta, si user-ul apasa stanga, acesta nu va face nimic)
dupa ce s-au “mancat” un numar de puncte, jocul trece la nivelul urmator, marind viteza.
Reguli de joc:
jocul porneste si avertizeaza start-ul prin afisajul “GO”
interactiunea cu snake-ul se realizeaza prin cele 4 butoane:
stanga
dreapta
sus
jos
de retinut faptul ca, daca sarpele se deplaseaza spre dreapta, apasarea butonului stanga nu are niciun efect.
sarpele poate trece prin pereti, similar jocului original snake.
cu cat aduna mai multe puncte, snake-ul va avea o lungime mai mare.
trecerea la nivelul urmator, se realizeaza in momentul in care snake-ul a mancat N puncte (in implementare am setat la 5)
un nivel nou, presupune si resetarea lungimii sarpelui la cea initiala
GameOver se realizeaza in momentul in care sarpele se loveste de el insusi.
Rezultate Obţinute
Concluzii
Mi-a placut foarte mult proiectul pe care mi l-am ales. Am lucrat destul de mult la el, dar chiar a iesit un lucru super.
proiect_pm.zip
Jurnal
Cumparare placa de baza
Lipire componente pe placa de baza
Cumparare componente extra
Lipire componente extra
Realizare soft
Bibliografie/Resurse