This is an old revision of the document!


Tic-Tac-Toe

Introducere

Proiectul consta in implementarea clasicului joc X si 0 pe un LCD cu touchscreen. Jocul se poate juca atat intre 2 jucatori(pvp), cat si intre un utilizator si un AI, avand 3 dificultati: Easy, Medium si Impossible.

Descriere generală

Jucatorii se pot folosi atat de butoane, cat si de touchscreen-ul de pe LCD pentru partea de input. Display-ul LCD-ului(SPI) este componenta principala si esentiala pentru partea de output, afisandu-se in mod fluent ecranul corespunzator momentului curent din cadrul jocului. Este folosit un buzzer pentru partea de sunet a jocului, aceasta fiind utila in anumite cazuri(ex: cand o partida ajunge la final, la o mutare incorecta).

Hardware Design

Listă de piese:

  • Arduino MEGA 2560
  • LCD cu touchscreen(SPI) - ILI9341, XPT2046
  • Translator de nivel bidirectional cu 8 canale (folosit pentru conectarea LCD-ului)
  • 10 Butoane
  • 1 Buzzer
  • 1 Breadboard principal
  • Cate un breadboard de mici dimensiuni pentru amplasarea butoanelor asociate fiecarui jucator
  • Fire de legătură

Schemă electrică:

Software Design

Mediul de dezvoltare: Arduino IDE

Biblioteci externe utilizate:

  • Ucglib.h : pentru LCD
  • XPT2046.h : pentru touchscreen

Pentru implementarea algoritmului folosit in cazul modului de joc cu bot-ul, dificultatea Impossible, m-am folosit de urmatoarea strategie de joc:

  • Daca bot-ul poate castiga intr-o mutare, mutarea castigatoare va fi facuta;
  • Daca adversarul poate castiga intr-o mutare, bot-ul va bloca, alegand campul respectiv;
  • Se va crea un scenariu in care bot-ul sa aibe 2 variante de a castiga, daca acest lucru este posibil;
  • Daca jucatorul ar putea, la urmatoarea mutare, un scenariu care-i va oferi doua variante de a castiga, bot-ul va incerca sa il opreasca;
  • Daca campul din mijloc este liber, bot-ul va alege acest camp pentru a muta;
  • Daca un colt opus unui simbol al adversarului este liber, botul va alege acel colt;
  • Se va alege orice colt liber, daca acesta exista;
  • Se va alege orice camp liber ramas.

Astfel, folosind aceasta strategie, bot-ul nu va putea fi invins in niciun scenariu.

Pentru dificultatea Medium, bot-ul va incerca mai intai sa castige, daca acest lucru este posibil, iar altfel, daca adversarul poate castiga intr-o mutare, acesta va fi blocat, iar daca nu, se va face o mutare random.

Dificultatea Easy consta doar in mutari random.

Sunt implementate mai multe

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

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

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

pm/prj2022/agmocanu/tic_tac_toe.1653668343.txt.gz · Last modified: 2022/05/27 19:19 by cconstantinescu1401
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0