This is an old revision of the document!


Tic-Tac-Toe on LEDs

Introducere

Proiectul constă în implementarea unuia dintre cele mai cunoscute jocuri ale copilăriei, și anume: X și 0. Deseori, ne putem confrunta cu momente de plictiseală și lipsă de motivație, de aceea am ales să realizez un joc simplu și distractiv, potrivit pentru a te relaxa în timpul liber.

Ideea de bază este cea cunoscută de către toată lumea, existența a 2 jucători, ce vor fi reprezentați prin LED-uri de 2 culori diferite - roșu și verde, ce își realizează mutările alternativ pe cele 9 spații disponibile. Contrar jocului clasic, în cadrul proiectului gameplay-ul se va desfășura împotriva plăcuței Arduino. Scopul jocului este ca jucătorul să marcheze 3 LED-uri de aceeași culoare fie pe linie, coloană sau diagonală, reușind astfel să învingă plăcuța.

Consider că proiectul este util, deoarece constituie un mod distractiv de petrecere a timpului liber, în special în momentele în care suntem singuri, nefiind nevoie de alți jucători disponibili pentru a participa la joc.

Descriere generală

În realizarea implementării, “tabla de joc” va fi simulată prin existența a 18 LED-uri, câte 1 LED roșu și unul verde pentru fiecare din cele 9 căsuțe. Culoarea roșie va reprezenta mutările jucătorului, iar cea verde pe ale computer-ului. Pentru deplasarea pe o anumită căsuță, jucatorul are la dispoziție 5 butoane, constituind mutările: stânga, dreapta, sus, jos, si butonul de OK, ce marchează poziția finală aleasă.

Jucătorul va realiza o mutare, apoi plăcuța își va alege mutarea în următoarea ordine: prima dată va încerca să selecteze cea mai buna poziție pentru a câștiga, apoi va căuta o poziție pentru a pune în dificultate adversarul, iar în final, dacă nu a reușit să facă o mișcare, va selecta o poziție random. Procesul se repetă până când unul dintre playeri câștigă, moment în care se afișează pe ecranul LCD câștigătorul și scorul curent și se aprinde și un LED cu culoarea respectivă. De asemenea, dacă jucătorul a câștigat sau a fost învins, vor porni melodii sugestive în funcție de rezultat.

Schema bloc:

Hardware Design

Lista de piese:

  • Arduino Mega 2560
  • 10 LED-uri roșii 5mm
  • 10 LED-uri verzi 5mm
  • 5 butoane tactile
  • rezistente
  • fire și cabluri
  • Modul Buzzer pasiv
  • breadboard 1660 puncte
  • breadboard 400 puncte
  • ecran LCD 1602
  • potențiometru

Schema electrica butoane + buzzer:

Schema electrica LED-uri:

Schema electrica ecran LCD:

Software Design

Mediu de dezvoltare: Arduino IDE Librării şi surse 3rd-party:

  • LiquidCrystal.h ⇒ LCD
  • pitches.h ⇒ melodii buzzer

Functia setup():

  • se seteaza pinii pentru LED-uri ca OUTPUT
  • se seteaza pinii pentru butoane ca INPUT
  • se seteaza pinul pentru buzzer ca OUTPUT
  • se porneste un joc de lumini
  • se sting LED-urile
  • se initializeaza diverse variabile

Cateva dintre functiile prezente in codul sursa:

Functia loop():

  • se cauta prima pozitie libera si se aprinde LED-ul respectiv, pozitie din care player-ul isi poate incepe mutarea
  • se verifica ce buton este apasat si astfel se efectueaza una dintre mutarile posibile; pozitia curenta pe care se afla player-ul este marcata printr-un blink al LED-ului, care ramane aprins cand s-a apasat butonul OK

Functia arduinosTurn():

  • verifica posibilitatile de mutare dupa 3 criterii ⇒ o pozitie favorabila castigului, o pozitie ce pune in dificultate player-ul si o pozitie random

Functia checkGame():

  • verifica daca s-a ajuns la vreuna din combinatiile castigatoare si stabileste castigatorul

Mai exista de asemenea si alte functii, al caror nume este destul de sugestiv pentru comportamentul lor: initialise(), checkPossibilities(), checkBlockers(), randomPlay(), playPoss(), endGame(), endSongs().

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

  • 03.05.2023: Achizitionarea componentelor necesare
  • 06.05.2023: Crearea paginii de wiki a proiectului
  • 17.05.2023: Implementarea hardware a proiectului
  • 28.05.2023: Implementarea software a proiectului

Bibliografie/Resurse

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

Export to PDF

pm/prj2023/razvans/tic-tac-toe-on-leds.1685391051.txt.gz · Last modified: 2023/05/29 23:10 by stefania.dicu1506
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