Cristian DIACONU (66864) - Snake pe LCD
Autorul poate fi contactat la adresa: Login pentru adresa
Introducere
Proiectul are drept scop implementarea celebrului joc Snake, disponibil pe telefoanele Nokia in perioada lor de glorie. Pentru aceasta, voi incerca o abordare mixta, compusa din:
a) preluarea elementelor jocului original, care ne-au facut sa il indragim si sa ne amintim cu placere de el dupa atatia ani
b) imbunatatirea experientei oferite, in mod special prin cresterea competitivitatii (implementabila prin: nivele de dificultate diferite, bonusuri ce aduc gain-uri diferite sau care scad din viata etc.)
Scopul este retrairea momentelor in care un joc atat de simplu si naiv ne putea captiva mai mult decat multe jocuri actuale, cu grafica si gameplay desprinse din filmele SF ale vremurilor cand Snake era un must-play. :)
Acest proiect este o idee mai veche pe care mi-am dorit de mai demult sa o implementez, insa acum voi putea face acest lucru intr-un mediu si folosind niste tool-uri la care pana mai acum un an nu m-as fi gandit. Sper ca rezultatul sa fie pe masura asteptarilor, iar experienta oferita sa fie una apropiata de cea a originalului.
Descriere generală
Schema bloc
Desfasurarea interactiunii
Utilizatorul controleaza miscarea sarpelui prin intermediul butoanelor. Rezultatele actiunilor sale vor fi afisate pe ecran.
Hardware Design
Lista de piese
microcontroller ATmega 324
placuta PM 2017
ecran LCD PCD8544 (Nokia 5110) 48×84 pixeli
stabilizator tensiune 3.3V LP2950
condensator 10 uF (+ stabilizatorul au folosit pentru alimentarea placutei la 3.3V)
6 butoane (2 placuta de baza + 4 placuta test)
4 rezistoare de 10k pentru butoanele de pe placuta de test
conectori tip panglica mama-mama (2 x 10)
headere
alte componente pentru placuta de baza (rezistoare de 4.7k, 10k, diode, quartz de 16
MHz etc.)
Schema electrica
Software Design
Mediu dezvoltare: Linux
Pachete instalate: gcc-avr, avr-libc, libusb-dev
Editor text: Sublime Text
Compilare: din linia de comanda, folosind utilitarul make si compilatorul avr-gcc
Incarcare cod pe placuta: HIDBootFlash (folosind utilitarul bootloadHID)
Initial, dupa cum am scris si in documentatie, incepusem dezvoltarea in Windows, insa pe parcurs mi-am dat seama ca incercarile de a instala toate extensiile si pachetele necesare sunt aproape zadarnice, intrucat parca “nu se mai termina”, mereu aparand ceva nou care imi scapa. Astfel, am mutat dezvoltarea pe Linux, si pot spune ca am facut cea mai buna alegere, putand sa-mi dedic tot timpul dezvoltarii codului, nu gestiunii pachetelor, utilitarelor si dandu-mi seama cum se folosesc tool-uri noi.
Rezultate Obţinute
Placuta de baza
Placuta de test montaj fata
Placuta de test lipituri spate
Montajul final
Screenshots
Functionalitati
single player
3 nivele de dificultate, plus 1 nivel care ofera posibilitatea trecerii prin toate nivelele
control al sarpelui in cele 4 directii
nivele de dificultate graduale, caracterizate prin obstacole si prin bonusuri care pot reduce viata sarpelui
Conform planului, am finalizat software-ul pana la PM Fair. Jocul este functional, conform cu specificatiile prezentate la sectiunea introductiva.
Concluzii
A fost un proiect interesant, care mi-a oferit sansa de a-mi completa cunostintele de dezvoltare software cu cele de lucru cu hardware-ul. De asemenea, consider ca a fost o introducere foarte buna in electronica de hobby. Spre final, insa, a devenit putin stresant, deoarece ajungeam sa constat ca mai am nevoie de piese / sa lipesc noi piese, si timpul tot mai scurt, coroborat cu deadline-uri si la celelalte materii, a facut din ultimele doua saptamani un adevarat challenge! Overall, insa, sunt fericit ca mi-am atins obiectivul, si am proiectul realizat integral pana la PM Fair.
Download
Jurnal
Saptamanile 7-8: alegere tema proiect, comunicarea acesteia asistentului
Saptamanile 9-10: achizitie piese pentru placuta de baza, achizitie piese aditionale (LCD, butoane, conectori mama-mama), lipit piese pe placuta de baza
Saptamanile 11-13: realizare montaj placuta de test + testare functionare corecta a hardware-ului
Saptamana 14: dezvoltare cod aplicatie
Bibliografie/Resurse
Documentația în format
PDF