Implementarea jocului X si 0 cu 2 jucatori reprezentati de cate o culoare diferita. Pozitia se poate alege prin intermediul a 5 butoane, dintre care 4 de selectare a pozitiei si unul de confirmare. La sfarsitul jocului se va afisa castigatorul sau “DRAW” in caz de remiza.
Jocul va fi transpus pe o matrice 8×8 de leduri. Pe ecranul LCD va fi afisat scorul si atunci cand se termina un joc se va afisa castigatorul. Mutarile se vor face cu cele 2 telecomenzi cu infrarosu. Un jucator poate folosi telecomanda doar cand este randul sau.
Lista de piese:
Schema electrica
| Ecran LCD | Arduino UNO |
|---|---|
| VSS | GND |
| VDD | 5V |
| V0 | GND |
| RS | 12 |
| RW | GND |
| E | 11 |
| D4 | 6 |
| D5 | 5 |
| D6 | 4 |
| D7 | 3 |
| A | 3.3V |
| K | GND |
| Senzor IR | Arduino UNO |
| Power | 5V |
| GND | GND |
| Out | 8 |
| Matrice Led | Arduino UNO |
| VCC | 5V |
| GND | GND |
| DIN | 7 |
| CS | 5 |
| CLK | 6 |
Descrierea codului aplicaţiei (firmware):
In urma implementarii proiectului am folosit urmatoarele functii:
Se folosesc butoanele de la 1 la 9 de pe telecomanda si butonul OK pentru inceperea unui joc. Fiecare mutare valida (pe pozitii care nu au fost folosite) incrementeaza numarul de mutari totale si se modifica variabila start (poate avea 3 valori: 0 cand nu a inceput jocul, 1 daca urmeaza jucatorul 1 si 2 daca urmeaza jucatorul 2). Functia checkWin se apeleaza dupa ce numarul total de mutari trece de 5 (nu se poate castiga pana atunci). La sfarsitul unui joc se afiseaza pe LCD castigatorul sau “DRAW” in caz de remiza si se reseteaza matricea de LED-uri. De asemenea, se tine cont si de scor, care va fi afisat in timpul jocului. Am ales un model pentru X si unul pentru 0, modele care se vor afisa pe matrice in functie de inputul primit de la telecomanda, pe pozitia corespunzatoare. Inputul de la telecomanda este prelucrat intr-un switch cu toate codurile de care avem nevoie de la ea.