Breakout game

Contact: Login to see contact info.

Introducere

Ce face proiectul?

Proiectul constă în implementarea unui joc asemănător cu Breakout pe un ecran LCD de 1.44” (128×128 px). Controlul platformei se va efectua folosind un accelerometru. Se vor folosi butoane pentru a schimba lvl și setari, LED-uri pentru efecte vizuale si un buzzer pentru efecte sonore.

Care este scopul proiectului?

Scopul este a crea un joc similar cu Breakout (cu mici îmbunătățiri), a cărui prima versiune a fost creată de Atari Inc. în 1976.

Ideea de la care am pornit

Am plecat de la dorința de a face un joculeț retro care va fi asemănător cu jocul Breakout, fiind inspirat de multe jocuri de genul acesta.

Utilitate

Distracție si relaxare, posibilitatea de a simți atmosfera primilor jocurilor video.

Descriere generală

Afișarea grafică a jocului se va face pe ecranul LCD. Controlul platformei se va face cu ajutorul unui accelerometru. Înclinând dispozitivul in direcția dorita, va fi posibila mutarea platformei. Vor fi 3 butoane care se vor folosi pentru a selecta lvl si pentru a modifica setările jocului. LED-urile se vor folosi pentru efecte vizuale. Spre exemplu, culoarea LED-urilor se va schimba in funcție de ce culoare a fost la ultimul obstacol lovit. Buzzer este folosit pentru efecte sonore.

Hardware Design

Lista de componente:

  • Accelerometru adxl335
  • Arduino Uno R3
  • Breadboard
  • 3 Butoane
  • Buzzer activ yl-44
  • Fire
  • LCD de 1.44” (128×128 px)
  • 2 LED-uri RGB
  • 3 rezistoare

Schema Hardware

Accelerometru este folosit pentru a controla platforma din joc. Inclinand dispozitivul in dreapta/stanga se va misca si platforma.

LED-urile isi schimba culoarea pe culoarea obstacolului distrus.

Buzzer face zgomote specifice la distrugerea obstacolelor, cand se atinge de platforma, cand se pierde o viata sau cand se schimba nivelul jocului.

Am folosit 3 butoane:

  • Butonul din stanga schimba nivelul jocului
  • Butonul din mijloc incepe miscarea bilei (cand se incepe jocul si bila se afla pe platforma)
  • Butonul din dreapta stange/aprinde LED-urile

Software Design

Am separat codul in 5 fisiere:

  • game - in fisierul acesta se executa setup() si loop() si se apeleaza functii din celelalte fisiere.
  • utils - aici sunt functii care implementeaza logica si fizica jocului
  • accelerometer_utils - functiile din acest fisier se ocupa cu citirea datelor de la accelerometru.
  • LCD_utils - aici sun functii foosite pentru a cotrola LCD.
  • levels - aici sunt stocate array-uri cu datele nivelelor jocurilor si functii ajutatoare.

Biblioteci utilizate

Pentru implementarea proiectului am folosit 3 biblioteci externe pentru controlul LCD-ului:

  • SPI.h
  • Adafruit_GFX.h
  • Adafruit_ST7735.h

Reguli joc

Scopul jocului este de a distruge toate obstacole prevenind caderea bilei in afara platformei. In partea de sus a ecranului sunt afisate vietele jucatorului si scorul. Jucatorul are trei viete si daca le pierde pe toate scorul se va reseta la 0. Fiecare obstacol distrus adauga la scorul 10 puncte. In jocul exista trei nivele care se pot schimba apasand butonul din dreapta.

Rezultate Obţinute

Demo

Concluzii

Acest proiect m-a ajutat sa inteleg mai bine cum se face legatura intre hardware si software. Avand multe componente, am avut nevoie sa aranjez toate componente astfel incat dispozitivul final sa fie compact si usor de utilizat. La finalul proiectului cred ca am reusit sa ating toate obiectivele propuse. S-a primit un dispozitiv cu un joculet complet functional.

Download

Bibliografie/Resurse

pm/prj2021/dbrigalda/breakout-game.txt · Last modified: 2021/06/04 18:06 by constantin.mihailov
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