This shows you the differences between two versions of the page.
pm:prj2024:mdinica:andreea.drehuta [2024/05/26 13:41] andreea.drehuta [Organizarea Codului] |
pm:prj2024:mdinica:andreea.drehuta [2024/05/26 23:28] (current) andreea.drehuta [Jurnal] |
||
---|---|---|---|
Line 35: | Line 35: | ||
* Mediu de dezvoltare este Arduino IDE. | * 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. | * 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 | ||
</note> | </note> | ||
Line 43: | Line 41: | ||
* 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. | * 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 | + | * 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 |
- | * * (MENU, CHOOSE_DIFF, GAME, EASY_CHECK_CODE, HARD_CHECK_CODE, FINAL, CHOOSE_GIVE_UP, FINAL_GIVE_UP) * fdg | + | * array pentru codul generat de calculator (code[4]) |
+ | * array pentru codul introdus de jucator (code_input[4]) | ||
+ | Functii implementate standard: | ||
+ | * setup(): initializarea pinilor ca INPUT sau OUTPUT | ||
+ | * loop(): apeleaza functiile specifice pentru state-ul in care se afla jocul. Va incepe cu MENU. | ||
+ | |||
+ | 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 si va verifica corectitudinea acestora (correct_code[i] = 1, daca este corecta si correct_code[i] = -1, daca este gresita). 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. In situatia in care jucatorul nu a tastat toate cele 4 cifrele, buzzer-ul va scoate un sunet si jocul nu va progresa. Daca jucatorul vrea sa renunte la jocul curent, poate apasa pe butonul rosu. | ||
+ | * easy_check_game(): va calcula cate cifre sunt corecte si va aprinde atatea leduri verzi, restul rosii. Va scrie pe lcd cate cifre au fost corecte si le va arata pozitia in cod. Daca jucatorul vrea sa renunte la jocul curent, poate apasa pe butonul rosu. | ||
+ | * hard_check_game(): va calcula cate cifre sunt corecte si va aprinde atatea leduri verzi, restul rosii. Va scrie pe lcd cate cifre au fost corecte. Daca jucatorul vrea sa renunte la jocul curent, poate apasa pe butonul rosu. | ||
+ | * final(): va fi apelat daca toate cifrele sunt corecte. Va printa un mesaj de incurajare si va intreba jucatorul daca vrea sa joace din nou. La apasarea butonului verde, se va intoarce in state-ul de menu. | ||
+ | * choose_give_up(): va fi apelata daca jucatorul vrea sa renunte prin apasarea butonului rosu. Jucatorul poate alege intre "yes" si "no" prin mutarea cursoului stanga(*) dreapta(#). Pentru a confirma decizia, jucatorul trebuie sa apese butonul verde. | ||
+ | * final_give_up(): va scrie pe lcd care este codul corect si va intreba jucatorul daca vrea sa joace din nou. Pentru a face acest lucru, jucatorul trebuie sa apese butonul verde, iar jocul se va intoarce in state-ul CHOOSE_DIFF. | ||
+ | |||
+ | Functii ajutatoare: | ||
+ | * setColor(int redValue, int greenValue, int blueValue, RGBLed led): Valorile pentru rosu, verde si albastru si ledul pe care sa il aprinda. | ||
+ | * beep(int ms, uint8_t freq): Numarul de milisecunde si frecventa pentru buzzer | ||
+ | * get_button_input(int buttonPin): debounce button | ||
+ | * pressed_one_time(int buttonPin): va verifica daca butonul a fost apasat si va returna true cand butonul nu mai este eliberat. | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
<note tip> | <note tip> | ||
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | Rezultatele obţinute: \\ |
+ | GitHub: https://github.com/AndreeaDrehuta/CrackTheCode \\ | ||
+ | |||
+ | Youtube: https://youtu.be/m9wbOW-NLac | ||
</note> | </note> | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | O experienta interesanta | ||
===== Download ===== | ===== Download ===== | ||
Line 65: | Line 87: | ||
<note tip> | <note tip> | ||
- | - Update schema fusion | + | * Update schema fusion |
+ | * Adaugare Software Design | ||
+ | * Adaugare github | ||
+ | * Adaugare youtube | ||
</note> | </note> | ||