Dino Game 🦖

Autor: Alexandra-Petrina Ispas
Grupa: 336CA

Introducere

Descriere

Proiectul reprezintă o implementare a jocului dezvoltat de Google pentru browser-ul Google Chrome. Acesta apare în momentul în care nu există conexiune la internet.
Jucătorul este reprezentat de caracaterul Lonely T-Rex creat de Sebastien Gabriel, Alan Bettes și Edward Jung.

Flow-ul jocului

Jocul începe printr-un sunet reprezentativ, iar la apăsarea unui buton se afișează harta.
Personajul se deplasează încontinuu de-a lungul hărții, iar la apăsarea butonului sare. Scopul este ca jucătorul să supraviețuiască cât mai mult timp posibil, evitând toate obstacolele ce pot să apară pe parcurs.

Jocul conține trei moduri, cu următoarele funcționalități:

  • primul mod reprezintă jocul normal, unde utilizatorul deține controlul complet
  • al doilea mod este unul ghidat în care i se sugerează utilizatorului când ar trebui să sară în funcție de lumina unor LED-uri astfel:
    • dacă LED-ul roșu este aprins, trebuie să sară
    • dacă LED-ul verde este aprins, nu există niciun obstacol în fața sa, deci ar trebui să-și mențină poziția
  • al treilea mod este unul automat în care utilizatorul nu mai interacționează cu jocul

În cazul în care personajul atinge un obstacol, jocul se încheie, eveniment ce este semnalat inițial prin sunetul acesta emis de buzzer, urmat de afișarea scorului pe ecranul LCD-ului.

Utilitate

Consider că acest joc interactiv este o modalitate de a aprofunda conceptele de la laboratorul de PM și de a pierde timpul.

Schema bloc

Hardware Design

Componente

Nume Număr Piese
Arduino 1
LCD I2C 1
Pushbutton 2
Piezo 1
Rezistență 100 Ω 1
Rezistență 220 Ω 3
LED 2
Breadboard 1

Schema Electrică

Circuit Design

Software Design

Mediul de dezvoltare:

Librării folosite:

  • LiquidCrystal_I2C care introduce următoarele funcționalități:
    • lcd.begin() → inițializează LCD-ul
    • lcd.clear() → golește ecranul LCD-ului de carcatere
    • lcd.print() → afișează caractere pe ecranul LCD-ului

În cadrul implementării mi-am definit mai multe funcții, printre care:

  • drawDinoJump() - aceasta simulează săritura pe care o face caracterul jocului peste un obstacol
  • drawDinoWalk() - aceasta modifică aspectul caracterului pentru a conferi impresia unei deplasări continue de-a lungul hărții
  • startGame() - funcție care face inițializările necesare pentru LCD
  • graphics() - funcție care desenează caracterul
  • objectRandom() - această funcție inserează un nou obiect și face translația celor existente pentru a face lor unui nou obstacol și pentru a crea iluzia de mișcare
  • detect() - funcție care detectează coliziunile dintre caracter si obstacole
  • startGameMusic() - această funcție reproduce pe buzzer melodia de la începutul jocului
  • over() - această funcție reproduce pe buzzer melodia de la finalul jocului și afișează scorul final
  • get_mode() - aici se stabilește modul de joc în funcție de valoarea numerică a variabilei “mode”

Rezultate Obţinute

Demo cu funcționalitatea proiectului

Concluzii

Proiectul m-a ajutat să aprofundez conceptele studiate la laboratoarele de PM, să înțeleg importanța protocolului I2C, dar cea mai mare provocare a reprezentat-o partea de software.

Download

Arhiva ce conține codul-sursă al proiectului, precum și librăriile necesare poate fi descărcată de aici.

Jurnal

  • 18.04.2022 → alegerea proiectului
  • 21.04.2022 → schema bloc
  • 26.04.2022 → implementarea în Tinkercad
  • 25.05.2022 → achiziționare piese
  • 26-27.05.2022 → implementare

Bibliografie/Resurse

pm/prj2022/avaduva/alexandra.ispas.txt · Last modified: 2022/06/13 23:11 by alexandra.ispas
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