This shows you the differences between two versions of the page.
pm:prj2022:cristip:snake [2022/05/29 23:39] adelin.stanca [Bibliografie/Resurse] |
pm:prj2022:cristip:snake [2022/05/30 23:36] (current) adelin.stanca [Software Design] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Snake ====== | + | ====== Snake - Stanca Adelin-Nicolae 331CA ====== |
Stanca Adelin-Nicolae 331CA | Stanca Adelin-Nicolae 331CA | ||
===== Introducere ===== | ===== Introducere ===== | ||
Line 212: | Line 212: | ||
In starea de gameLost, se actualizeaza scorul maxim, se reseteaza principalele variabile globale si se trece din noua in pausedGame dupa o pauza de cateva secunde. Functia **loop** este doar o apelare a uneia dintre celelalte 4 functii principale in functie de valoare state-ului, la care se adauga si un delay care scade in functie de scorul atins, fapt ce genereaza o crestere constanta a dificultatii jocului. | In starea de gameLost, se actualizeaza scorul maxim, se reseteaza principalele variabile globale si se trece din noua in pausedGame dupa o pauza de cateva secunde. Functia **loop** este doar o apelare a uneia dintre celelalte 4 functii principale in functie de valoare state-ului, la care se adauga si un delay care scade in functie de scorul atins, fapt ce genereaza o crestere constanta a dificultatii jocului. | ||
== Dificultati intampinate == | == Dificultati intampinate == | ||
- | Majoritatea problemelor au fost generate de faptul ca nu am mai folosit pana acum acest tip de LCD. Exista cateva biblioteci speciale dedicate acestui LCD (precum **SPFD5408** si **TouchScreen**) care au insa cateva probleme pe care a trebuit sa le rezolv inainte sa incep implementarea, cum ar fi faptul ca afisarea textului se facea in oglinda. A fost nevoie sa intru si sa modific fisierul SPFD5408_Adafruit_TFT_LCD.cpp care a fost o provocare destul de mare, dat fiind ca implementarea este una destul de greaoaie. De asemenea, biblioteca TouchScreen si ecranul foloseau sisteme diferite de coordonate pentru puncte (ecranul foloseste cadranul 4, iar TouchScreen foloseste cadranul 1). Aceasta problema mi-a dat multe batai de cap tocmai in etapa de preluarea a informatiei de la input, cand jucatorul meu decidea sa o ia in sensul opus celui indicat de mine. Problema s-a rezolvat prin maparea coordonatelor X si Y si schimbarea coordonatei Y in 240 - Y. De asemenea, faptul ca este nevoie sa curat eu de fiecare data ecranul pentru a putea sa afisez versiunea curenta a jocului este un amanunt obositor deoarece duce la creare de cod repetitiv care putea fi evitat, insa nu am gasit alta solutie automata. | + | Majoritatea problemelor au fost generate de faptul ca nu am mai folosit pana acum acest tip de LCD. Exista cateva biblioteci speciale dedicate acestui LCD (precum **SPFD5408** si **TouchScreen**) care au insa cateva probleme pe care a trebuit sa le rezolv inainte sa incep implementarea, cum ar fi faptul ca afisarea textului se facea in oglinda. A fost nevoie sa intru si sa modific fisierul SPFD5408_Adafruit_TFT_LCD.cpp care a fost o provocare destul de mare, dat fiind ca implementarea este una destul de greoaie. De asemenea, biblioteca TouchScreen si ecranul foloseau sisteme diferite de coordonate pentru puncte (ecranul foloseste cadranul 4, iar TouchScreen foloseste cadranul 1). Aceasta problema mi-a dat multe batai de cap tocmai in etapa de preluarea a informatiei de la input, cand jucatorul meu decidea sa o ia in sensul opus celui indicat de mine. Problema s-a rezolvat prin maparea coordonatelor X si Y si schimbarea coordonatei Y in 240 - Y. De asemenea, faptul ca este nevoie sa curat eu de fiecare data ecranul pentru a putea sa afisez versiunea curenta a jocului este un amanunt obositor deoarece duce la creare de cod repetitiv care putea fi evitat, insa nu am gasit alta solutie automata. |
== Mediu de dezvoltare == | == Mediu de dezvoltare == | ||
Am folosit Arduino IDE pentru scrierea si incarcarea codului pe Arduino. Problema principala a fost lipsa functionalitatilor specifice unui IDE, precum autocomplete. | Am folosit Arduino IDE pentru scrierea si incarcarea codului pe Arduino. Problema principala a fost lipsa functionalitatilor specifice unui IDE, precum autocomplete. |