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

Atasez o arhiva cu sursele utilizate si Makefile pentur compilarea pe Linux.

software_pm_diaconu_cristian.zip

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
pm/prj2017/amocanu/14710.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