Table of Contents

Ioan-Alexandru CHIRIȚĂ (66976) - Brick Race pe LCD

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Este un joc pe LCD cu masini. Scopul este de a deplasa o masinuta (realizata din pixeli) stanga-dreapta astfel incat sa se evite celelalte masini, cu scopul de a le depasi (masinile se deplaseaza in aceeasi directi ca si masina playerului, doar ca viteza acestuia din urma este mai mare). De asemenea, un alt lucru antrenant este obtinerea unui scor cat mai mare pentru avansarea la urmatorul nivel. Ideea de la care s-a pornit o reprezinta jocul Car Race existent odinioara pe consolele Brick Game. Este un mod de relaxare si de retraire a copilariei.

Descriere generală

Schema bloc

Ca si componente hardware principale sunt folosite doua butoane, o placa de baza, o placa de test si un LCD grafic (Nokia 5110). Jocul va afisa pe LCD-ul grafic o masina (formata din pixeli) pe care utilizatorul va trebui sa o deplaseze la stanga sau la dreapta pentru a evita alte masini si pentru a obtine un scor cat mai mare. O data cu cresterea scorului, utilizatorul va trece la un alt nivel. La fiecare 10 masinute depasite se vor intampla doua lucruri: se va avansa la urmatorul nivel, iar masinile isi vor mari viteza. Din schema bloc se observa ca microcontroller-ul preia informatii de la butoane, iar rezultatul este dat ca output pe LCD.

Hardware Design

Listă de piese

Schema electrica

electric_scheme_brick_race.sch

Software Design

Mediu de dezvoltare

Pentru implementare am folosit Programmers Notepad [WinAVR] si bootloader-ul de pe Wiki

Librării şi surse 3rd-party

Am folosit headerul si codul sursa pentru LCD-ul Nokia, disponibil pe internet (Il puteti gasi aici). De asemenea am folosit explicatii si cod (de la aceasta sursa ) pentru a rezolva problemelor legate de generarea unor numere random.

Algoritmi şi structuri

Am definit 3 structuri (pentru coordonatele unui punct, pentru piese, si pentru joc in sine). Am folosit enumeratii pentru a usura programarea. De asemenea am implementat cate o functie pentru fiecare actiune necesara: desenarea elementelor jocului, efectuarea miscarilor (stanga-dreapta), update-ul unor elemente ale jocului (scor, nivel, viteza masinior), tratarea coliziunilor cu peretii(in care nu se intampla nimic, ci doar nu lasa masina sa paraseasca panelul) si a coliziunilor cu celelalte autovehicule (caz in care playerul pierde jocul) si afisarea unor mesaje dragute si sugestive pentru utilizator.

Rezultate Obţinute

In final, am reusit sa implementez jocul asa cum imi propusesem in prezentarea din inceputul proiectului, astfel incat masina se deplaseaza stanga-dreapta prin actionarea butoanelor si pe tot parcursul jocului se mentine evidenta unui scor si a unui nivel. Jocul are in final 5 niveluri (deci scorul maxim este de 50 de puncte), lucru destul de greu de atins din cauza vitezei din ce in ce mai mare a celorlalte masini. :-)

Concluzii

In concluzie, proiectul a fost destul de interesant, fiind ceva nou pentru mine, dar am reusit in cele din urma sa imbin partea electronica cu cea software pentru a construi o replica a jocului ce mi-a facut atat mie, cat si altor persoane, copilaria mai frumoasa.

Download

Fisiere sursa : chirita_alexandru_331cb_proiect_pm.zip

Bibliografie/Resurse