Table of Contents

Alin-Emanuel CIOBANU - X si 0

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Jocul X si 0 pe o matrice 3×3 de led-uri. Se va putea juca human vs bot sau human vs human.

Descriere generală

Schema bloc

Hardware Design

Lista de piese:

  Piese - Pret
    
* placuta de baza PM 2014 si piesele trecute in lista de pe wiki - ~55 RON
* 9 LED-uri bicolore (rosu-verde) cu 3 pini (cu minus comun) - 9 RON
* 9 push-buttons - 4.5 RON
* 1 cablu USB - 5 RON
* 3 rezistente 1k - 0.12 RON
* 2 barete pini tata - ~3 RON
* 3 seturi cabluri interconectare mama-mama - 24 RON

Software Design

Descrierea codului aplicaţiei (firmware):

  • mediu de dezvoltare: Programmer's Notepad
  • librării: AVRlib
  • Pentru a implementa X si 0, nu folosesc niciun algoritm special si nicio structura de date in afara de matrice. Pentru a determina mutarea pe care trebuie sa o faca bot-ul am testat situatia in care se afla tabla de joc si am ales cea mai buna pozitie. Exemplu: botul joaca cu 0 si este la mutare. Daca exista 2 de 0 pe o linie, pozitia libera de pe linia aceea este aleasa pentru ca se castiga jocul. Altfel daca exista 2 X pe o line, pune 0 pe acea linie pentru ca se pierde jocul etc. Nu am folosit minimax pentru ca era prea intensiv.
  • Sursele proiectului se gasesc pe GitHub.Proiect_PM

Rezultate Obţinute

Am obtinut un joc de X si 0 functional. Se poat juca in 2 moduri: human vs human si human vs bot

How to play

Pentru a incepe jocul trebuie sa alegeti tipul de joc. 
* Pentru a alege modul **human vs human**, apasati unul din cele 3 butoane de pe prima coloana din stanga. Alegerea va fi confirmata de aprinderea, pe rand, a tuturor LED-urilor de culoare verde.
* Pentru a alege modul **human vs bot**, apasati unul din cele 3 butoane de pe ultima coloana (de la stanga la dreapta). Alegerea va fi confirmata de aprinderea, pe rand, a tuturor LED-urilor de culoare rosie.
* Daca apasati unul din butoanele de pe coloana din mijloc in momentul alegerii tipului de joc, programul va returna **eroare**.
* Utilizatorul va fi atentionat de **eroare** prin aprinderea, pe rand, a tuturor LED-urilor de culoare verde si a tuturor LED-urilor de culoare rosie astfel: se aprind intai toate LED-urile verzi, dupa care se sting si se aprind LED-urile rosii. 
* [eroare]Dupa aprinderea tuturor LED-urilor rosii si verzi, se aprinde LED-ul corespondend butonului apasat gresit.
* Pentru a reseta starea jocului, apasati butonul reset (de exemplu, la sfarsitul unui joc sau in caz de eroare)

Filmulet cu proiectul functional: watch

Surse

Downloadable at GitHub. Proiect_PM

Jurnal

  • N/A din cauza modului de lucru haotic.

Bibliografie/Resurse

Resurse software

  • Laborator 0 PM