Table of Contents

Gijga Raluca-Mihaela – Magic Car Race pe LCD

Autorul poate fi contactat la adresa de email: raluca_gajga@yahoo.com.

Introducere

Car Race este unul dintre cele mai cunoscute jocuri ale copilariei care pe multi dintre noi ne captiva la acel moment. A fost jocul meu preferat si de aceea am ales sa-l implementez pentru acest proiect. Poate reprezenta totodata si un mod de relaxare. Jocul consta in a deplasa o masinuta(realizata din pixeli) stanga-dreapta pentru a evita celelalte masini cu scopul de a le depasi. De asemenea pe parcursul “cursei” se acumuleaza un scor si in functie de el trece la nivelul urmator.

ASCII���mage 1.0.9

Descriere generala

Schema bloc


Prezentare

Dupa cum reiese din schema, componentele hardware folosite sunt: doua butoane, o placa de baza si un LCD grafic. Microcontroller-ul preia informatiile(inputul) de la butoane, le proceseaza, iar rezultatul (output-ul) va fi vizibil pe LCD. Pe LCD-ul grafic se va afisa o masinuta (formata din pixeli) pe care utilizatorul o va deplasa cu ajutorul butoanelor stanga-dreapta pentru a evita celelalte masini si pentru a acumula un scor cat mai mare. La un anumit scor setat se face trecerea la urmatorul nivel.

Hardware Design

Lista piese

  1. Placa de baza
  2. Microcontroller ATMega324
  3. LCD
  4. Rezistente
  5. Condensatori
  6. Fire conectoare
  7. 2 butoane

Schema electrica

electric_scheme_magic_car_race.sch

Software design

Mediu de dezvoltare

Pentru implementare am folosit Editor de text pe Linux, iar pentru compilare Makefile

Librarii si surse 3rd-party

Am folosit bibliotecile avr/io.h, util/delay.h, stdio.h, iar pentru LCD le-am folosit pe cele din laboratorul 5: ST7735R_TFT.h, spi.h

Implementare

In implementare, am definit o structura pentru intregul joc(struct_game), o structura pentru un punct (coordonatele punctului) si una pentru masini. Initial, am creat o pagina initiala cu numele jocului si un mesaj de inceput. Apoi urmeaza pagina de joc efectiv si dupa pagina de final cu un mesaj pentru sfarsitul jocului. Am implementat multiple functii precum: desenarea fiecarei pagini, desenarea elementelor din joc (borduri, masini, scor, nivel), tratarea inputului venit de la butoane, miscarea masinii stanga-dreapta in functie de butonul apasat, incadrarea masinii in chenarul pentru joc, coliziunile dintre masina jucatorului cu masinile adversare(in acest caz se termina jocul), optiunea de a reincepe jocul, iar pe viitor mi-as dori sa mai lucrez la asemenea proiecte.

Rezultate obtinute

magic_car6.jpg

Pagina de start

magic_car1.jpg

Nivelul 1 - o masina adversara

magic_car3.jpg

Nivelul 2 - 2 masini adversare

magic_car4.jpg

Nivelul 3 - 3 masini adversare

magic_car5.jpg

Pagina de final

magic_car2.jpg

Concluzii

Proiectul a reprezentat ceva nou pentru mine, pot spune o provocare, deoarece este primul meu proiect la care am lucrat la partea de hardware. Totusi, mi s-a parut foarte interesant si placut. Pe partea de software, jocul mai are mici bug-uri pe care le voi rezolva in viitor. In concluzie, am reusit sa obtin ceea ce mi-am propus pentru acest proiect, si anume un joc functional.

Download

Arhiva cod: gijga_raluca_336cb_magic_car_race.zip

Bibliografie/Resurse

LCD: https://www.optimusdigital.ro/ro/optoelectronice-lcd-uri/1311-modul-lcd-spi-de-18-128x160.html?search_query=Lcd%20spi&results=41&fbclid=IwAR1fMLzsQMLSZYfg9U-HiWeIcdjHoYXlirGEpnbmgXwe2caH_1YzCM2letw Butoane rosii: https://www.optimusdigital.ro/ro/butoane-i-comutatoare/1114-buton-cu-capac-rotund-rou.html?search_query=buton&results=198 Placuta de test: https://contactelectric.ro/constructia-de-prototipuri/922-placa-de-test-gaurita-verde-70x50mm-432-puncte-de-lipire-placa-universala-circuite.html Fire mama-mama: https://contactelectric.ro/fire-de-testare/212-set-cabluri-breadboard-cu-conectori-mama-mama-lungime-10cm-set-40-fire-colorate.html

Documentatia in format PDF