Table of Contents

Bogdan-Eusebiu PENIŞOARĂ (78758) - Connect Four

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Prezentarea proiectului pe scurt:

  • Proiectul meu este un joc ce se numeste Connect Four. Acesta va fi atat multiplayer (fie pe placuta mea, fie conectata cu a colegului) cat si singleplayer (voi implementa un bot). Optiunea de joc va putea fi aleasa din meniu.
  • Scopul este conectarea a patru discuri de aceeasi culoare pe linie, diagonala sau coloana.
  • Este un joc pe care l-am jucat in trecut pe telefon, si mi-a placut ideea.
  • Este util deoarece dezvolta capacitatea de atentie distributiva si de asemenea este relaxant pentru ambii jucatori.

Descriere generală

Hardware Design

Software Design

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.”.

Rezultate Obţinute

Ca rezultate, am avut multe bug-uri FIXME, 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.

Concluzii

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).

Download

penisoarabogdan_connect4.zip

TODO: Add README

Jurnal

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).

Bibliografie/Resurse

[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