Space war

Introducere

Arvat Ovidiu Daniel - 333CC

Am realizat un joc specific telefoanelor vechi Nokia.
Acesta are doua butoane pentru miscare stanga-dreapte, precum si un buton de atac si emite sunete specifice in functie de actiunea curenta.
Inceperea jocului se realizeaza prin apasarea butonului de atac(butonul rosu).
De asemenea, dificultatea jocului este incrementala. Cu cat trece mai mult timp de la un respawn, cu atat incep sa vina din ce in ce mai multi asteroizi.
Pentru a tine cont de progres, s-a atasat si un scor care apare in coltul din stanga sus pe tot parcursul jocului.
In momentul in care jucatorul pierde, se poate incepe un nou joc prin apasarea butonului de atac(butonul rosu).

Descriere generală

Schema bloc

Functionalitate

Se apasa un buton, iar apoi se updateaza ecranul Nokia a5110 corespunzator.
Buzzer-ul este triggerit atat de apasarea butonului de atac, cat si de coliziunile din cadrul jocului.

Hardware Design

Lista de piese

  • 1 x Arduino Uno
  • 2 x Breadboard
  • 1 x Ecran Nokia a5110
  • 3 x Buton
  • 2 x Led
  • 1 x Buzzer
  • 2 x Rezistenta(10K) pentru led-uri
  • 2 x Fir Tata-Tata pentru led-uri
  • 6 x Fir Tata-Tata pentru ecranul de Nokia
  • 6 x Fir Tata-Tata pentru butoane
  • 1 x Fir Tata-Tata pentru conectarea breadboard-urilor

Schema electrica

Software Design

Intreg codul aplicatiei este modularizat, lucru ce-i confera un plus de claritate, dar si un avantaj in depistarea eventualelor bug-uri.
De asemenea, functiile au un nume specific, nefiind necesare explicatii suplimentare pentru majoritatea.

Exista structuri pentru fiecare entitate din cadrul jocului: player, obstacol, glont, pickup.

In cadrul functiei loop() are loc toata logica jocului. Mai intai se verifica in ce stadiu se afla jocul(inceput, jocul propriu-zis sau final), iar, in functie de caz, pe ecran sunt afisate mesajele corespunzatoare. Mai jos se afla o scurta descriere a fiecarui stadiu:

  • Inceputul jocului: este afisat titlul jocului si o animatie care ofera instructiuni referitoare la pornirea jocului.
  • Jocul propriu-zis: se incepe popularea array-ului de obstacole, timpul de spawn al acestora devenind din ce in ce mai mic pe parcurs.
  • Finalul jocului: este afisat scorul obtinut inainte ca jucatorul sa piarda si o animatie care ofera instructiuni referitoare la pornirea jocului.


Pentru afisarea textului s-a utilizat functia declarata in header-ul suport pentru ecranul Nokia a5110 print.
Pentru afisarea jucatorului, obstacolelor, gloantelor si pickup-urilor s-au folosit functiile denumite corespunzator drawPlayer(), drawObstacles(), drawBullets(), drawLives(), iar pentru updatarea entitatilor la fiecare frame s-au utilizat functiile updatePlayer(), updateObstacles(), updateBullets() si updateLives().

In cadrul implementarii au fost tratate si coliziunile cu marginile ecranului(isInside), precum si coliziunile intre entitati(circleCircleCollision).

Rezultate Obţinute


Concluzii

Principala problema de-a lungul temei a fost memoria. Intrucat proiectul de fata este bazat destul de mult si pe partea de software, au fost facute optimizari referitoare la resursele folosite, pentru ca totul sa mearga exact asa cum trebuie.
Ma declar foarte multumit fata de rezultatul final si sunt de parere ca am ales o idee de proiect ideala, intrucat imbina perfect atat software-ul, cat si hardware-ul.

Download

Jurnal

29 aprilie 2022: inceperea paginii proiectului
16 mai 2022: inceperea realizarii montajelor
17 mai 2022: finalizarea realizarii montajelor
18 mai 2022: inceperea scrierii codului aplicatiei
27 mai 2022: finalizarea scrierii codului aplicatiei
28 mai 2022: finalizarea paginii proiectului

Bibliografie/Resurse

pm/prj2022/cstan/2000.txt · Last modified: 2022/05/27 17:24 by ovidiu_daniel.arvat
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