Table of Contents

Memory Game

Autor: Dicu Florin-Catalin

Grupa: 332CB

Introducere

Joc de memorie bazat pe retinerea si reproducerea secventelor de culori afisate de led-uri. Dupa ce secventa de culori a fost afisata, jucatorul trebuie sa apese butoanele corespunzatoare ordinii ledurilor. La apasarea butoanelor un buzzer va scoate un sunet care sa confirme daca butonul apasat este corect sau gresit. Scorul va fi afisat pe un display, iar dificultatea jocului creste in functie de scorul curent.

Descriere generală

Pentru a incepe jocul, se va apasa pe oricare dintre butoane. Pe ecran se va afisa scorul curent(0 pentru inceputul jocului). Se vor aprinde pe rand cele 4 leduri corespunzatoare secventei de culori, iar jucatorul trebuie sa o reproduca folosind cele 4 butoane. Atunci cand jucatorul va introduce corect secventa buzzer-ul va produce un sunet, scorul va creste si va fi afisata o noua secventa de culori, mai complicata decat cea anterioara. Daca timpul jucatorului a expirat sau daca acesta a apasat butoanele in ordinea gresita, buzzer-ul va produce un alt sunet iar jocul se va termina.

Schema bloc

Hardware Design

=== Lista de piese: ===

  • Arduino UNO
  • 4 LED-uri
  • 4 butoane
  • Buzzer
  • Componente de baza
  • Modul RTC

=== Schema electrica ===

Software Design

Pentru a scrie codul am folosit Arduino IDE. Pentru a lucra cu un ecran LCD I2C am folosit libraria LiquidCrystal_I2C, iar pentru modulul cu ceas in timp real libraria ds3231.

In funtia de setup am initializat ledurile, butoanele, LCD-ul si modulul cu ceas in timp real. Functia de loop aprinde pe rand ledurile atata timp cat jucatorul nu a apasat pe niciun buton. Dupa ce a fost apasat pe un buton, se afiseaza nivelul curent, scorul, si se vor apela functiile care genereaza secventa, o afiseaza si o citeste pe cea primita de la jucator. Functia generare_secventa va genera o secventa de culori, corespunzatoare nivelului curent. Functia show_secventa va afisa secventa de culori generata, iar functia get_secventa asteapta sa primeasca de la jucator o secventa de culori, si verifica daca aceasta este cea corecta. Daca secventa de culori este cea corecta, scorul si nivelul vor creste, precum si dificultatea. Dificultatea jocului vine din numarul de culori afisate si timpul pentru care o culoare este afisata. De altfel, functia get_secventa cronometreaza timpul trecut de la afisarea secventei, iar in cazul in care trec 20 de secunde, jucatorul pierde. Daca jucatorul introduce o secventa gresita sau i se termina timpul, se va afisa scorul acestuia pentru cateva secunde, dupa care se asteapta apasarea unui buton pentru reinceperea jocului.

Rezultate Obţinute

Concluzii

Am implementat toate functionalitatile pe care mi le-am propus. Proiectul, desi nu a fost cel mai complicat, a fost foarte interesant, deoarece am invatat cum sa conectez diferite module, butoane si leduri la o placuta arduino. Partea software nu mi-a pus mari dificultati, majoritatea lucrurilor fiind facute in cadrul labortatoarelor.

Download

Bibliografie/Resurse

Export to PDF