Sudoku

Autor: Rarinca Ana-Elena 334CC

Introducere

Proiectul reprezinta clasicul joc SUDOKU. Afisajul va fi facut pe un ecran LCD conectat prin SPI. Inputul este preluat de la un keypad cu mai multe taste. Jucatorul va putea selecta casuta in care completeaza/recompleteaza numarul.

Scopul este acela de a umple celulele goale, cu cate o cifra in fiecare celula, in asa fel incat sunt respectate regulile: nu pot exista cifre duplicate pe un rand, pe o coloana sau intr-un careu din grila. In consecinta, fiecare cifra a solutiei apare o singura data in trei “directii”.

Ideea proiectului mi-a venit din dorinta de a face un proiect bun la PM, dar in acelasi timp sa fie si unul distractiv. Interesul jocului consistă în simplitatea regulilor sale si in complexitatea solutiilor.

Aceasta varianta a jocului SUDOKU este utila pentru ca e mai distractiva si relaxanta, in comparatie cu jocul clasic pe hartie. In acest mod poti sterge si recompleta ori de cate ori e necesar.

Descriere generală

Miscarea pe tabla de joc si introducerea numerelor se face folosind keypad-ul astfel:

  • '2' - mutare cu o celula in sus
  • '8' - mutare cu o celula in jos
  • '4' - mutare cu o celula in stanga
  • '6' - mutare cu o celula in dreapta
  • '5' - selectarea celulei pentru introducerea valorii dorite

Dupa selectarea celulei se introduce un numar de la 1 la 6 dupa care jucatorul se poate misca din nou.

Butonul '#' declanseaza verificarea jocului. Daca celulele sunt completate corect se afiseaza mesajul “YOU WIN” si posibilitatea de a juca alt joc. Altfel se afiseaza un mesaj corespunzator starii in care se afla jocul si apar 2 posibilitati:

  • New Game - se reseteaza tabla de joc si se completeaza cu un joc din cele 5 declarate static
  • Continue - jucatorul reia jocul de unde a ramas

Schema Bloc

Hardware Design

Listă de piese:

  • Arduino Uno R3 ATMEGA328P
  • Ecran LCD 1.8\” SPI
  • Tastatura numerica 4×4
  • Breadboard 830 PUNCTE MB102
  • Rezistenta 1k - pentru pinul de LED+ al LCD-ului
  • Fire dupont TATA-TATA 20CM

Schema Electrica

Software Design

Implementarea proiectului a fost realizata in ArduinoIDE. Am folosit bibliotecile SPI.h si TFT.h care contin functiile necesare afisarii pe ecran, iar pentru keypad am inclus biblioteca Keypad.h.

Codul este structurat in cativa pasi esentiali:

  • set_board() - aleg unul din cele 5 jocuri declarate static
  • draw_board() - se deseneaza tabla de joc, pozitia jucatorului(reprezentata prin culoarea galbena)
  • get_key() - Keypad.getKey(); functie de biblioteca pentru a verifica daca o tasta a fost apasata
  • interpret_key() - se interpreteaza inputul utilizatorului in functie de starea jocului
  • check_result() - se verifica starea jocului
  • draw_menu - deseneaza meniul ce apare la apasarea tastei '#'; afiseaza un mesaj in functie de rezultatul verificarii si afiseaza optiunile de “NEW GAME” si “CONTINUE”

Rezultate Obţinute

Concluzii

Acest proiect a reprezentat o modalitate buna de a pune in aplicare notiunile invatate in cadrul laboaratorului. In cadrul proiectului am reusit sa invat sa lucrez cu biblioteca TFT si ecranul LDC ce este compatibil cu aceasta biblioteca, cu arduino prin combinarea cunostintelor de hardware cu cele de software.

Download

Arhiva cu sursa: sudoku.zip

Bibliografie/Resurse

pm/prj2022/alaura/sudoku.txt · Last modified: 2022/05/27 17:11 by ana_elena.rarinca
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