Descrierea codului aplicaţiei (firmware):
Surse
Locul unde implementez meniul prinicipal alaturi de instantierea pin-urilor folositi, precum si a unor varabile de control
care permit fluidizarea jocului.
Functii:
setup() - aceasta initializeaza pin-urile pentru butoane cat si pentru led-uri ( pentru care am folosit input de pullup ); pregateste random seed-ul pentru generarea random a variabilelor din program, si apeleaza setup-urile jocurilor.
loop() - functia principala, care verifica tipul jocului urmand sa apeleze functiile necesare jocului selectat. De asemenea acesta, goleseste display-ul in momenetul in care jucatorul pierde la unul din jocuri, afisand un emoji corespunzator, urmand ca dupa un delay de cateva secunde sa revina in meniul principal
changeGame() - se ocupa se selectarea jocului
drawEnd(), drawBird(), drawSimon(), drawBreakout() - functii de afisare
Sursa ce contine implementarea mecanicilor referitoare la primul joc, Flappy Bird. Aici se folosesc algoritmi de deboucing pentru
butoane astfel incat sa preiau doar semnalele importante.
Functii:
SetupGameF() - functia care initializeaza structura Bird, varabilele jocului, precum si pozitia initiala a jucatorului
moveBird() - se ocupa de controlul personajului, astfel ca prin algoritmi de deboucing se efectueaza corect citirea semnalelor provenite
din apasarea butonului de jump
switchWall(), doWall() - se ocupa de generarea random a obstacolelor
adjustGameDifficultyF() - mareste sau scade dificultatea jocului in functie de un anumit timp
checkCollisionF() - verifica coliziunea cu obstacolele, aceasta decide finalul jocului
Implementeaza jocul Breakout, folosind algoritmi pentru dinamica mingii, bouncing random din pereti si obstacole, selectarea la intamplarea a unuia din cele 3 nivele.
Functii:
setupGameB() - initializeaza matricea corespunzatoarea fiecarui nivel selectat random, pozitia initiala a jucatorului si a mingii, precum si alte variabile ce tin de directia mingii
drawLevel() - deseneaza nivelul selectat anterior
movePlayer() - functia ce se ocupa de controlul jucatorului, precum si a schimbarii directiei mingii in momentul in care acesta loveste
mingea cu una din cele 3 puncte
drawPlayerB() - deseneaza pozitia jucatorului pe tot parcusul jocului
moveBallB() - manevreaza mingea in functie de directie. Verifica modul in care aceasta face bounce in urma a 3 tipuri de coliziune:
player, wall si block.
checkBlockBallCollision() - verifica daca mingea are coliziune cu unul din obstacole, moment in care mingea poate ricosa stanga sau dreapta.
checkWallBallCollision() - verifica daca mingea are coliziune cu peretii astfel: daca este vorba de unul dintre peretii stanga, dreapta, atunci mingea va ricosa in directia opusa, in schimb daca loveste peretele de sus va ricosa random.
checkPlayerBallCollision() - verifica punctul in care mingea are coliziune cu jucatorul, moment ce decide directia in care mingea se deplaseaza, astfel ca daca mingea atinge punctul din stanga al jucatorului, va ricosa in stanga; daca loveste punctul din mijloc ricoseaza pe directie dreapta; iar daca loveste punctul din dreapta va ricosa in dreapta
Aceasta sursa contine implementarea jocului Simon Says, prin declararea a doua array-uri, unul care retine alegerile random ale jocului, iar celalalt alegerile jucatorului.
Functii:
setupGameS() - initializeaza varabilele caracteristice acestui joc, precum si a array-urilor ce retin alegerile jocului generate random
startCounting() - afiseaza numaratoarea ce reprezinta start-ul jocului
drawChoices() - afiseaza alegerile jocului prin sageti in 4 directii
drawPlayerChoices() - afiseaza alegerile jucatorului
playGameS() - functia principala in care sunt apelate celalte functii necesare jocului, locul unde se verifica daca jucatorul poate continua sau s-a terminat jocul. Aici se verifica ce buton este apasat, si daca prin apasarea butonului de pe pin-ul 8, se schimba directia unui din cele 2 butoane care initial sunt dreapta, sus.
makePlayerChoices() - verifica daca jucatorul a ales corect si poate continua, altfel jocul se incheie.
checkGameState() - se ocupa de aprinderea led-urilor, cel rosu pentru semnalizarea faptului ca este timpul jocului de alegere, si cel verde care indica faptul ca functionalitatea unui buton a fost schimbata.
drawL(), drawR(), drawU(), drawD() - functiile care se ocupa de afisarea alegerilor