This is an old revision of the document!
Proiectul realizat reprezintă o implementare a jocului clasic Sudoku, într-o versiune ce pune la dispoziția jucătorului o grilă de forma 4 x 4.
Jocul poate fi completat de un singur jucător la un moment dat, care va putea selecta pe rând poziția pe care o va scrie, precum și cifra pe care o va scrie pe această poziție. Scopul jocului presupune completarea întregii grile respectând următoarele limitări:
Progresul jucătorului va putea fi observat la orice moment de timp prin intermediul unui ecran LCD.
Jucătorul va avea la dispoziție 4 butoane pentru mișcările pe care le va face în cadrul grilei, pentru a ajunge pe poziția pe care dorește să o completeze (sus, jos, stânga, dreapta). Pe lângă cele acestea, va avea un buton ce incrementează o cifră la fiecare apăsare a acestuia, pornind de la 0, până la valoarea maximă 9. Cifra dorită va putea fi plasată pe grilă prin poziționarea pe căsuța corespunzătoare și, în final, apăsarea butonului SELECT. Acest buton va plasa cifra în grilă dacă aceasta reprezintă o variantă corectă de completare. În caz contrar, cifra nu va fi plasată în grilă și greșeala jucătorului va fi semnalată prin aprinderea unui led roșu și pornirea unui scurt semnal sonor.
Componenta | Numar | Link |
---|---|---|
Arduino Uno | 1 | Arduino |
Cablu USB | 1 | Cablu |
Breadboard | 1 | Breadboard |
LED | 1 | LED |
Ecran LCD | 1 | Ecran LCD |
Buzzer | 1 | Buzzer |
Butoane | 7 | Butoane |
Rezistente | 5 | Rezistente |
Fire | 30 | Fire |
Arduino IDE (1.8.15)
Ucglib → Folosită la afișarea pe ecran LCD
Funcția setup()
Funcția setup() generează grila de joc prin apelarea funcției resetGame(), care:
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
curente.
Funția loop() verifică starea fiecărui buton (LOW = apăsat/ HIGH = liber) și decide pe baza acestuia, acțiunea executată.
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().
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.
Alegere temă proiect
Creare pagină wiki & schema bloc
Achiziționare piese necesare
Conectare ecran LCD
Creare & Testare design software
Adăugare buton DELETE
Adăugare eveniment la finalul jocului
Introducerea resetării jocului
Finalizare documentație wiki