Autorul poate fi contactat la adresa: Login pentru adresa
Jocul presupune controlarea, cu ajutorul accelerometrului, catre zona verde a unei buline ce este afisata pe LCD.
Scopul jocului este sa ajungi la finish-ul de la ultimul nivel murind de cat mai putine ori.
M-am gandit .. cat de greu poate fi sa implementezi The World's Hardest Game pe LCD
E util pentru ca e distractiv si interesant.
Bila/Patratul, controlat de Player, trebuia sa ajunga in zona verde (iesirea). Dar, in drum pot exista mai multe obstacle: bile/patrate care se misca si pe care, daca le atingi, mori si esti respawnat la inceputul nivelului, sau diverse obiecte statice.
Schema bloc
Lista piese suplimentare:
Scheme electrice:
ReadMe
Mediu de dezvoltare:
dar pentru scrierea codului am folosit Visual Studio 2017 + GitHub(in caz ca nu-mi mai mergea ceva sa dau repede Revert).
Librării şi surse 3rd-party:
Am combinat ce am gasit pe GitHub + ce am gasit in proiectele din anii trecuti si am obtinut:
Spre exemplu: in lcd.c am modificat afisarea caracterului astfel incat sa-mi scrie pe orizontala (Am aplicat formula de rotire a imaginii)
Algoritmi
Mi-am creat 2 vectori:
Toate aceste caracteristici pot fi variate. De aceea veti vedea ca fiecare nivel difera de cel precedent.
In aceste functii am loop-ul fiecarui nivel si pot decide cati si ce fel de inamici o sa am, comportamentul acestora ( sa mearga in linie, in cerc, sa se plimbe de la un punct la altul etc. ), forma player-ului, viteza sa, dimensiunea etc.
Deoarece matricile sunt destul de mari, le-am pus in memoria read-only a programului, deoarece nu am nevoie decat sa le accesez, nu sa le si modific.
Surse şi funcţii implementate
Definitie tileMap: matrice de 0 si 1 ( 0 = gol si 1 = block/tile) in care fiecare tile are o anumita lungime Detectarea coliziunilor
Pentru coliziunea dintre dreptunghi si tileMap m-am uitat intre ce indexi se incadreaza player-ul si daca la acei indexi se afla un block ⇒ coliziune. Spre exemplu: player-ul (dreptunghi) e intre (45, 45) si (55, 55) iar tileSize-ul = 20 ⇒ verific doar perechile (2, 2), (2, 3), (3, 2) si (3, 3). E muuult mai eficient asa decat sa verific coliziunea player-ului cu cele 11 * 16 patrate din matrice.
Un joc amuzant si greu de batut.
Watch Beginner's version:
A little harder level: (note: I played bad intentionally)
A fost greu … mai ales partea cu hardware-ul. Gaseam pe net 10 moduri in care sa-mi conectez accelerometrul + libraria pe care sa o downloadez ca sa-mi mearga si niciuna nu mergea. Si debugging-ul, la fel. Dupa ce am facut sa-mi mearga accelerometrul, nu-mi dadeam seama ce date primesc de la el (in ce interval) plus ca mi se bloca intr-una jocul si nu intelegeam de ce.
All in all … a fost greu, dar s-a meritat. Am cu ce ma lauda la cei 2 prieteni.
Luni 14 Mai - cumparat toate piesele
Vineri 18 Mai - terminat in sfarsit tema la SO (si pe Windows)
Sambata 20 Mai - 7 ore de lipit si conectat piesele
Luni 22 Mai - mi-am facut lcd-u sa afiseze ce vreau
Marti 23 Mai - mi-am facut si accelerometrul sa-mi dea valori corecte
23-25 Mai - codat la greu, modularizat cod, facut 3 nivele usoare si 1 hardcore
25 Mai - PM Fair
Initial player-ul era o pensula pe ecran
Dar dupa ce sterg mereu vechea sa pozitie … It becomes an eraser
Dupa transportul proiectului de la PM Fair inapoi acasa am realizat ca am cam stricat LCD-u …
Documentatia