T-Rex Dyno Game

Nume: Voicu Andrei - Daniel
Grupa: 332CC

Introducere

T-Rex Dyno este un joc de tip endless runner inspirat din joculetul pe care il ofera browser-ul Google Chrome in momentul in care pica conexiunea la Internet. Utilizatorul are ca scop principal evitarea obstacolelor, iar pe masura ce inainteaza, scorul acestuia va creste.

Descriere generală

Utilizatorul este intampinat cu o pagina de meniu in care are ca alegeri inceperea unui joc nou si consultarea paginii cu setari (aceasta contine setari de dificultate, sunet).

Navigarea intre meniuri se realizeaza unidirectional (in momentul in care se ajunge la ultima optiune si se doreste inaintarea la urmatoarea, atunci se va reseta) prin intermediul unuia dintre senzori IR, iar alegerea optiunii se realizeaza prin cel de-al doilea senzor.

In timpul jocului, utilizatorul va folosi senzorii IR pentru a se feri de obstacole (pasari, cactusi): cel din partea stanga initiaza ghemuirea, iar cel din partea dreapta initiaza saritura. Aceste actiuni sunt acompaniate si de niste efecte sonore redate prin intermediul buzzer-ul activ. Viata jucatorului este indicata pe ecran, dar si prin cele 3 LED-uri rosii (acestea se sting in momentul in care jucatorul pierde din viata).

Pentru a oferi portabilitate sistemului, am conectat o baterie de 9V cu rol de alimentare.

Hardware Design

Listă componente

  • Arduino Uno
  • Breadboard
  • Display OLED (SSD1306)
  • 3 LED-uri
  • 2 senzori IR (HW-201)
  • 1 buzzer activ
  • o baterie 9V

Schemă electrică

Alimentare

Circuitul poate fi alimentat fie prin USB (de la Laptop), fie prin power jack de la bateria externa de 9V.

Software Design

Medii de dezvoltare

  • Arduino IDE
  • VSCode (Arduino Extension by Microsoft)

Biblioteci utilizate

  • Adafruit_GFX.h
  • Adafruit_SSD1306.h
  • EEPROM.h

Implementare

Schema Logica

waitForPressAndRelease()

Asteapta ca senzorul sa detecteze obstacol, dupa care asteapta indepartarea obstacolului.

takeDamage(byte& lives) & increaseHealth(byte& lives)

Modifica viata si actualizeaza starea LED-urilor indicatoare.

void gameLoop()

Aici este implementat jocul propriu zis; verifica coliziunile, actualizeaza animatiile, deplaseaza obstacolele, actualizeaza scor, afiseaza sprite-urile.

void setup()

Initializeaza LED-urile si buzzerul ca iesiri si senzorii IR ca intrari. Incarca high-score din EEPROM, face seed la generatorul de numere random si afiseaza splash screen.

void loop()

Realizeaza tranzitiile dintre meniuri si joc. Apeleaza functiile de render_ corespunzatoare care au rol de a afisa scena curenta (meniu principal, optiuni sau joc).

Rezultate Obţinute

Concluzii

Proiectul m-a facut sa realizez cate lucruri interesante se pot face cu un arduino si cateva componente simple. voicu_andrei_daniel_rezultat_final.jpg

Download

Jurnal

  • 05.05.2022 - Testare componente și asamblare componente
  • 13.05.2022 - Actualizare pagină ocw (descriere, lista piese, schema bloc)
  • 01.05.2022 - Realizare bitmaps ce urmeaza sa fie folosite in joc
  • 03.05.2022 - Implementare obstacole si dinozaur (partea grafica + deplasare)
  • 04.05.2022 - Implementare coliziuni, viata, efecte vizuale
  • 24.05.2022 - Code Refactoring
  • 25.05.2022 - Modificare artstyle joc; implementare meniu principal si meniu setari
  • 26.05.2022 - Actualizare pagină ocw (implementare hardware, software, rezultate, concluzii, bibliografie)

Bibliografie/Resurse

pm/prj2022/ndrogeanu/dyno.txt · Last modified: 2022/05/29 11:16 by andrei.voicu2409
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