Joc dinozaur

Introducere

Grumezescu Rares 333CC

Acest proiect are ca scop realizarea unui joc cu un dinozaur care sare garduri. Jocul se afiseaza pe un ecran LCD I2C, unde va fi reprezentat un dinozaur care sare niste obstacole de forma unor garduri.

La momentul inceperii jocului, jucatorul are posibilitatea de a alege unul din cele 3 grade de dificultate ale jocului: Easy, Medium, Hard. Jocul consta din 3 nivele, care se succed in momentul in care jucatorul a ajuns la un scor suficient de mare.

Atat selectarea gradului de dificultate, cat si saritul gardurilor vor fi posibile prin apasarea unui buton existent pe breadboard.

Jucatorul are la dispozitie 3 vieti, pierzand cate una in momentul coliziunii cu un obstacol. Jocul contine si 3 LED-uri care se aprind in functie de numarul de vieti ramase. Cu cat vietile se imputineaza, cu atat ledurile se sting unul dupa altul, atentionand jucatorul in privinta numarului de vieti pe care le mai are.

In momentul in care player-ul se izbeste de un obstacol, un buzzer va suna, indicand coliziunea care tocmai a avut loc.

Jocul mai dispune si de un scor ce apare permanent pe ecran in coltul din dreapta sus, indicand scorul pe care jucatorul l-a obtinut pana in acel moment.

Descriere generală

Hardware Design

Schema electrica

Componente

  • 1 x Arduino Uno
  • 1 x Breadboard
  • 1 x Ecran LCD 1602 cu interfata I2C si Backlight Albastru
  • 1 x Buton
  • 3 x Led
  • 1 x Buzzer
  • 1 x Rezistenta(1K Ohmi) pentru buzzer
  • 4 x Rezistenta(220 Ohmi) pentru led-uri
  • 1 x Rezistenta(220 Ohmi) pentru buton
  • 3 x Fir Tata-Tata pentru led-uri
  • 4 x Fir Mama-Tata pentru ecranul LCD
  • 1 x Fir Tata-Tata pentru buton
  • 1 x Fir Tata-Tata pentru buzzer
  • 1 x Fir Tata-Tata pentru GND

Software Design

In interiorul functiei loop se apeleaza functia intro(), responsabila de alegerea nivelului de dificultate. Odata aleasa dificultatea, se va stabili si viteza cu care jocul va functiona, folosindu-se variabila “frame”. Tot in loop se face trecerea de la un nivel la altul, apelandu-se succesiv functiile level1(), level2() si level3(). De asemenea, in loop se tine si evidenta vietilor de care dispune player-ul, aprinzandu-se atatea led-uri cate vieti ramase mai are player-ul. Cand numarul de vieti ajunge la 0, atunci se afiseaza pe ecran mesajul “GAME OVER”.

Codul este impartit in mai multe functii, fiecare ocupandu-se de un alt aspect al functionarii lui.

Functia initializeGraphics(): initializeaza obiectele care vor aparea pe harta, creand caractere specifice ce se vor afisa repetitiv in fiecare cadru succesiv.

Functia drawHero() se ocupa de: desenarea jucatorului in fiecare ipostaza a jocului, stabileste daca jucatorul s-a lovit sau nu de un obstacol, respectiv actualizeaza si afiseaza scorul pe ecran.

Functiile level1(), level2(), level3(): sunt functii care seamana ca si functionalitate una cu alta; ele actualizeaza cadrele pe ecran si tot in interiorul lor se porneste buzzer-ul daca player-ul s-a lovit de un obstacol. Acestea primesc ca parametru un numar cu care, impreuna cu functia delay, vor reprezeta succesiuna cadrelor cu viteza corespunzatoare.

Functia intro(): se ocupa cu stabilirea dificultatii la care player-ul va juca.

Functiile loop() si setup() au aceeasi functionalitate ca si in laborator.

Rezultate Obţinute

Concluzii

Acest proiect reuseste sa se foloseasca de componente hardware ca sa evidentieze anumite aspecte ale codului jocului. Astfel, evenimente precum o coliziune sau pierderea unei vieti sunt reprezentate folosind efecte sonore sau luminoase extrem de sugestive, prin care cel care se joaca jocul acesta sa perceapa mult mai usor ceea ce se intampla in joc. Efectele sonore atrag mult mai bine atentia in momentul in care jucatorul s-a lovit de un obstacol, iar efectul produs de led-uri este unul extrem de sugestiv, in momentul in care jucatorul pierde vietile puse la dispozitie. Consider ca proiectul este bine realizat, personal fiind multumit de rezultat.

Download

Jurnal

16 mai 2022: inceperea realizarii montajelor
18 mai 2022: finalizarea realizarii montajelor
19 mai 2022: inceperea scrierii codului aplicatiei
26 mai 2022: finalizarea scrierii codului aplicatiei
27 mai 2022: finalizarea paginii proiectului

Bibliografie/Resurse

pm/prj2022/cstan/500.txt · Last modified: 2022/05/27 23:52 by rares.grumezescu
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