Bejeweled in Arduino

Realizator : Duțu Alin Călin
Grupa: 336 CC

Introducere

Ce Face?

Implementare hardware a jocului Bejeweled. Jocul consta in a face perechi de cate 3 sau mai multe pietre pretioase pentru a le distruge sau pentru a le colecta. Obiectivul jocului este de a colecta un anumit numar de piese intr-un timp limita. Jocul va avea si functionalitatea de MP3 player alaturi de salvarea progresului la iesire si un leaderboard. Melodiile, nivelele si alte informatii vor fi preluate din cardul Micro SD. Se vor putea adauga melodii si nivele custom.


Care este scopul lui?

Scopul proiectului este de a oferi o experienta unica atat jucatorilor tentati de a incerca acest joc cat si viitorilor creatori care vor incerca sa isi construiasca propriul lor joc interactiv de Piano Tiles pe Arduino.


Care a fost ideea de la care ati pornit?

Cand eram mai mic, jucam un joc asemanator cu Candy Crush Saga numit Bejeweled.


Dupa o scurta perioada de nostalgie, am decis sa implementez jocul pentru a-l readuce intr-un format hardware compact si portabil.


De ce credeti ca este util pentru altii si pentru voi?

Pentru altii proiectul poate fi un joc interactiv care iti poate alunga momentele de plictiseala. Pentru mine, pe langa faptul ca ma ajuta sa trec la PM =), ma ajuta sa fixez cunostintele de la cursuri si de la laborator mai bine, sa cunosc mai bine capabilitatile placutei Arduino si sa aflu noi functionalitati.


Descriere generală



Hardware Design

Lista de piese:

  • Arduino Uno
  • Breadboard
  • Ecran LCD Nokia 5510
  • Buzzer
  • 1 potentiometru
  • 6 butoane
  • 7 Rezistente - 4 x 10K, 2 x 1k, 1 x 100
  • Fire tata-tata si mama-tata


Schema electrica



Diagrama de semnale



Software Design

Mediu dezvoltare:

  • Arduino IDE
  • Eagle CAD

Librarii si surse 3rd-party:

  • Adafruit_PCD8544.h
  • Arduino.h
  • avr/pgmspace.h
  • EEPROM.h

Algoritmi si structuri pe care planuiti sa le implementati:

  • Algoritm pentru modul de meniu
    • Inceperea unui joc nou
    • Inceperea unui joc salvat
    • Inchiderea jocului
  • Algoritm pentru modul de joc
    • Generarea pietrelor
    • Generarea interfetei jocului
    • Mutarea pietrelor
    • Combinarea si spargerea/colectarea pietrelor
    • Adaugarea de sunete
    • Cronometrarea timpului
    • Salvarea jocului la iesire din joc
    • Castigarea si pierderea jocului
    • Salvarea unui Leaderboard folosind EEPROM
    • Calcularea scorului


Rezultate Obţinute

Mai jos se regasesc clipuri video care prezinta modul de functionare al jocului.


Concluzii

Proiectul a fost interesant din punct de vedere atat hardware cat si software oferind nenumarate posibilitati de implementare. Partea de grafica pe ecran a fost partea mea preferata :-) . Desenarea folosind harti Bitmap mi se pare fantastica.

Pe de alta parte, proiectul s-a dovedit a fi mai costisitor ca timp decat ma asteptam si mai hamesit dupa resurse decat credeam, plus timpul pe debugging si incompatibilitatile intre biblioteci. Din observatiile mele, biblioteca Adafruit pentru ecranul de Nokia este foarte buna pe partea de grafica, folositoare mai ales la crearea de jocuri, insa incompatibilitatile sale cu bibliotecile microSD datorita SPI-ului ofera mari batai de cap celui care incearca sa le faca pe amandoua.

Asa ca tie iti adresez, cititorule, tu care cauti idei pentru un proiect la PM aici, sa ai in vedere aspectele de mai sus.

In concluzie, proiectul cu toate dificultatile acestuia este un proiect misto si a iesit extraordinar de bine la final, ceea ce ma bucura nespus!

Codul sursa al proiectului

Jurnal

Data Eveniment
21.04.2022 1) Creare site wiki
2) Adaugare descriere proiect, schema bloc, lista componente, algoritmi de implementat
07.05.2022 1) Cumparat piese necesare pentru proiect
23.05.2022 1) Crearea meniului
2) Crearea functiei de iesire din joc
24.05.2022 1) Creare model pietre
2) Adaugare grid-uri si scor in joc
3) RIP ecran nokia, you will be remembered :-\
25.05.2022 1) Implementarea pe un program separat a functiilor de muzica
2) Implementarea submeniului din timpul jocului
26.05.2022 1) Eliminari de bug-uri la submeniu
2) Implementarea miscarilor jocului
27.05.2022 1) Eliminari de bug-uri la fizica jocului
2) Actualizarea paginii de WIKI
3) Cumparat alt ecran nokia
28.05.2022 1) Implementarea unui leaderboard pentru scorurile din ambele gamemode-uri
2) Pregatiri pentru implementarea salvarilor
3) Reorganizare circuit pe Breadboard
29.05.2022 1) Implementarea salvarilor de joc
2) Implementarea salvarilor in memoria EEPROM
3) Renuntarea la modulului de micro SD in urma incompatibilitatilor bibliotecilor cu biblioteca de ecran de la Adafruit
30.05.2022 1) Implementarea modului Casual
2) Adaugare sunete la apasarea butoanelor
3) Adaugare sunete la castigarea si pierderea unui joc
4) Adaugare meniu pentru alegerea unui joc nou sau a celui salvat
5) Eliminari de bug-uri la debouncer
01.06.2022 1) Reorganizarea codului
2) Actualizarea finala a paginii de WIKI
3) Adaugat Demo-uri


Bibliografie/Resurse

Resurse hardware

Resurse software

pm/prj2022/ndrogeanu/bejeweled_in_arduino.txt · Last modified: 2022/06/08 12:47 by alin_calin.dutu
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