Joc de memorie controlat prin gesturi

Autor: Florea Andrei-Bogdan

Grupa: 336CC

Introducere

Jocul constă în repetarea unei secvențe de direcții (stânga, dreapta, sus, jos) de către utilizator, prin gesturi.

Dificultatea crește pe măsură ce secvențele sunt reproduse corect.

Pe un ecran LCD sunt afișate informații utile, precum viețile rămase sau timpul disponibil în cadrul rundei curente. Poate fi accesat și afișat și un leaderboard cu cele mai bune scoruri obținute de-a lungul timpului, scoruri preluate de pe un modul de card SD.

Ideea de la care am pornit a fost folosirea unui senzor de gesturi, pentru că mi se pare un mod interesant de interacționare.

Descriere generală

Inițial, pe ecran apare un meniu prin care se poate selecta începerea unui joc în modul singleplayer, multiplayer sau afișarea leaderboard-ului.

Dacă se alege începerea unui joc singleplayer, se începe cu prima rundă: o singură direcție este redată pe matricea de led-uri și jucătorul are la dispoziție 10 secunde să realizeze gestul corespunzător.

Dacă a reprodus corect, jocul se continuă, la runda următoare jucătorul având de reprodus o secvență mai lungă, într-un timp mai mare. Dacă a reprodus greșit secvența, jucătorul pierde o viață din cele 3 afișate pe ecran.

Jocul se încheie atunci când cele 3 vieți sunt epuizate sau când timpul rundei a expirat, iar scorul este salvat pe cardul SD dacă este suficient de bun.

Dacă se alege începerea unui joc multiplayer, din nou, vor fi runde care cresc în dificultate. Spre deosebire de varianta singleplayer, unde secvența era generată aleator, în varianta multiplayer, un jucător va crea secvența, urmând ca celălalt să o memoreze și să o reproducă. Rolurile se inversează în cadrul aceleiași runde.

Primul jucător care nu poate reproduce secvența celuilalt pierde.

Dacă din meniul principal este selectată afișarea leaderboard-ului, vor apărea pe ecran cele mai bune scoruri obținute de-a lungul timpului în modul de joc singleplayer, cu posibilitatea de scrolling cu ajutorul a două butoane.

Schema bloc

Hardware Design

Componente folosite

  • Arduino Uno
  • Breadboard
  • senzor gesturi APDS-9960
  • ecran LCD Nokia 5510
  • buzzer
  • modul card microSD
  • card microSD
  • 3 butoane: up, down, select/back
  • rezistoare: 4 x 10K, 1 x 1K, 1 x 330, 1 x 100

Schema electrică

Software Design

  • Mediul de dezvoltare: Arduino IDE
  • biblioteci folosite:
    • SparkFun_APDS9960 (senzorul de gesturi)
    • Adafruit_PCD8544 și Adafruit_GFX (display Nokia 5110)
    • PF (card microSD)
  • surse folosite în implementare:
    • memory_game.ino - sursa principala; face setup-ul componentelor și implementează navigarea în meniul jocului; conține și funcții pentru generarea diferitelor sunete pentru buzzer
    • apds.cpp, apds.h - surse cu functii specifice senzorului de gesturi
    • lcd_draw.cpp, lcd_draw.h - surse pentru afisarea pe ecran; conțin funcții apelate din alte părți ale codului pentru afișarea unei pagini particulare din meniu sau joc
    • leaderboard.cpp, leaderboard.h - surse pentru manipularea celor mai bune scoruri (citire/scriere pe cardul microSD, afișare pe ecran în mai multe pagini a leaderboard-ului)
    • singleplayer.cpp, singleplayer.h - surse pentru varianta singleplayer a jocului
    • multiplayer.cpp, multiplayer.h - surse pentru varianta multiplayer a jocului

Rezultate Obţinute

Link demo


Imagine cu meniul principal



Imagine în timpul jocului

Concluzii

Deși au apărut mai multe situații neprevăzute (bibliotecile uzuale nu se încadrau în memorie împreună, așa că am fost nevoit să folosesc una lightweight pentru microSD, senzorul de gesturi începuse după câteva zile să indice un gest atunci când nu era cazul, am rezolvat editând biblioteca sa), cred că în final m-am descurcat.

La început nu am crezut că o să am timp să fac ceva precum un mod multiplayer, dar fiindcă ideea a părut interesantă am încercat să adaug și acest mod în implementare.

Per total, chiar cred că a rezultat un joc interesant.

Download

Jurnal

  • 20.04.2022 - Alegere temă proiect
  • 21.04.2022 - Publicare pagină, adăugare introducere, descriere generală, schemă bloc, listă componente
  • 06.05.2022 - Au ajuns componentele
  • 19.05.2022 - Testarea individuală a componentelor
  • 20.05.2022 - Lipirea senzorului de gesturi și a matricii de LED-uri (din păcate nu am reușit să o fac să funcționeze)
  • 21.05.2022 - Realizarea meniului principal, a paginii cu leaderboard-ul (cu date aleatoare, nu integrasem încă modulul microSD)
  • 22.05.2022 - Am realizat că se umplea memoria RAM, ducând la un comportament nedefinit, înlocuire bibliotecă SD.h cu PF.h
  • 24.05.2022 - Modul singleplayer
  • 26.05.2022 - Documentație completă pentru Milestone 2, joc complet funcțional, inclusiv modul multiplayer

Bibliografie/Resurse

pm/prj2022/ndrogeanu/joc_memorie_gesturi.txt · Last modified: 2022/05/26 23:58 by andrei.florea0405
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