Candy Crush

Autor

Introducere

Despre proiect

Proiectul ales de mine urmărește o implementare minimală a celebrului joc Candy Crush. Jucătorul va avea de aliniat pe linie sau coloană o serie de bomboane de același tip pentru a le putea distruge primind puncte. Jocul se resetează într-un minut, astfel că challenge-ul îl reprezintă obținerea unui scor cât mai bun.

Scopul proiectului

Scopul proiectului este de familiarizare cu Arduino și perifericele necesare pentru implementarea jocului dar scrierea unui cod ce controlează direct componente hardware. Consider că reprezintă o metodă bună de a pune în aplicare toate noțiunile dobândite, atât software cât și hardware, pentru a realiza un joc de la 0.

Descriere generală

Schema bloc:




Funcționalitate

Jocul presupune interacțiunea cu utilizatorul printr-un joystick prin care se pot alege linia și coloana dorită și va putea alege 2 căsuțe pe care să le interschimbe. Imaginea jocului se va afișa pe LCD, cu forme specifice pentru fiecare “tip de bomboană” și se va menține un scor. De asemenea, se va emite un sunet prin intermediul buzzer-ului ori de câte ori jucătorul reușește să distrugă minim 3 elemente de același tip pe linie sau coloană sau jocul se termină (același lucru se întamplă și la apăsarea butonului de reset).

Hardware Design

Listă de piese

  1. Ordered List ItemArduino Uno
  2. LCD
  3. Modul joystick
  4. Buton
  5. Buzzer
  6. Fire
  7. Breadboard

Schema electrică


Software Design

Mediul de dezvoltare pe care l-am folosit:

  • Arduino IDE - pentru încărcarea programului pe placuță;
  • Atom - pentru dezvoltarea codului;
  • Eagle - pentru realizarea schemei electrice ;
  • Draw.io - pentru schema bloc a proiectului;

Biblioteci folosite:

  • Pentru interacțiunea cu LCD-ul, am descărcat libraria PCD8554.h 1);
  • Pentru redarea melodiei atunci când se expiră timpul alocat fiecarui joc, am folosit codul ce se află în header-ul buzzer.h 2);
  • Pentru interacțiunea cu joystick-ul, am folosit codul propus de pe site-ul de unde l-am achiziționat 3);

Funcții folosite:

  • verify_collision() - verific dacă s-a format pe linie sau pe coloană o succesiune de minim 3 bomboane de același tip
  • print_lcd() - afișez pe ecran scorul dar și matricea cu formele corespunzătoare
  • reset_lcd() - funcție apelată la apăsarea butonului sau la expirarea timpului alocat
  • init_timer() - inițializarea timer-ului
  • createChar() - realizarea corespondența între un char și un tip de bomboană pentru a ușura prelucrarea datelor
  • drawBitmap() - afișează forma unei bomboane pe ecran

Alte observații:

  1. Melodia redată la expirarea timpului alocat sau la apăsarea butonului de reset este apelată cu funcția play_melody() din buzzer.h
  2. Timer-ul este setat să aloce un minut pentru fiecare încercare a jucătorului.
  3. Alegerea căsuței pentru intershimbarea ei, se realizează cu ajutorul celor 2 valori analogice ale joystick-ului iar selectarea acesteia se obține prin output-ul digital încorporat în joystick
  4. Inițializarea ecranului cu formele de bomboane este random, astfel că după orice schimbare, se verifică dacă s-a format o nouă succesiune de bomboane

Rezultate Obţinute

Concluzii

Pot spune că a fost un proiect interesant și mă bucur că am reușit să îl implementez până la final ^_^. A fost o experiență nouă în cadrul căreia am reușit să iau puțin contact cu programarea embedded și să realizez un joc funcțional pornind doar de la câteva componente hardware.

Download

Pdf pagina ocw: PDF
Arhiva cod: candy-crush.zip

Jurnal

  • 24 Aprilie → alegerea temei proiectului
  • 08 Mai → achiziționare piese
  • 11 Mai → realizare montaj hardware final
  • 13 Mai → schema electrica in eagle
  • 17 Mai → implementare forme pe LCD și asezarea elementelor pe ecran
  • 18 Mai → updatate pagina ocw și realizare interacțiune între LCD și joystick
  • 20 Mai → interacțtiune LCD - buzzer
  • 21 Mai → varianta finală a jocului
  • 22 Mai → încărcare demo și updatare pagină ocw

Bibliografie/Resurse

pm/prj2021/agrigore/candy-crush.txt · Last modified: 2021/05/23 11:01 by diana.patru
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