This shows you the differences between two versions of the page.
pm:prj2023:vstoica:sudoku [2023/05/07 00:20] maria_beatrice.dinu created |
pm:prj2023:vstoica:sudoku [2023/05/28 01:49] (current) maria_beatrice.dinu [Bibliografie/Resurse] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | = Sudoku = | + | ====== Sudoku ====== |
- | == Introducere == | + | Dinu Maria-Beatrice 332CA |
+ | |||
+ | ===== Introducere ===== | ||
Proiectul consta in implementarea jocului clasic sudoku. Jocul va fi afisat pe un ecran LCD, miscarea pe ecran se va face printr-un joystick, iar numerele vor fi introduse printr-un keypad. | Proiectul consta in implementarea jocului clasic sudoku. Jocul va fi afisat pe un ecran LCD, miscarea pe ecran se va face printr-un joystick, iar numerele vor fi introduse printr-un keypad. | ||
- | == Descriere generala == | + | Scopul acestui proiect este sa creeze o interfata fizica si interactiva pentru rezolvarea puzzle-urilor Sudoku, fiind o combinatie interesanta intre programare, electronica si jocuri logice. |
- | {{:pm:prj2023:vstoica:schema_bloc_sudoku.png?200|Schema bloc}} | + | |
+ | ===== Descriere generala ===== | ||
+ | Sudoku este un joc logic care implica completarea unei grile de 9x9 cu cifre de la 1 la 9. Scopul jocului este sa plasezi fiecare cifra in asa fel incat sa fie respectate anumite reguli.\\ | ||
+ | * Fiecare rand din grila trebuie sa contina toate cifrele de la 1 la 9, fara repetitii. | ||
+ | * Fiecare coloana din grila trebuie sa contina toate cifrele de la 1 la 9, fara repetitii. | ||
+ | * Fiecare regiune de 3x3 trebuie sa contina toate cifrele de la 1 la 9, fara repetitii. | ||
+ | |||
+ | Proiectul utilizeaza un ecran LCD pentru a afisa grila sudoku si cifrele asociate, permitand utilizatorului sa vada si sa interactioneze direct cu puzzle-ul. Keypad-ul este folosit pentru a introduce cifre in grila, iar joystick-ul pentru a naviga prin diferite celule ale grilei sudoku. | ||
+ | |||
+ | {{:pm:prj2023:vstoica:schema_bloc_sudoku.png?500|Schema bloc}} | ||
+ | |||
+ | ===== Hardware design ===== | ||
+ | |||
+ | Lista componente\\ | ||
+ | - Arduino UNO | ||
+ | - Ecran LCD 1.8" SPI | ||
+ | - Tastatura numerica 4*4 | ||
+ | - Joystick | ||
+ | - Breadboard 400 de puncte | ||
+ | - Rezistente + fire | ||
+ | |||
+ | Schema electrica\\ | ||
+ | {{:pm:prj2023:vstoica:sudoku_schema.jpeg?500|Schema electrica}} | ||
+ | |||
+ | ===== Software design ===== | ||
+ | |||
+ | Codul a fost implementat in ArduinoIDE. M-am folosit de urmatoarele biblioteci: SPI.h si TFT.h pentru LCD, Keypad.h pentru keypad. | ||
+ | |||
+ | Structura codului: | ||
+ | - draw_sudoku(): deseneaza tabla, pozitia jucatorului si insereaza cifele asociate. | ||
+ | - draw_grid(): deseneaza liniile necesare pentru a imparti tabla in 9 segmente de 3x3. | ||
+ | - set_super_easy_board(): copiaza cea mai usoara tabla din start_boards (unde sunt initializate diferite table de joc) in sudoku_board (am lasat aceasta functie pentu a putea verifica mai repede anumite functionalitati, si sa nu trebuiasca sa completez un joc intreg de sudoku). | ||
+ | - set_easy_board(): copiaza o tabla de dificultate usoara random din start_boards (unde sunt initializate diferite table de joc) in sudoku_board. | ||
+ | - set_hard_board(): copiaza o tabla de dificultate grea random din start_boards (unde sunt initializate diferite table de joc) in sudoku_board. | ||
+ | - write_key(): insereaza cifra introdusa prin keypad pe tabla de joc. | ||
+ | - check_win(): se verifica daca solutia oferita este una valida. Daca jucatorul nu a completat toata tabla, se va afisa mesajul "NOT FINISHED!"/Daca jucatorul a completat gresit tabla se va afisa mesajul "TRY AGAIN!" pentru 3 secunde, dupa care se va reintoarce pe tabla de joc. Daca jucatorul a completat corect tabla, se va afisa mesajul "YOU WON! CONGRATS!" pentru 5 secunde, dupa care se va reintoarce la meniul principal. | ||
+ | - draw_menu(): deseneaza meniul principal unde jucatorul are optiunile de a alege intre un joc usor sau un joc greu. | ||
+ | |||
+ | {{:pm:prj2023:vstoica:schema_bloc_sudokuv2.png?400|Schema Stari}} | ||
+ | |||
+ | ===== Rezultate obtinute ===== | ||
+ | {{:pm:prj2023:vstoica:start_menu_sudoku.jpeg?150|Start menu}} | ||
+ | {{:pm:prj2023:vstoica:start_game_sudoku.jpeg?150|Start game}} | ||
+ | {{:pm:prj2023:vstoica:playing_game_sudoku.jpeg?150|Playing game}} | ||
+ | {{:pm:prj2023:vstoica:win_screen_sudoku.jpeg?150|Win screen}} | ||
+ | |||
+ | ===== Concluzii ===== | ||
+ | Proiectul a fost foarte interesant si captivant. Mi-a placut sa invat cum sa lucrez cu biblioteca TFT.h pentru LCD, care a durat ceva, si cum sa conectez componentele cu arduino astfel incat sa nu le stric :). Am lucrat la acest proiect cu placere. | ||
+ | |||
+ | ===== Download ===== | ||
+ | Surse: {{:pm:prj2023:vstoica:sudoku_arduino.zip|Sudoku arduino}} | ||
- | == Hardware design == | + | ===== Bibliografie/Resurse ===== |
+ | https://randomnerdtutorials.com/guide-to-1-8-tft-display-with-arduino/ \\ | ||
+ | https://www.arduino.cc/reference/en/libraries/tft/ \\ | ||
+ | https://www.circuitbasics.com/how-to-set-up-a-keypad-on-an-arduino/ \\ | ||
+ | https://arduinogetstarted.com/tutorials/arduino-joystick | ||
+ | ===== Bibliografie/Resurse ===== | ||
- | Lista componente | + | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> |
- | * Arduino UNO | + | |
- | * Ecran LCD 1.8" SPI | + | |
- | * Tastatura numerica 4*4 | + | |
- | * Joystick | + | |
- | * Placa de prototipare | + | |
- | * Rezistente + fire | + |