Differences

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

Link to this comparison view

pm:prj2021:agrigore:joc_sudoku [2021/05/29 18:36]
gdumitrescu2101 [Hardware Design]
pm:prj2021:agrigore:joc_sudoku [2021/05/31 04:02] (current)
gdumitrescu2101 [Bibliografie/Resurse]
Line 17: Line 17:
  
 ==== Schema bloc ==== ==== Schema bloc ====
-{{:​pm:​prj2021:​agrigore:​joc_sudoku.png?500|}} +{{:​pm:​prj2021:​agrigore:​diagrama_joc_sudoku.png?500 |}}
 ==== Hardware Design ==== ==== Hardware Design ====
  
Line 55: Line 54:
 **Funcția setup()** **Funcția setup()**
       * Stabilește rolurile butoanelor, a buzzer-ului și a LED-ului : OUTPUT/​INPUT_PULLUP       * Stabilește rolurile butoanelor, a buzzer-ului și a LED-ului : OUTPUT/​INPUT_PULLUP
 +      * Afișează regulile de acordare a scorului (menținute pe ecran pentru o perioadă scurtă de timp)
       * Definește grila de joc       * Definește grila de joc
       * Scrie numerele presetate în joc (acestea nu pot fi alterate pe perioada jocului)       * Scrie numerele presetate în joc (acestea nu pot fi alterate pe perioada jocului)
 +      * Setează valoarea inițială a scorului la 0
  
 Funcția setup() generează grila de joc prin apelarea funcției **resetGame()**,​ care: Funcția setup() generează grila de joc prin apelarea funcției **resetGame()**,​ care:
Line 64: Line 65:
   * Setează poziția inițială a jucătorului în grila de joc   * Setează poziția inițială a jucătorului în grila de joc
  
-Grila este desenată din 4 linii verticale și 4 linii orizontale de culoare albă, suprapuse unui fundal negru. Numerele presetate în joc sunt \\ +Grila este desenată din 4 linii verticale și 4 linii orizontale de culoare albă, suprapuse unui fundal negru. Numerele presetate în joc sunt 
-scrise cu o culoare roșie pentru a se diferenția de restul. Deplasarea pe căsuțele grilei este indicată prin colorarea în albastru a celulei ​\\ +scrise cu o culoare roșie pentru a se diferenția de restul ​și nu pot fi șterse pe parcursul jocului. Deplasarea pe căsuțele grilei este indicată prin colorarea în albastru a celulei curente.
-curente.+
  
 **Funția loop()** verifică starea fiecărui buton (LOW = apăsat/ HIGH = liber) și decide pe baza acestuia, acțiunea executată. \\ **Funția loop()** verifică starea fiecărui buton (LOW = apăsat/ HIGH = liber) și decide pe baza acestuia, acțiunea executată. \\
Line 76: Line 76:
   * Butonul **INCREMENT**- Incrementează valoarea numărului   * Butonul **INCREMENT**- Incrementează valoarea numărului
 <note important>​Jucătorului nu i se permite incrementarea numărului peste valoarea maximă admisă.</​note>​ <note important>​Jucătorului nu i se permite incrementarea numărului peste valoarea maximă admisă.</​note>​
-  * Butonul **DELETE** - Șterge numărul de pe poziția curentă+  * Butonul **DELETE** - Șterge numărul de pe poziția curentă ​\\
 <note important>​Jucătorului nu i se permite ștergerea oricăruia dintre numerele presetate.</​note>​ <note important>​Jucătorului nu i se permite ștergerea oricăruia dintre numerele presetate.</​note>​
   * Butonul **SELECT** - Scrie în celula curentă, numărul selectat   * Butonul **SELECT** - Scrie în celula curentă, numărul selectat
Line 84: Line 84:
   * Cifrele dintr-un set de 4 celule trebuie să fie distincte   * Cifrele dintr-un set de 4 celule trebuie să fie distincte
 </​note>​ </​note>​
-<note warning>​Încercarea de a scrie o cifră ce nu respectă regulile jocului va eșua, iar jucătorul va fi avertizat prin pornirea LED-ului roșu și a alarmei BUZZER-ului.</​note>​+<note warning> ​**Precizări scor**: 
 +  * Încercarea de a scrie o cifră ce nu respectă regulile jocului va eșua, iar jucătorul va fi avertizat prin pornirea LED-ului roșu și a alarmei BUZZER-ului, această acțiune rezultând în scăderea a 5 puncte din scor 
 +  * Ștergerea unei cifre scrise anterior este penalizată prin scăderea a 2 puncte din scor 
 +  * Scrierea unei cifre ce respectă condițiile jocului va adăuga 10 puncte la scor 
 +</​note>​
  
-La fiecare execuție a funcției loop, se verifică dacă jocul a ajuns la final. Dacă această condiție este îndeplinită,​ pe ecranul LCD se afișează mesajul "​FELICITĂRI", ​urmând ca jocul să se reia în formatul inițial prin apelarea funcției **resetGame()**. +La fiecare execuție a funcției loop, se verifică dacă jocul a ajuns la final. Dacă această condiție este îndeplinită,​ pe ecranul LCD se afișează mesajul "​FELICITĂRI", ​urmat de scorul final calculat pe parcursul sesiunii. În urma afișării acestui mesaj, ​jocul să se reia în formatul inițial prin apelarea funcției **resetGame()**. 
-==== Rezultate ​obtinute ​==== +==== Rezultate ​obținute ​==== 
-Combinarea design-ului hardware cu implementarea software a rezultat în obținerea unui joc de Sudoku, care respectă design-ul clasic și regulile jocului original. Acesta pune la dispoziția jucătorului toate funcționalitățile necesare (deplasarea în grila de joc, selectarea și scrierea numărului dorit) și, în plus față de jocul clasic, acesta dispune de un semnal de alarmă ​dacă se încearcă încălcarea ​regulilor.+Combinarea design-ului hardware cu implementarea software a rezultat în obținerea unui joc de Sudoku, care respectă design-ul clasic și regulile jocului original. Acesta pune la dispoziția jucătorului toate funcționalitățile necesare (deplasarea în grila de joc, selectarea și scrierea numărului dorit) și, în plus față de jocul clasic, acesta dispune de un semnal de alarmă ​care se activează la încercarea de încălcare a regulilor
 +Pe parcusul jocului, se calculează scorul conform regulilor afișate inițial și se afișează la final rezultatul obținut.
  
 +[[https://​www.youtube.com/​watch?​v=3OS-1dwoREY|Demo]]
  
-==== Concluzii ==== +=== Ecran de start === 
-==== Download ====+{{:​pm:​prj2021:​agrigore:​acordare_punctaj-sudoku.jpeg?​200|}}
  
-==== Jurnal ==== +=== Grid inițial === 
-===  ✔ 25.aprilie ===  +{{:​pm:​prj2021:​agrigore:​ecran_de_start-sudoku.jpeg?200|}}
- ​Alegere temă proiect +
-=== ✔ 26.aprilie ===  +
-Creare pagină wiki & schema bloc +
-=== ✔ 27.aprilie - 5 mai ===  +
-Achiziționare piese necesare +
-=== ✔ 6.mai ===  +
-Conectare ecran LCD +
-=== ✔ 7.mai 20 mai ===   +
-Creare & Testare design software +
-=== ✔ 22.mai ​===  +
-Adăugare buton DELETE \\ +
-Adăugare eveniment la finalul jocului \\ +
-Introducerea resetării jocului \\ +
-=== ✔ 23.mai - 28.mai ​===  +
-Finalizare documentație wiki +
-==== Bibliografie/​Resurse ====+
  
 +=== Ecran joc ===
 +{{:​pm:​prj2021:​agrigore:​ecran_mid-game-sudoku.jpeg?​200|}}
  
 +=== Ecran final ===
 +{{:​pm:​prj2021:​agrigore:​ecran_end-game_updated_sudoku.jpeg?​200|}}
  
 +==== Concluzii ====
 +  * Proiectul este realizat integral și implementează toate funcționalitățile necesare
 +  * Implementarea tratează și cazurile excepționale;​ jucătorul nu poate ajunge într-o stare necunoscută a jocului
 +  * Jocul se aseamănă cu cel clasic și utilizează majoritatea componentelor hardware discutate la laborator
 +  * Pe viitor, acestuia i se pot adăuga funcționalități suplimentare dacă se dorește, codul putând fi actualizat cu ușurință
 +==== Download ====
 +{{:​pm:​prj2021:​agrigore:​cod_si_schema_electrica_pm-sudoku.zip|Fisiere sursa & Schema Electrica}}
 +==== Jurnal ====
 +✔ 25.aprilie - Alegere temă proiect \\
 +✔ 26.aprilie - Creare pagină wiki & schema bloc \\
 +✔ 27.aprilie - 5 mai - Achiziționare piese necesare \\
 +✔ 6.mai - Conectare ecran LCD \\
 +✔ 7.mai - 20 mai - Creare & Testare design software \\
 +✔ 22.mai​ ​
 +   * Adăugare buton DELETE \\
 +   * Adăugare eveniment la finalul jocului \\
 +   * Introducerea resetării jocului \\
 +✔ 23.mai - 28.mai ​- Finalizare documentație wiki \\
 +✔ 29.mai
 +   * Adăugare scor \\
 +   * Adăugare ecran inițial pentru stabilire punctaj
  
 +==== Bibliografie/​Resurse ====
 +[[https://​acoptex.com/​project/​263/​basics-project-054a-18-spi-tft-lcd-128x160-module-and-flickering-streaks-at-acoptexcom/​|Conectare ecran LCD]]  \\
 +[[https://​github.com/​olikraus/​Ucglib_Arduino|Biblioteca Ucglib]] \\
 +[[https://​forum.arduino.cc/​t/​arduino-uno-with-1-8-tft-module/​212488/​5|Formatare ecran LCD]] \\
 +[[https://​forum.arduino.cc/​t/​ucglib-text-locations/​513826|Fonturi & Desene ecran LCD]] \\
 +\\
 +<​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
pm/prj2021/agrigore/joc_sudoku.1622302566.txt.gz · Last modified: 2021/05/29 18:36 by gdumitrescu2101
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