Differences

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

Link to this comparison view

pm:prj2021:avaduva:minesweeper [2021/05/26 09:28]
ana_maria.radu0306
pm:prj2021:avaduva:minesweeper [2021/05/26 15:40] (current)
ana_maria.radu0306
Line 1: Line 1:
 =====Minesweeper===== =====Minesweeper=====
-==Autor: Ana-Maria Radu==+====Autor: Ana-Maria Radu====
  
 ===Introducere=== ===Introducere===
-Proiectul ​va implementa jocul Minesweeper pe o matrice de LED-uri. Initial, toate LED-urile sunt stinse, in afara de unul alb care indica pozitia curenta ​a jucatorului. Jucatorul ​se poate muta in cele 4 directii folosind butoane, ​si poate selecta un anumit LED pentru inspectare. Daca LED-ul se aprinde verdeinseamna ca nu exista ​o bomba pe acea pozitieinsa poate declansa aprinderea cu galben a LED-urilor din jurul sau daca ele sunt posibile bombe (daca se afla la mai putin de 2 pozitii ​de o bomba)Daca jucatorul selecteaza o casuta pe care se afla bomba, LED-ul respectiv va lumina ​rosu.+Proiectul ​implementeaza o varianta minimalista a Minesweeper pe o matrice ​de LED-uri. Scopul sau este de a oferi o interfata intuitiva si usor de folosit pentru utilizator, pentru a face jocul una dintre acele activitati "​no-brainer"​ pe care le poti face oricand, chiar si in timpul cursurilor^_^.\\ 
 +==Reguli si desfasurarea jocului== 
 +Jucatorul are la dispozitie 5 butoane (select + 4 directii de deplasare) pe care le foloseste pentru a interactiona cu matricea ​de LED-uri. Initial, toate LED-urile sunt stinse, in afara unui cursor ​care lumineaza alb pentru a indica pozitia curenta.\\ 
 +Jucatorul muta cursorul pana la pozitia dorita ​si apoi apasa butonul Selectcare va "​descoperi"​ pozitia, adica va lumina: 
 +  * Rosu, daca jucatorul a descoperit ​o bomba 
 +  * Galben, daca jucatorul ​se afla la distanta 1 de o bomba (distanta se calculeaza inclusiv pe diagonala) 
 +  * Verde, daca jucatorul a descoperit o casuta "​safe"​ 
 +Daca jucatorul selecteaza o bomba, jocul se considera pierdut, se afiseaza ​animatie de final si mesajul "You lost! Try again?"​urmat de un meniu in care are posibilitatea de a alege sa continue sau nu (meniul consta in doua LED-uri aprinse pe matrice, unul rosu si unul verde, semnificand cele doua decizii posibile; jucatorul poate selecta unul dintre ele folosind cursorul).\\ 
 +\\ 
 +Daca jucatorul a descoperit toate pozitiile in afara de bombe, jocul se considera castigat, se afiseaza o animatie de victorie si mesajul "You won! Try again?",​ urmat, din nou, de meniul cu cele doua decizii posibile.\\ 
 +\\ 
 +Daca se alege continuarea jocului, totul se reseteaza si utilizatorul poate incepe o runda noua. Daca, in schimb, se alege terminarea lui, se afiseaza mesajul "​Goodbye!"​ si se sting toate LED-urile, mimand inchiderea dispozitivului. 
 +==Inspiratie si utilitate== 
 +Am pornit de la implementarea clasica a jocului, insa am ales sa folosesc coduri de culori in loc de cifre pentru a indica proximitatea fata de o bomba. Cred ca acest proiect este util pentru ca poate fi folosit in viata reala ca un joc minimalist, iar pentru mine a fost folositor din perspectiva procesului de invatare prin care am trecut pe tot parcursul realizarii lui.\\
  
-{{:​pm:​prj2021:​avaduva:​schema_bloc_minesweeper.png?​nolink&​900|}}+===Descriere generala=== 
 +Mai jos este schema bloc a proiectului:​\\ 
 +{{ :​pm:​prj2021:​avaduva:​schema_bloc_minesweeper.png?​nolink&​700 |}}
  
 ===Hardware Design=== ===Hardware Design===
Line 21: Line 36:
  
 ===Software Design=== ===Software Design===
 +Jocul a fost dezvoltat in Arduino Editor Online, folosind biblioteca
 +  * [[https://​github.com/​adafruit/​Adafruit_NeoMatrix|Adafruit_NeoMatrix.h]]
 +Pentru logica jocului se folosesc doua matrici, una de tip Adafruit_NeoMatrix care controleaza starea LED-urilor, iar alta interna de 8x8 intregi, care retine pozitia bombelor (pozitiile sunt generate folosind functia rand()).
 +
 +La inceput, se initializeaza matricile si alte variabile globale si se seteaza cursorul pe pozitia (0, 0). La fiecare Select, se verifica starea jocului (daca este peirdut, castigat sau se continua).
 +
 +Logica programului este urmatoarea:​\\
 +{{ :​pm:​prj2021:​avaduva:​schema_software_minesweeper.png?​nolink&​800 |}}
 +\\
 +Implementare software: {{:​pm:​prj2021:​avaduva:​minesweeper.txt|}}
  
 ===Rezultate=== ===Rezultate===
 +[[https://​youtu.be/​m28fmnfQop4|Link catre YouTube Demo]]
 +
 +Jocul este fully functional, logica functioneaza asa cum s-ar astepta un utilizator normal.
  
 ===Concluzii=== ===Concluzii===
 +Proiectul a fost o experienta foarte placuta. Pentru mine, a fost primul proiect in care am folosit si hardware astfel, deci mi-a placut sa invat sa lucrez practic. Cateva mici imbunatatiri pot fi aduse in urma utilizarii mai indelungate,​ de exemplu legat de sensibilitatea butoanelor, insa in final cred ca experienta mi-a depasit asteptarile.
  
 ===Download=== ===Download===
 +{{:​pm:​prj2021:​avaduva:​minesweeper_anamariaradu_334ca.zip|}}\\
 +<​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
 ===Jurnal=== ===Jurnal===
Line 39: Line 70:
  
 ===Bibliografie/​Resurse=== ===Bibliografie/​Resurse===
 +1. [[https://​pdf1.alldatasheet.com/​datasheet-pdf/​view/​422610/​ATMEL/​ATMEGA328P.html|ATMEGA328P Datasheet]]\\
 +2. [[https://​github.com/​adafruit/​Adafruit_NeoMatrix|Adafruit NeoMatrix GitHub Repository]]\\
 +3. [[https://​learn.adafruit.com/​adafruit-neopixel-uberguide/​neomatrix-library|Adafruit NeoMatrix Tutorial]]\\
pm/prj2021/avaduva/minesweeper.1622010524.txt.gz · Last modified: 2021/05/26 09:28 by ana_maria.radu0306
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