This is an old revision of the document!


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 SPI
  • Tastatura numerica 4×3
  • Breadborad
  • Rezistente
  • 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

Rezultatul obtinut este acela al unui joc sudoku 6×6 functional cu posibilitatea de jucare continua.

Concluzii

Download

O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).

Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

pm/prj2021/abirlica/sudoku.1622310798.txt.gz · Last modified: 2021/05/29 20:53 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