This is an old revision of the document!
Autor : Dragos Cristache
Acest proiect va implementa tic tac toe intr-un mod interactiv, jucatorii fiind implicati fizic pentru a realiza mutarile dorite.
Tabla de joc va fi simulata in aer, iar 3 senzori ultrasonic vor genera pozitia unde jucatorul curent va dori sa faca mutarea(fiecare senzor se va folosi pentru o coloana din tabla de joc 3×3), iar cu ajutorul unui lcd(128*64) se vor afisa mutarile anterioare ale jucatorilor si cine este la mutare. La finalul jocului se va afisa castigatorul printr-un joc de lumini si scorul de la ultima resetare a placutei. Ulterior se va reveni la starea initiala de unde se poate incepe un joc nou prin accesarea in zona 1 a tablei de joc(se va pozitiona mana in primul patratel virtual din stanga sus). Dupa ce se va respecta aceasta regula pentru a incepe jocul, se va afisa tabla de joc pe lcd, iar player 1(O in cazul de fata) va trebui sa faca prima mutare. Pe ecranul lcd se vor afisa informatii despre starea curenta a jocului si alte animatii(jucatorul care trebuie sa mute, scorul…)
https://ardushop.ro/ro/home/29-placa-de-dezvoltare-uno-r3.html?search_query=arduino+uno&results=242
https://hobbymarket.ro/ecrane-lcd-tft-oled/display-lcd-12864-128x64-albastru-5v--p-606.html
Pentru afisajul jocului pe lcd am folosit biblioteca u8glib. link→https://www.arduino.cc/reference/en/libraries/u8glib/ Pentru determinarea pozitiei mutarii jucatorilor am folosit senzori ultrasonic. In functie de distanta fata de senzor am setat 3 praguri care reprezinta limitele pentru cele 3 patratele din coloana respectiva. Distanta am calculat-o folosind formula fizica : v(m/s) = d(m) / t(s). Astfel se va genera o unda si se va calcula timpul pana cand aceasta se intoarce la senzor. Se va folosi viteza sunetului si se va lua in calcul faptul ca unda a parcurs distanta dus-intors pentru a rezulta distanta dorita. Mai multe detalii despre calcul si implementare se gasesc la link→https://howtomechatronics.com/tutorials/arduino/ultrasonic-sensor-hc-sr04/
Pentru retinerea mutarilor am folosit un vector de lungime 9 initializat cu un numar diferit de 0 si 1 care vor reprezenta mutarile celor doi jucatori 0 si 1 : X si 0. Am implementat cateva functii pentru verificarea castigatorului comparand mutarile actuale cu configuratiile castigatoare, resetarea tablei de joc si a mutarilor in cazul finalizarii jocului, randarea paginilor pe lcd.
1.tic_tac_toe_cs_open_courseware_.pdf
2.Demo Video + cod → pm-1-tictactoe.zip