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:32]
anca_maria.colacel [Hardware Design]
pm:prj2024:alucaci:anca_maria.colacel [2024/05/21 15:02] (current)
anca_maria.colacel [Rezultate Obţinute]
Line 79: 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 91: 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 99: 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 110: 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 129: Line 146:
  
 ===== Download ===== ===== Download =====
 +
 +{{:​pm:​prj2024:​alucaci:​proiect_pm.zip|}}
  
  
pm/prj2024/alucaci/anca_maria.colacel.1716229965.txt.gz · Last modified: 2024/05/20 21:32 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