Side by side memory game

Introducere

Implementare a unui joc de memorare. Jocul consta in 2 matrici: pe cea din stanga apare pentru o scurta perioada de timp o secventa, iar pe cea din dreapta jucatorul se poate deplasa folosindu-se de niste butoane. Scopul este ca jucatorul sa memoreze matricea care apare in stanga, si sa o reproduca pe matricea din dreapta, folosindu-se de controale.

Descriere generală

Jocul se foloseste de 3 LED-uri pentru a indica jucatorului cate runde a castigat pana acum. Exista butoane de schimbare a coloanei, a randului si de selectat casuta. Atunci cand un jucator reproduce matricea initiala, se aude o melodie si pe display-ul format din cele 2 matrici de LED-uri se afiseaza un mesaj de victorie. Atunci cand un jucator greseste o casuta, similar se aude un zgomot si se afiseaza un mesaj corespunzator, iar nivelul se ia de la inceput.

Schema bloc:

Hardware Design

Componente:

  • un Arduino UNO
  • 2 Breadboard-uri
  • un Buzzer
  • 3 Butoane
  • 3 LED-uri
  • 4 Rezistente
  • Fire mama-tata si tata-tata
  • 2 matrici de LED-uri (MAX7219)

Mentiuni:

  • pentru a comunica cu matricile de LED-uri (care folosesc MAX7219), s-a folosit SPI cu Daisy Chaining
  • cele 3 LED-uri afiseaza scorul in format binar

Schema electrica:

Software Design

Pentru implementarea codului am folosit Visual Studio Code impreuna cu extensiile pentru Arduino care permit functionalitati precum auto-complete, intellisense, upload pe placuta direct din VSCode. In portiunea de setup se pregatesc modurile pinilor, precum si configuratiile necesare matricilor de LED-uri.

Jocul are in vedere urmatorul flow: pe matricea din stanga apare o secventa de LED-uri aprinse, iar la scurt timp acestea nu mai sunt vizibile. Folosind butoanele de miscare pe horizontala, verticala, jucatorul trebuie sa reproduca imaginea disparuta (selectand LED-uri cu un al treilea buton).

Pentru a comunica cu matricile de LED-uri s-a folosit SPI cu Daisy Chaining. Libraria pentru MAX7219 expune un obiect de tip LedControl care faciliteaza comunicarea cu matricile. Aproape fiecare functie din LedControl ia ca prim argument matricea la care se vrea sa se faca modificari.

De asemenea, matricile de LED-uri au 2 intrebuintari: ele sunt atat interfata prin care jucatorul interactioneaza cu imaginile ce trebuie a fi memorate, apoi reproduse, dar sunt si display-uri atunci cand se transmite un mesaj text jucatorului.

Librariile folosite sunt:

  • LedControlMS.h (pentru MAX7219)
  • pitches.h (pentru buzzer)

Link de download pentru codul Arduino folosit in proiect: memorygame_cod.zip

Un scurt Demo in format video pe youtube: https://www.youtube.com/watch?v=3KLD8s7QhtM

Download

Bibliografie/Resurse

pm/prj2021/abasoc/memorygame.txt · Last modified: 2021/05/23 19:59 by cosmin.banica1611
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