Codul este scris in C, iar ca editor de text am folosit Visual Studio 2015. Nu am folosit un schelet de cod, ci am scris totul de la 0, insa am adaugat si parti de la alti colegi din ani mai mari, unde a fost cazul (mai exact, partea de logica a Joystick-ului, pe care am imbinat-o cu ce am gasit pe brainy-bits.com [1]). In rest, m-am folosit de laboratorul 0 pentru initializarea si folosirea buzzer-ului si laboratorul 5 pentru ADC.
Ca structura principala este o matrice de 7×7 (unde una din liniile din primul 7 reprezinta linia unde este pozitionata bila ce va fi pusa de jucatorul curent), in care am retinut pozitia X si Y unde trebuiau desenate bilele, Player in care retin ce player detine bila respectiva, si Setted, in cazul in care bila de pe pozitia aceea din matrice trebuie desenata.
Bibliotecile folosite sunt cele ale LCD-ului ST7735, pe care le-am folosit de la un coleg din anii mai mari [2] (initial am folosit unul de pe git, insa nu era de foarte mare ajutor). Pentru aceasta m-am folosit de LCD.c/.h si GFX.c/.h.
Nu m-am folosit de algoritmi specifici. Mi-am creat functiile care sa faca fiecare cate un task (precum initializarea tablei de joc, desenarea liniilor, apoi desenarea punctelor, terminarea jocului etc), si le-am imbinat in main, intr-un while.
Ca mod de joc, fiecare jucator isi face tura, asteptand sa o termine celalalt jucator. Este un jucator RED si unul YELLOW. Cine reuseste sa conecteze 4 bile pe diagonala, linie sau coloana, castiga. Jucatorii muta bilele de pe linia de sus (linia 0) in stanga/dreapta cu joystickul. Cand si-au ales coloana pe care sa plaseze bila, apasa pe joystick in jos, si bila va ajunge pe prima pozitie, de jos in sus, care este libera. De asemenea, la apasarea joystickului in sus, buzzer-ul nu va mai scoate niciun zgomot (pana atunci, acesta va scoate sunete diferite, in mod continuu, pentru jucatorul RED si pentru cel YELLOW). La finalul jocului, pe ecran va fi afisat “I” (a castigat RED) sau “II” (a castigat YELLOW), iar dupa cateva secunde va fi afisat si textul “Player X won!!!” (unde X este RED sau YELLOW), “Press reset to play another game.”.
Ca rezultate, am avut multe bug-uri , cel putin initial. Dupa aceea, am inceput sa rezolv din ele (avand si norocul ca partea hardware a mers din prima), ajungand in final cu un numar foarte mic de bug-uri.
Mi-a facut placere sa lucrez la acest proiect, cu toate ca a fost destul de complicat uneori. Am invatat lucruri noi si interesante, si sunt foarte multumit de ceea ce am realizat, chiar daca din cauza timpului scurt nu am avut timp sa implementez tot ce am vrut (anume partea de conexiune prin bluetooth cu un coleg ce a avut acelasi joc).
TODO: Add README
06.05.2018 - Am adaugat schema electrica.
18.05.2018 - Am terminat partea hardware, si am inceput sa lucrez la cea software.
23.05.2018 - Am actualizat lista de piese, am terminat partea software (poate o sa mai lucrez inca putin totusi) si am finalizat pagina de wiki (in afara de README in arhiva).
[1]: https://www.brainy-bits.com/arduino-joystick-tutorial/
[2]: Proiect din anul trecut (de la Marcu Denis buzzer-ul, Andrei Botila bibliotecile pentru LCD si inca o persoana pentru joystick)
[3]: https://www.optimusdigital.ro/ro/
[4]: Laboratoarele 0 si 5
[5]: http://cs.curs.pub.ro/2017/pluginfile.php/35285/mod_resource/content/1/PM_Cheatsheet.pdf
Alte resurse precum StackOverflow si alte site-uri pentru anumite lucruri mai putin importante.
* Documentația în format PDF