Sudoku

Autor: Mincea Lucian (336CB)

Introducere

Proiectul isi propune implementarea unui joc de Sudoku. Controlul va fi facut dintr-o tastatura numerica ce va avea rolul de navigator prin puzzle (selectarea casutei) si de a introduce o cifra pentru completarea casutei. Afisarea puzzle-ului se va face pe un LCD.

Descriere generală

Schema bloc

Schema bloc

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. Se afiseaza un mesaj corespunzator starii in care se afla jocul, iar jucatorul are 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

Hardware Design

Lista de piese:

  • Arduino Uno
  • Ecran LCD 1.8\” SPI
  • Tastatura numerica 4×3
  • Breadboard
  • Rezistenta 1k - pentru pinul de LED+ al LCD-ului
  • Fire

Schema electrica:

Software Design

Diagrama de activitati

Diagrama de stari

Functii:

  • set_board() - initializeaza tabla de joc cu unul din cele 5 jocuri statice
  • draw_sudoku() - deseneaza pe LCD tabla de joc, pozitia jucatorului fiind reprezentata prin culoarea rosu
  • get_key() - Keypad.getKey(); functie de biblioteca pentru a verifica daca o tasta a fost apasata; functie neblocanta
  • interpret_key() - se interpreteaza inputul utilizatorului in functie de starea jocului
  • move si fill_cell sunt descrise in functia intepret_key()
  • check_result() - se verifica starea jocului
  • draw_menu - deseneaza meniul ce apare la apasarea tastei '#'; afiseaza un mesaj un functie de rezultatul verificarii si afiseaza optiunile de “NEW GAME” si “CONTINUE”

Biblioteci folosite:

  • SPI.h si TFT.h - afisarea pe LCD
  • Keypad.h - interpretarea inputului venit de la keypad

Rezultate Obţinute

Concluzii

Proiectul a presupus mai multe etape, alegerea temei fiind cea mai dificila si importanta prin prisma timpului alocat documentarii asupra elementelor de care dispunem pentru a pune cap la cap un proiect. Ceea ce am invatat din acest proiect este lucrul cu biblioteca TFT si interactiunea cu un dispozitiv LCD ce este compatibil cu aceasta biblioteca.

Bibliografie/Resurse

pm/prj2021/abirlica/sudoku.txt · Last modified: 2021/05/31 16:21 by lucian.mincea
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