Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2024:alucaci:anca_maria.colacel [2024/05/20 21:31]
anca_maria.colacel
pm:prj2024:alucaci:anca_maria.colacel [2024/05/21 15:02] (current)
anca_maria.colacel [Rezultate Obţinute]
Line 61: Line 61:
  
 {{:​pm:​prj2024:​alucaci:​poza_cablaj.jpg?​500|}} {{:​pm:​prj2024:​alucaci:​poza_cablaj.jpg?​500|}}
- 
-Butoanele sunt folosite pentru a permite miscarea in cadrul tablei de joc, 3x3. Astfel, miscarea se poate realiza sus, jos, stanga, dreapta, iar ok pozitioneaza simbolul. Butonul de start te introduce din pagina initiala de welcome in cadrul jocului, butonul de exit apasat o data te scoate din joc intr-o pagina de exit cu mesajul Good Bye printat pe ecran. In acest moment se face si reinitializarea interna a jocului. Daca se mai apasa o data pe butonul de exit vei putea intra din nou in pagina initiala de welcome si apoi intr-o noua runda de joc. 
-Buzzerul emite sunete la inceputul jocului, la finalul acestuia, la castig/​remiza/​pierdere si cand e randul jucatorului. 
- 
- 
-  
  
  
Line 72: Line 66:
  
 Inainte de implementarea propriu zisa a software-ului pentru proiect, am testat daca asamblarea hardware este facuta corect folosind coduri simple, dupa cum se observa in urmatoarea imagine. Inainte de implementarea propriu zisa a software-ului pentru proiect, am testat daca asamblarea hardware este facuta corect folosind coduri simple, dupa cum se observa in urmatoarea imagine.
 +
 +Butoanele sunt folosite pentru a permite miscarea in cadrul tablei de joc, 3x3. Astfel, miscarea se poate realiza sus, jos, stanga, dreapta, iar ok pozitioneaza simbolul. Butonul de start te introduce din pagina initiala de welcome in cadrul jocului, butonul de exit apasat o data te scoate din joc intr-o pagina de exit cu mesajul Good Bye printat pe ecran. In acest moment se face si reinitializarea interna a jocului. Daca se mai apasa o data pe butonul de exit vei putea intra din nou in pagina initiala de welcome si apoi intr-o noua runda de joc.
 +Buzzerul emite sunete la inceputul jocului, la finalul acestuia, la castig/​remiza/​pierdere si cand e randul jucatorului.
 +
  
 {{:​pm:​prj2024:​alucaci:​poza_lcd_functional.jpg?​500|}} {{:​pm:​prj2024:​alucaci:​poza_lcd_functional.jpg?​500|}}
Line 81: Line 79:
 Am inceput prin a defini macro-uri pentru butoane, buzzer, precum si pentru CPU si HUMAN, STANGA, DREAPTA, SUS, JOS, OK, EXIT si asa mai departe. Am creat o structura numita celula prin care sa reprezint tabla de joc, ca o matrice de astfel de celule. Am vrut sa am un cod cat mai modular, astfel am implementat cate o functie pentru fiecare functionalitate dorita. Le voi descrie pe fiecare mai departe. Am inceput prin a defini macro-uri pentru butoane, buzzer, precum si pentru CPU si HUMAN, STANGA, DREAPTA, SUS, JOS, OK, EXIT si asa mai departe. Am creat o structura numita celula prin care sa reprezint tabla de joc, ca o matrice de astfel de celule. Am vrut sa am un cod cat mai modular, astfel am implementat cate o functie pentru fiecare functionalitate dorita. Le voi descrie pe fiecare mai departe.
  
-** Functii ​implementate in cadrul proiectului **+** Functiile ​implementate in cadrul proiectului ​** 
 + 
 +**-impartire pe sectiuni-** 
 + 
 +**Sectiunea 1. Butoane**
   * functie pentru configurarea pinilor pentru butoane, am lucrat cu registri ca la laborator pentru setarea directiei ca si input si activarea rezistei de pull-up   * functie pentru configurarea pinilor pentru butoane, am lucrat cu registri ca la laborator pentru setarea directiei ca si input si activarea rezistei de pull-up
-  * functie pentru a verifica daca un buton este apasat sau nu, de asemenea cu registri ca la laborator+  * functie pentru a verifica daca un buton este apasat sau nu, de asemenea cu registri ca la laborator ​pentru verificarea starii butoanelor folosite
   * functie prin care se face mutarea, in functie de tipul de buton apasat (SUS, JOS, STANGA, DREAPTA)   * functie prin care se face mutarea, in functie de tipul de buton apasat (SUS, JOS, STANGA, DREAPTA)
   * functii prin care se face hightlight la celula unde este cursorul   * functii prin care se face hightlight la celula unde este cursorul
 +
 +**Sectiunea 2. Printare pe ecranul LCD (protocol SPI, folosire SPI.h si TFT.h)**
   * functie de printare a paginii initiale cu mesajul sugestiv Welcome   * functie de printare a paginii initiale cu mesajul sugestiv Welcome
   * functie prin care desenez floricelele care apar pe ecranul initial   * functie prin care desenez floricelele care apar pe ecranul initial
Line 93: Line 97:
   * functie cu informatii pentru a tine scorul   * functie cu informatii pentru a tine scorul
   * functie pentru desenarea simbolurilor folosite, am folosit SMILEY FACE pentru X, care este simbolul jucatorului si SAD FACE pentru 0, simbolol CPU-ului, se alege in mod random cine incepe jocul   * functie pentru desenarea simbolurilor folosite, am folosit SMILEY FACE pentru X, care este simbolul jucatorului si SAD FACE pentru 0, simbolol CPU-ului, se alege in mod random cine incepe jocul
 +
 +**Sectiunea 3. Zgomote emise de buzzer (folosesc functia tone() )**
 +  * functii pentru a emite sunete diferite:
 +  - cand muta jucatorul
 +  - cand incepe jocul
 +  - cand este castig
 +  - cand este remiza
 +  - cand este pierdere
 +
 +**Sectiunea 4. Logica jocului**
   * functie pentru initializarea matricei, care reprezinta tabla de joc, practic cand se face o mutare simbolul apare atat in matrice cat si pe tabla de pe ecran in mod grafic   * functie pentru initializarea matricei, care reprezinta tabla de joc, practic cand se face o mutare simbolul apare atat in matrice cat si pe tabla de pe ecran in mod grafic
   * functie pentru mutarea CPU-ului, am vrut sa implementez algoritmul MINIMAX, insa dura destul de mult la inceput cand tabla era goala si trebuia sa se treaca prin toate posibilitatile,​ astfel am gandit in felul urmator:   * functie pentru mutarea CPU-ului, am vrut sa implementez algoritmul MINIMAX, insa dura destul de mult la inceput cand tabla era goala si trebuia sa se treaca prin toate posibilitatile,​ astfel am gandit in felul urmator:
Line 101: Line 115:
   * functie pentru a verifica daca e tabla plina   * functie pentru a verifica daca e tabla plina
   * functie pentru a verifica daca jocul a fost castigat/​pierdut/​remiza   * functie pentru a verifica daca jocul a fost castigat/​pierdut/​remiza
-  * functii pentru a emite sunete diferite: 
-  - cand muta jucatorul 
-  - cand incepe jocul 
-  - cand este castig 
-  - cand este remiza 
-  - cand este pierdere 
   * in setup() se initializeaza jocul   * in setup() se initializeaza jocul
   * in loop() este logica jocului in functie de butoanele apasate   * in loop() este logica jocului in functie de butoanele apasate
Line 112: Line 120:
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
 Am reusit sa implementez cu succes ceea ce mi-am propus, ba chiar am incercat sa aduc si functionalitati suplimentare in ceea ce priveste partea grafica, cu mai multe pagini si un mod cat mai placut si interactiv de a interactiona cu jocul. Am reusit sa implementez cu succes ceea ce mi-am propus, ba chiar am incercat sa aduc si functionalitati suplimentare in ceea ce priveste partea grafica, cu mai multe pagini si un mod cat mai placut si interactiv de a interactiona cu jocul.
 +Mai jos am atasat cateva imagini prin care sa se observe functionalitatea jocului meu.
 +
 +
 +{{:​pm:​prj2024:​alucaci:​welcome.jpg?​400|}} ​  ​{{:​pm:​prj2024:​alucaci:​joc.jpg?​400|}}
 +{{:​pm:​prj2024:​alucaci:​congrats.jpg?​400|}} ​ {{:​pm:​prj2024:​alucaci:​failed.jpg?​400|}}
 +{{:​pm:​prj2024:​alucaci:​good_bye.jpg?​400|}}
 +
  
-**VIDEOCLIP CU FUNCTIONALITATEA** 
  
  
  
 ===== Concluzii ===== ===== Concluzii =====
-Mi-a placut foarte mult sa lucrez la acest proiect. M-a ajutat sa inteleg mult mai bine notiunile folosite in timpul laboratoarelor si a fost distractiv de implementat.+Mi-a placut foarte mult sa lucrez la acest proiect. M-a ajutat sa inteleg mult mai bine notiunile folosite in timpul laboratoarelor si a fost distractiv de implementat. ​Am inteles cum sa leg componentele hardware, sa caut in datasheet dupa informatii si sa conectez pinii dupa schemele componentelor necesare. M-am familiarizat mai bine cu lucrul cu registri, am invatat sa lucrez cu buzzere, atat active cat si pasive si am inteles diferenta dintre ele (am cumparat de ambele si am ales sa-l folosesc pe cel pasiv pentru ca se auzea mai bine). 
 +A fost un proiect interesant si sper sa mai lucrez si in viitor cu Arduino. Acest curs a fixat niste baze importante care merita consolidate. =)
  
  
Line 131: Line 146:
  
 ===== Download ===== ===== Download =====
 +
 +{{:​pm:​prj2024:​alucaci:​proiect_pm.zip|}}
  
  
pm/prj2024/alucaci/anca_maria.colacel.1716229919.txt.gz · Last modified: 2024/05/20 21:31 by anca_maria.colacel
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