This is an old revision of the document!
Crack the code
Introducere
Proiectul este un joc de tip Crack the Code. Acesta consta din ghicirea unui cod numeric de 4 cifre generat aleatoriu de calculator. Jocul are doua dificultati: easy si hard, diferenta dintre ele constand in cantitatea de informatii pe care o primeste jucatorul ca raspuns. Astfel, jucatorul va incerca diferite grupuri de 4 cifre si va primi ca raspuns numarul de cifre care sunt corecte pe pozitia corecta.
De exemplu:
Daca codul generat este 4921 si jucatorul introduce 3912, o singura cifra este corecta pe pozitia corecta (adica cifra 9)
Scopul este ca jucatorul sa ajunga la valoarea generata initial intr-un timp cat mai scurt.
Descriere generala
Jucatorul se va folosi de un numpad pentru a tasta cifrele dorite, buzzer-ul emitand un semnal sonor pentru fiecare cifra tastata. Acestea vor aparea pe un ecran de tip LCD pentru a vedea posibilele erori de tastare si a le putea remedia. Pentru modificarea valorii tastate, jucatorul se va folosi de butonele stanga (*) dreapta (#) pentru a ajunge la cifra gresita si va apasa o alta cifra pentru a o suprascrie.
Dupa ce jucatorul va apasa pe butonul verde cu rol de “submit”, jocul va transmite raspunsul, aprinzand ledurile RGB cu verde pentru fiecare cifra corecta pe pozitia corecta si cu rosu in caz contrar. De aici jucatorul poate apasa pe butonul verde pentru a mai introduce un cod sau pe butonul rosu pentru a renunta, caz in care codul va fi afisat.
Hardware Design
Lista de piese principale:
placuta arduino uno R3
4 leduri RGB
numpad
ecran LCD
un buton de submit
un buton de reset joc
buzzer
Software Design
Descrierea codului aplicaţiei (firmware):
Mediu de dezvoltare este Arduino IDE.
Librariile include sunt Keypad_I2C.h si LiquidCrystal_I2C.h pentru simplificarea utilizarii LCD-ului si al Numpad-ului cu ajutorul protocolului I2C.
algoritmi şi structuri pe care plănuiţi să le implementaţi
(etapa 3) surse şi funcţii implementate
Organizarea Codului
Structuri folosite:
structura pentru led-uri contine doua campuri: redPin - numarul pinului pentru culoarea rosie si greenPin - pinul pentru culoareaverde. Pinul albastru va ramane in aer pentru ca nu am nevoie de aceasta culoare.
enum pentru starile prin care va trece jocul: MENU, CHOOSE_DIFF, GAME, EASY_CHECK_CODE, HARD_CHECK_CODE, FINAL, CHOOSE_GIVE_UP, FINAL_GIVE_UP
array pentru codul generat de calculator (code[4])
array pentru codul introdus de jucator (code_input[4])
Functii implementate standard:
Functii implementate pentru state-uri:
menu(): va printa numele jocului si trecerea spre urmatorul state, va astepta o apasare de buton verde pentru a trece la state-ul CHOOSE_DIFF.
choose_diff(): va printa optiunile de dificultate “easy” si “hard”. Jucatorul poate alege navigand stanga prin apasarea (*) si dreapta prin apasarea (#). Pentru a confirma alegerea, se asteapta apasarea butonului verde. Pentru a se intoarce in state-ul de pornire se va apasa butonul rosu.
game(): va procesa tastele apasate pe numpad de catre jucator. Fiecare apasare va genera un sunet prin buzzer. Jucatorul poate adauga cifrele in ce ordine doreste, pentru a face acest lucru va muta cursorul stanga(*) dreapta(#). Cand o cifra este selectata, va palpai si daca jucatorul apasa o alta tasta, cifra va fi suprascrisa. Pentru a trimite codul, jucatorul va apasa butonul verde. Daca jucatorul vrea sa renunte la jocul curent, poate apasa pe butonul rosu.
Rezultate Obţinute
Care au fost rezultatele obţinute în urma realizării proiectului vostru.
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
Bibliografie/Resurse
Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.
Export to PDF