This is an old revision of the document!
Proiect realizat de Adina-Maria Amzarescu, 331CA
Prezentarea proiectului:
Motivatia pentru realizarea acestui proiect:
Acest proiect isi doreste sa documenteze atat modul de realizare al unui joc de tipul endless runner, cat si interactiunea utilizatorului cu acest tip de jocuri.
Jocurile de tip “endless runner” ofera un acdru ideal pentru a pune jucatorul intr-o stare de “Flow” [1]. Alegerile utilizatorului creeaza rezultate rapid, iar astfel acesta se simte “skilled”, rezultand intr-o oarecare dependenta de acest tip de jocuri.
Schema bloc a proiectului:
Jocul este o varianta a unui joc de tipul “endless runner”. Jocul se va desfasura pe un LCD 16×2, utilizatorul va controla miscarea playerului dintr-un joystick. Proiectul foloseste o placuta Arduino UNO R3. Proiectul va avea de asemenea si 3 LED-uri (rosu, galben, verde) pentru a-i indica utilizatorului cand va incepe jocul si pentru a-i indica daca a depasit sau nu obstacolul. De asemenea va fi un buzzer pentru a semnaliza sonor depasirea unui obstacol.
Componentele principale:
Alte componente:
Proiectul realizat in TinkerCad:
Montarea pe placuta:
LCD I2C:
Modulul Joystick:
Alert Buzzer:
Music Buzzer:
LED-uri:
Realizarea proiectului:
Proiectul va fi dezvoltat in limbajul C++ in Arduino IDE 2.1.0.
Librarii auxiliare:
* New-LiquidCrystal
* ProtoStax_MmlMusicPlayer
Modul de joc:
Ideea codului este de a deplasa terenul la stanga, nu jucatorul la dreapta. Jucatorul va sta pe loc si se va deplasa doar sus si jos, folosing joystick-ul.
Inainte sa inceapa jocul, pe ecran va fi afisat textul: Push to Start. Cand utilizatorul va apasa pe joystick terenul se va genera si deplasa la stanga. Inainte de generarea terenului, cele 3 leduri se vor aprinde pe rand, ultimul, cel verde, semnaland inceperea jocului.
Aprinderea ledurilor a fost implementata folosind Analog Digital Convertor (ADC).
Pentru a depasi obstacolele, utilizatorul trebuie sa mute pe axa Ox joystick-ul. Punctele obtinute sunt reprezentate de numarul de secunde petrecute in joc si vor fi afisate in partea dreapta a ecranului.
De fiecare data cand player-ul sare actiunea sa va fi anuntata de un semnal sonor.
In momentul in care player-ul se loveste de un obstacol, jocul se opreste.
In timpul jocului va fi muzica pe fundal. Pentru muzica am folosit Musescore
* T160 - tempo-ul
* O4 - octava 4
Pentru realizarea caracterului si a obstacolelor am folosit LCD-Character-Creator
Player:
Obstacole:
Functii:
1. initializeGraphics():
Această funcție inițializează grafica personalizată pentru afișajul LCD prin crearea de modele de caractere bazate pe matrice de octeți predefinite. Setează reprezentări grafice pentru mișcările jucătorilor, terenul și copacii.
2. advanceTerrain():
Această funcție este responsabilă pentru alunecarea terenului spre stânga în trepte de jumătate de caracter. Acesta actualizează matricele de teren pe baza terenului actual și a noului teren.
3. drawPlayer():
Această funcție atrage jucătorul pe afișajul LCD în funcție de poziția jucătorului și actualizează caracterele terenului în consecință. De asemenea, verifică dacă există coliziuni între jucător și teren.
4. Bucla principală:
Bucla principală a programului actualizează continuu starea jocului, verifică intrarea pe joystick, avansează terenul, actualizează poziția jucătorului și redesenează scena pe afișajul LCD. De asemenea, se ocupă de redarea muzicii și controlul LED-ului în funcție de starea jocului.
Pentru debug am folosit:
USART. Digital Debugging
Toate detaliile proiectului se regasesc in urmatorul folder:
Motivatia proiectului:
[1] https://en.wikipedia.org/wiki/Flow_(psychology)
[2] https://en.wikipedia.org/wiki/Category:Endless_runner_games
Resurse Hardware:
Tutoriale:
[6] https://www.youtube.com/watch?v=j0n7DlApSv4
Resurse Software:
[8] https://github.com/fmalpartida/New-LiquidCrystal
[9] https://maxpromer.github.io/LCD-Character-Creator/
Tutoriale:
[10] https://github.com/protostax/ProtoStax_MmlMusicPlayer