Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2021:dbrigalda:minesweeper [2021/05/02 10:55]
luminita.ion
pm:prj2021:dbrigalda:minesweeper [2021/06/04 11:10] (current)
luminita.ion [Arhiva Codului]
Line 25: Line 25:
 ==== Diagrama bloc ==== ==== Diagrama bloc ====
  
-{{:​pm:​prj2021:​dbrigalda:​minesweeper.png|}}+{{:​pm:​prj2021:​dbrigalda:​bloc_mine.png|}}
  
  
 ===== Hardware design ===== ===== Hardware design =====
 +==== Schema electrica ====
 +{{:​pm:​prj2021:​dbrigalda:​scheme_mine.jpeg|}}
    
 ==== Lista de piese ==== ==== Lista de piese ====
-  - rezistente;​ +  - matrice ​de leduri;
-  - leduri ​de culoare verde si rosu;+
   - placa Arduino Uno;   - placa Arduino Uno;
   - joystick;   - joystick;
   - buzzer;   - buzzer;
   - ultrasonic;   - ultrasonic;
-  - cabluri;+  - cabluri ​mama-tata;
   - breadboard;   - breadboard;
  
 +===== Software Design =====
 +====Descrierea codului aplicatiei====
 +    - mediu de dezvoltare: Arduino IDE
 +    - biblioteci şi surse 3rd-party: ​
 +          - pentru matricea de led-uri
 +            * Adafruit_NeoPixel.h ​
 +            * FastLED.h
 +            * FastLED_NeoMatrix.h
 + ​Algoritmul ar trebui sa mapeze toata matricea si fiecare led va fi setat ca fiind ori rosu ori verde. Celula va avea 2 stari: inchisa sau deschisa, adica ledul care reprezinta o celula va avea 2 stari, stins sau aprins.
 + Cu ajutorul joystick-ului ne vom deplasa prin matricea de leduri si in momentul in care vom alege celula pe care vrem sa o aprindem, atunci vom trece mana pe deasupra ultrasonicului si ledul respectiv se va aprinde. De aici pornesc doua scenarii:
 +   - ledul aprins este rosu, asta inseamna ca aici se va incheia jocul se va auzi o anumita nota prin buzzer
 +   - ledul aprins este verde, ceea ce inseamna ca vom continua jocul
 + ​Pentru a castiga jocul, trebuie ca toate ledurile verzi sa fie aprinse si la final se va auzi o alta nota prin buzzer.
 + ​Proiectul este o varianta a jocului Minesweeper propusa de mine. 
  
 +==== Functii utilizate ====
 +     * setup :
 +           * initializam matricea de leduri
 +           * configurarea melodiilor pentru buzzer
 +           * initializarea altor pini
 +     * loop :
 +           * dam play la joc
 +     * readUltrasonicDistance :
 +           * functia de citire a unei prezente in preajma ultrasonicului
 +     * initialiseBoard :
 +           * initializam tabla
 +     * placeMines
 +           * plasam bombele
 +     * isGreen :
 +           * verificam daca ledul aprins este verde
 +     * isBomb :
 +           * verificam daca ledul aprins este rosu
 +     * gameOver :
 +           * daca am aprins un led rosu, jocul s-a terminat si am pierdut
 +     * victory :
 +           * daca am aprins toate ledurile verzi, jocul s-a terminat si am castigat
 +     * printBoard:
 +           * aprindem tabla in stadiul curent in functie de ce leduri au fost aprinse pana in momentul de fata
 +     * play :
 +           * aici initializam tabla si in functie de stadiul actual al jocului se vor intampla anumite lucruri
 +           * daca am pierdut, atunci vom reda o anumita nota, mai grava, la buzzer
 +           * daca putem continua, atunci folosind joystick-ul ne vom deplasa intre leduri si ne vom opri la acel led pe care dorim sa il aprindem si il vom aprinde cu ajutorul ultrasonic-ului
 +           * tabla se va printa actualizata dupa fiecare led aprins
 +
 +==== Testele initiale ====
 +Initial, totul era functional si matricea se aprindea, am testat-o si in alte moduri dupa cum se vede si in clipul atasat.
 +{{:​pm:​prj2021:​dbrigalda:​teste_initiale.jpeg|}}
 +[[https://​drive.google.com/​file/​d/​13KMrYSONsr68mAoAs_juhofAjjK4yFTx/​view?​usp=sharing]]
 +
 +===== Rezultate obtinute =====
 + Codul de pana in prezent este scris  astfel incat sa putem sa initializam tabla, sa plasam bombele si sa ne miscam printre leduri. ​ Bombele sunt marcate ca fiind leduri rosii si atunci cand se aprindea un led rosu jocul se pierdea. Initial am gandit jocul ca atunci cand toate ledurile verzi sunt aprinse, jocul sa se termine si sa fie castigat, pe parcurs urma a fi ajustat si sa ajunga la o forma finala mai draguta si probabil mai usor de jucat. Rezultatele obtinute din pacate nu au fost cele dorite, din cauza unui accident (am dat peste un pahar cu apa care a cazut pe placa si cand am vrut sa il ridic, am lovit din greseala placa si a cazut si rezultatele se vad in poza) in urma caruia a fost distrusa placa Arduino si a fost prea tarziu sa procur una noua.
 +{{:​pm:​prj2021:​dbrigalda:​rezultate_finale.jpeg|}}
 +
 +===== Arhiva Codului =====
 +Specific ca nu este inca testat pentru ca nu am avut pe ce sa il testez
 +[[https://​drive.google.com/​file/​d/​10JRL3Wq7uZrXtJnvncsL-fS06Nbo33dW/​view?​usp=sharing]]
 +
 +===== Bibliografie/​Resurse =====
 +
 +<note tip>​Documentația în format <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​PDF</​a></​html>​
 +
 +https://​ocw.cs.pub.ro/​courses/​pm/​prj2021/​dbrigalda/​minesweeper</​note>​
  
pm/prj2021/dbrigalda/minesweeper.1619942126.txt.gz · Last modified: 2021/05/02 10:55 by luminita.ion
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