This shows you the differences between two versions of the page.
pm:prj2021:abasoc:connect4 [2021/06/02 17:02] stefan.popa99 |
pm:prj2021:abasoc:connect4 [2021/06/02 19:38] (current) stefan.popa99 [Bibliografie/Resurse] |
||
---|---|---|---|
Line 33: | Line 33: | ||
\\ | \\ | ||
Jocul se poate afla în una din 3 stări: | Jocul se poate afla în una din 3 stări: | ||
- | * **Ecranul de început** - se selectează cu ajutorul butoanelor stânga-dreapta câte runde se vor juca și se apasă butonul de OK pentru a începe. | + | * **Ecranul de început** - se selectează cu ajutorul butoanelor stânga-dreapta câte runde se vor juca și se apasă butonul de OK pentru a începe. Butonul de reset face ca jocul să revină la ecranul de început și resetarea scorului. |
- | Butonul de reset face ca jocul să revină la ecranul de început. | + | * **Jocul propriu zis** - o matrice 6x7 de celule în care jucătorii dau drumul la jetoane, iar coloana curentă este colorată specific jucătorului care este la rând. Un jucător are la dispoziție 10 secunde pentru a pune un jeton, timp după care jetonul va fi pus pe coloana la care se află în momentul respectiv, sau următoarea coloană liberă în cazul în care coloana selectată este deja plină. Punerea jetonului în coloană are și o animație de cădere. |
- | * **Jocul propriu zis** - o matrice 6x7 de celule în care jucătorii dau drumul la jetoane, iar coloana curentă este colorată specific jucătorului care este la rând. Un jucător are la dispoziție 10 secunde pentru a pune un jeton, timp după care jetonul va fi pus pe coloana la care se află în momentul respectiv, sau următoarea coloană liberă în cazul în care coloana selectată este deja plină. | + | |
* **Ecranul de final** - Apare textul "Congrats Player X, Press any button to start", ale cărui culori se schimbă o dată pe secundă. | * **Ecranul de final** - Apare textul "Congrats Player X, Press any button to start", ale cărui culori se schimbă o dată pe secundă. | ||
\\ | \\ | ||
- | Arduino Slave se ocupă de ținutul scorului și al timer-ului de 10 secunde pentru timeout. El anunță master-ul atunci când a trecut timpul sau dacă jucătorul care a câștigat ultima rundă a câștigat și meciul. Scorul este ținut cu ajutorul a 2 LED-uri în format binar, iar atunci când un jucător câștigă meciul, LED-urile sale pâlpâie. | + | Arduino Slave se ocupă de ținutul scorului și al timer-ului de 10 secunde pentru timeout. El anunță master-ul atunci când a trecut timpul sau dacă jucătorul care a câștigat ultima rundă a câștigat și meciul. Scorul este ținut cu ajutorul a 2 LED-uri în format binar, iar atunci când un jucător câștigă meciul, LED-urile sale pâlpâie.\\ |
+ | \\ | ||
+ | Biblioteca TFT.h expune un obiect TFT ce conține metodele necesare folosirii ecranului: scriere text, desenare dreptunghiuri si cercuri. Aceste funcții se apelează doar atunci când se produc schimbări în starea jocului, codul neefectuând astfel instrucțiuni inutile.\\ | ||
+ | \\ | ||
+ | [[https://youtu.be/MX2fN1sgkDs|Demo Joc]] | ||
====== Rezultate Obținute ====== | ====== Rezultate Obținute ====== | ||
- | TODO | + | {{:pm:prj2021:abasoc:cristip1.png?200|}}{{:pm:prj2021:abasoc:cristip2.png?200|}} |
+ | |||
+ | {{:pm:prj2021:abasoc:cristip4.png?200|}}{{:pm:prj2021:abasoc:cristip3.png?200|}} | ||
====== Concluzii ====== | ====== Concluzii ====== | ||
- | TODO | + | * Este primul proiect la care a trebuit să folosesc piese hardware și totodată unul dintre cele mai "fulfilling", întrucât am avut libertatea să creez singur toate elementele acestuia, de la interfața jocului și pana la așezarea butoanelor, LED-urilor si a ecranului. \\ |
+ | * Am înteles mai bine cum funcționează timer-ele și am aprofundat comunicarea I2C | ||
+ | * Am aflat modalități de a face anumite acțiuni să aștepte fără a folosi delay() și am întâmpinat și bug-uri din cauza folosirii acestuia, care sunt destul de anevoios de depistat având în vedere limitarea folosirii unei singure seriale o dată de către Arduino IDE | ||
+ | * Lucrul cu plăcuța Arduino este foarte ușor și biblioteca pentru folosirea ecranului dispune de destul de multe facilități, motiv pentru care se pot implementa o mulțime de alte jocuri, de exemplu X si 0, Snake, șah, sau chiar ceva asemanător [[https://chromedino.com/ | chrome dino game]]. | ||
====== Download ====== | ====== Download ====== | ||
<note tip> | <note tip> | ||
- | Link pagină: [[pm:prj2021:abasoc:connect4 | Connect4]]\\ | + | Pagina în format [[https://ocw.cs.pub.ro/courses/pm/prj2021/abasoc/connect4?do=export_pdf | PDF]]\\ |
- | Pagina în format PDF: [[https://ocw.cs.pub.ro/courses/pm/prj2021/abasoc/connect4?do=export_pdf | PDF]]</note>\\ | + | Arhiva: {{:pm:prj2021:abasoc:connect4.zip|}} |
+ | </note>\\ | ||
====== Bibliografie/Resurse ====== | ====== Bibliografie/Resurse ====== | ||
- | [[https://ocw.cs.pub.ro/courses/pm/prj2021/abasoc/connect4?do=export_pdf | PDF]] | + | Link pagină: [[pm:prj2021:abasoc:connect4 | Connect4]]\\ |
+ | Demo youtube: https://youtu.be/MX2fN1sgkDs \\ | ||
+ | Funcții Arduino: https://www.arduino.cc/reference/en/ \\ | ||
+ | https://randomnerdtutorials.com/guide-to-1-8-tft-display-with-arduino/ \\ | ||
+ | https://ardushop.ro/ro/home/865-modul-lcd-spi-128x160.html?search_query=Modul+LCD+SPI+128x160&results=392 \\ | ||
+ | https://github.com/lcdwiki/LCDWIKI_SPI \\ | ||
+ | Software schema electrică: https://www.autodesk.com/ \\ | ||
+ | Schema bloc: https://creately.com/ |