Table of Contents

Andreea-Carmen IFRIM (25540) - Ultimate Tic-Tac-Toe

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Proiectul consta in implementarea jocului Ultimate Tic-Tac-Toe pe o placuta ATMega, folosind ca display un LCD.

Descriere generală

Ultimate Tic-Tac-Toe transforma clasicul X si 0 intr-un joc de strategie. El consta intr-un joc mare de X si 0, in care fiecare casuta reprezinta de fapt un alt joc. Regulile clasice se aplica atat la nivelul jocurilor mici, cat si la nivelul jocului mare. Dificultatea vine insa din faptul ca mutarea intr-o casuta a jocului interior il obliga pe oponent sa mute in aceeasi casuta a jocului mare.

Astfel, teoretic, proiectul va folosi 9 matrici de 3×3, pentru a retine miscarile utilizatorului, fiecare celula continand caracterul ‘X’ sau caracterul ‘0’. Interactiunea utilizatorului cu aplicatia se va realiza prin intermediul a patru butoane (arrow keys) folosite pentru selectarea unei casute si a unui buton OK ce va plasa caracterul in celula selectata. In momentul in care cursorul se afla pe o celula din matrice, acesta va fi marcat prin ingrosarea celulei respective, iar la apasare pe OK, se va afisa caracterul 'X' sau caracterul '0', in functie de jucator. Jocul se termina atunci cand au fost castigate 3 mini-jocuri de X si 0.

Schema bloc

Hardware Design

Schema electrica

Componente specifice

Software Design

Initial, pentru proiect am vrut sa folosesc un LCD de 3,6 inch color. L-am testat pe Arduino UNO si am fost foarte incantata de felul in care merge si in care arata.

Link video

Desi parea perfect, acest LCD mi-a creat totusi multe probleme intrucat nu am reusit sa gasesc o biblioteca pentru el compatibila cu AVR-GCC. Dupa mult timp pierdut cautand una, am decis sa incerc portarea celei de Arduino. Acest lucru insa nu a fost simplu si m-am blocat la rescrierea catorva comenzi specifice Arduino pentru care nu am gasit un echivalent. Apoi, impreuna cu asistentul de laborator, am incercat scrierea de la 0 a unor noi functii pentru acest LCD, insa nici acest lucru nu a dus la rezultate satisfacatoare. Dupa mai mai multe incercari, am reusit doar aprinderea LCD-ului, insa nu am putut afisa nimic pe el.


Am decis inlocuirea LCD-ului cu unul nou, insa timpul fiind foarte scurt, singurul pe care l-am gasit a fost un LCD 1602 cu interfata I2C. Comunicarea prin I2C a ingreunat si de aceasta data lucrurile, dar din fericire am reusit sa gasesc o biblioteca potrivita si cu putine modificari a devenit functionala. Dimensiunea acestui LCD nu mi-a permis insa realizarea jocului in varianta originala. M-am adaptat rapid si am incercat realizarea unui nou tip de X si 0, ce foloseste o matrice liniarizata. Acest lucru sporeste dificultatea jocului clasic, apropiandu-se de Ultimate Tic-Tac-Toe. De asemenea, jocul permite atat o varianta single player, cat si una player vs. player.


Pentru scrierea software-ului am folosit Programmer's Notepad, AVR-GCC pentru compilare si Bootloader-ul pentru a incarca programul pe placuta.

Rezultate Obţinute

Am reusit sa implementez o noua varianta de X si 0, obtinand un joc interactiv, care iti solicita atentia si gandirea.

Concluzii

Proiectul a fost unul interesant si mi-a facut placere sa lucrez la el. Am invatat lucruri noi, iar satisfactia de a vedea fizic rezultatele muncii a fost mai mare ca de obicei. Cu toate aceastea, sunt dezamagita din cauza problemelor avute cu LCD-ul si mi-ar fi placut sa aleg un proiect mai complicat din punct de vedere hardware.

Download

Arhiva contine codul pentru jocul de X si 0 si biblioteca folosita pentru LCD-ul cu I2C. De asemenea, ea contine si biblioteca Arduino pentru LCD-ul color (varianta nemodificata) si biblioteca scrisa de mine pentru acelasi LCD.

ultimate_tic-tac-toe.zip

Bibliografie/Resurse