This shows you the differences between two versions of the page.
|
pm:prj2026:alexandru.jipa2803:acondorache [2026/05/22 12:59] acondorache [Software Design] |
pm:prj2026:alexandru.jipa2803:acondorache [2026/05/23 20:41] (current) acondorache [Concluzii, Rezultate] |
||
|---|---|---|---|
| Line 84: | Line 84: | ||
| * drawLevel: fiecare nivel este reprezentat in forma ascii intr-o matrice 14x10 unde # reprezinta bloc obisnuit, P pozitia la jucator, E inamici, C chest-uri cu diferite upgrade-uri. aceasta functie parcurge toata matricea si deseneaza nivelul | * drawLevel: fiecare nivel este reprezentat in forma ascii intr-o matrice 14x10 unde # reprezinta bloc obisnuit, P pozitia la jucator, E inamici, C chest-uri cu diferite upgrade-uri. aceasta functie parcurge toata matricea si deseneaza nivelul | ||
| * interactChest: in joc exista 2 stats-uri hp-ul jucatorului si puterea lui de atac adica cat damage da cand un proiectil a avut o coliziune cu un inamic. Cand jucatorul interactioneaza cu un chest atunci in mod random se va decide ce fel de resursa va primi jucatorul | * interactChest: in joc exista 2 stats-uri hp-ul jucatorului si puterea lui de atac adica cat damage da cand un proiectil a avut o coliziune cu un inamic. Cand jucatorul interactioneaza cu un chest atunci in mod random se va decide ce fel de resursa va primi jucatorul | ||
| + | * pickNextLevel: aceasta functie se asigura ca urmatorul nivel care va fi in joc poate fi conectat cu precedentul. Astfel daca jucatorul a intrat pe usa de sus atunci trebuie sa asigur ca urmatorul nivel tot are usa din partea de sus a nivelului. Plus aceasta functie asigura faptul ca nivelurile cu chest-uri si fara chest-uri vor aparea balansat adica nu va fi situatia in care jucatorul da de 5 camere la rand cu chest-uri. | ||
| Jocul functioneaza asa cum mi-am propus deoarece am facut mai multe expeditii in care am explorat mai multe camere, inclusiv interactiunea cu inamicii, chest-uri si proiectile. | Jocul functioneaza asa cum mi-am propus deoarece am facut mai multe expeditii in care am explorat mai multe camere, inclusiv interactiunea cu inamicii, chest-uri si proiectile. | ||
| + | == Optimizari facute: == | ||
| + | Desi Arduino Mega are 8 KB de SRAM pentru jocul meu aceasta dimensiune este prea mica. Astfel m-am folosit de memoria flash a microcontrelui. Toate sprite-urile folosite in jocul meu au fost incarcate in memoria flash folosind in cod atributul PROGMEM. Fiecare sprite are in medie dimensiunea 24x24 pixeli. Nivelele tot sunt salvate in memoria flash. Am in total 30 de nivele, initial jucatorul se afla la nivelul 0 care este practic gol, in acest timp urmatorul nivel este deja decis, care va fi nivelul urmator este ales la random. | ||
| + | Miscarea entatilor pe ecran este la fel optimizata. Astfel este redesenat doar dreptunghiul din ecran care se modifica si este marginit de pozitia veche si pozitia noua a entitatii. Apoi sprite-urile sunt reprezentate ca niste vectori de 32x32, 16x16, 24x24 elemente dar au si portiuni care sunt transparente astfel am ales o culoare care va reprezenta ca acel pixel este transparent si astfel el nu va fi desenat. Astfel am incercat sa compensez faptul ca placuta are o frecventa a procesorului mai mica ca un procesor normal si sa nu am ca personajul apare si dispare de pe ecran, dar se modifica doar acei pixeli care trebuie redesenati. | ||
| - | ===== Rezultate Obţinute ===== | ||
| - | <note tip> | + | ===== Concluzii, Rezultate ===== |
| - | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
| - | </note> | + | |
| - | ===== Concluzii ===== | + | Acest proiect m-a ajutat foarte mult sa inteleg cum sa folosesc mai bine microcontrolerele cum ar fi Arduino si cum sa lucrez cu un ecran care are un refresh rate mai mic |
| + | Ca rezultate proiectul este finisat si jocul este interesant de jucat in timpul liber. | ||
| - | ===== Download ===== | ||
| - | <note warning> | + | Link demo: |
| - | O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). | + | [[https://drive.google.com/file/d/1tccLH1Gs1xAEqbNDfu5Hg3Xr-CNV5Sut/view?usp=drive_link|demo]] |
| + | ===== Download ===== | ||
| - | Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:pm:prj20??:c?** sau **:pm:prj20??:c?:nume_student** (dacă este cazul). **Exemplu:** Dumitru Alin, 331CC -> **:pm:prj2009:cc:dumitru_alin**. | + | {{:pm:prj2026:alexandru.jipa2803:acondorache:dungeonexplorer.zip|}} |
| - | </note> | + | |
| - | ===== Jurnal ===== | + | [[https://github.com/SanduCondorache/DungeonExplorer]] |
| - | <note tip> | ||
| - | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | ||
| - | </note> | ||
| ===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
| - | <note> | + | [[https://docs.arduino.cc/resources/datasheets/A000067-datasheet.pdf|Arduino Mega datasheet 1]] |
| - | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | |
| - | </note> | + | |
| - | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | + | [[https://ww1.microchip.com/downloads/en/devicedoc/atmel-2549-8-bit-avr-microcontroller-atmega640-1280-1281-2560-2561_datasheet.pdf|Arduino Mega datasheet 2]] |
| + | [[https://forum.arduino.cc/uploads/short-url/fTrC55TqThgJtzQom9cJ1APwmty.pdf|TFT Shield v2.2]] | ||