Table of Contents

Ionuţ-Marian RADU - Joc X si O pe LCD

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Prezentarea pe scurt a proiectului vostru:

  • Proiectul este reprezentat de jocul X si O pe LCD. Acesta va consta in invingerea unui jucator AI prin alinierea a 3 simboluri de acelasi fel, pe linie, coloana sau diagonala.
  • Scopul jocului este unul distractiv si de ocupare a timpului liber.
  • M-am gandit ca un joc este cel mai potrivit pentru un proiect, deoarece ma va ajuta si pe mine sa lucrez la el si sa-l testez.
  • Pe mine ma va ajuta sa invat cum sa lipesc piesele si sa programez pe un microprocesor, iar pe ceilalti, sa se joace acel joc si sa invete sa castige de fiecare data.

Descriere generală

Schema bloc a proiectului:


Hardware Design

Pe langa placa de baza, am mai cumparat LCD-ul [1] si firele pentru conexiune.

[1]: http://www.ebay.com/itm/5V-12864-LCD-Display-Module-128x64-Dots-Graphic-Matrix-LCD-Blue-Backlight-/200940399471?ssPageName=ADME:X:RTQ:US:1123

Schema electrica:

schema_electrica.jpg

Software Design

Descrierea codului aplicaţiei (firmware):

  • librării şi surse 3rd-party:
    1. libraria de LCD din laborator (cu mici modificari)
    2. euristica pentru minimax
    3. generarea de intreruperi (din laborator)
  • (etapa 3) surse şi funcţii implementate

Rezultate Obţinute

Am atasat cateva poze + link catre un video [1] cu jocul.

img_20140521_190741.jpg img_20140523_231056.jpg img_20140523_231136.jpg

[1]: https://www.youtube.com/watch?v=OdjZKE4fIcc&feature=youtu.be

Concluzii

Initial, ma gandisem sa folosesc qTouch-ul ca input, insa nu am reusit sa il fac sa functioneze, probabil nu am lipit bine rezistentele acelea mici.

Am folosit butonul user pentru input. Atunci cand este randul jucatorului, simbolul lui (X) se va deplasa pe fiecare patratica libera, iar cand acesta doreste sa o selecteze, apasa pe buton.

Castigarea jocului consta in obtinerea a 3 puncte de catre unul dintre jucatori.

Initial, am implementat minimax full tree, dar nu am reusit sa castig niciodata :D asa ca i-am pus un nivel pana la care sa faca verificarea.

A fost un proiect fun, am invatat cum sa lipesc niste piese, cum sa folosesc intreruperile externe si cum sa fac debug folosind doar un buton si un LED :D

Download

O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).

Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse