This shows you the differences between two versions of the page.
|
pm:prj2026:alexandru.jipa2803:andrei.preda0308 [2026/05/23 21:54] andrei.preda0308 |
pm:prj2026:alexandru.jipa2803:andrei.preda0308 [2026/05/24 01:22] (current) andrei.preda0308 |
||
|---|---|---|---|
| Line 55: | Line 55: | ||
| **Interacțiunea cu componentele hardware:** | **Interacțiunea cu componentele hardware:** | ||
| - | * **Joystick:** Se inițializează ADC-ul pentru cei doi pini analogici, folosind VCC ca referință și prescaler de 128. La citirea valorii ADC, pentru a preveni zgomotul electric și pentru ca nava spațială să nu se miște de una singură, s-a impus o toleranță de 50 astfel încât pentru orice valoare care se află în acea toleranță față de valoarea de mijloc (512) îi va corespunde viteza 0 pentru axa respectivă. De asemenea, pentru butonul joystick-ului, se inițializează și se activează întreruperea lui INT0 pe front descrescător. La fiecare apăsare, se va trata rutina lui INT0, care va seta o variabilă cu true, aceasta reprezentând că o cerere de apăsare a fost efectuată. Există o funcție care actualizează statusul apăsării joystick-ului, verificând dacă o cerere a existat. De asemenea, există funcții pentru a verifica dacă butonul a fost apăsat și pentru a dezactiva sau activa funcționalitatea butonului. | + | * **Joystick:** Se inițializează ADC-ul pentru cei doi pini analogici, folosind VCC ca referință și prescaler de 128. La citirea valorii ADC, pentru a preveni zgomotul electric și pentru ca nava spațială să nu se miște de una singură, s-a impus o toleranță de 50 astfel încât pentru orice valoare care se află în acea toleranță față de valoarea de mijloc (512) îi va corespunde viteza 0 pentru axa respectivă. De asemenea, pentru butonul joystick-ului, se inițializează pinul respectiv ca input și se activează întreruperea lui INT0 pe front descrescător. La fiecare apăsare, se va trata rutina lui INT0, care va seta o variabilă cu true, aceasta reprezentând că o cerere de apăsare a fost efectuată. Există o funcție care actualizează statusul apăsării joystick-ului, verificând dacă o cerere a existat. De asemenea, există funcții pentru a verifica dacă butonul a fost apăsat și pentru a dezactiva sau activa funcționalitatea butonului. |
| * **Systime:** Se folosește timer-ul 0 astfel încât la fiecare milisecundă, să se activeze o întrerupere de comparație care numără câte milisecunde au trecut de la pornirea plăcii. Numărul de milisecunde este folosit pentru calcularea valorii de delta time pentru mișcarea jucătorului și a asteroizilor independent de framerate și pentru timere software. | * **Systime:** Se folosește timer-ul 0 astfel încât la fiecare milisecundă, să se activeze o întrerupere de comparație care numără câte milisecunde au trecut de la pornirea plăcii. Numărul de milisecunde este folosit pentru calcularea valorii de delta time pentru mișcarea jucătorului și a asteroizilor independent de framerate și pentru timere software. | ||
| Line 88: | Line 88: | ||
| ===== Concluzii ===== | ===== Concluzii ===== | ||
| + | |||
| + | Realizarea acestui proiect a fost o experiență foarte interesantă, dar și destul de provocatoare, mai ales când a venit vorba de partea grafică. Cea mai mare problemă a fost să implementez logica prin care să se șteargă și să se redeseneze strict porțiunile de pe ecran unde s-au mișcat obiectele de la un frame la altul, dar după ce am reușit să fac jocul să ruleze fluid, rezultatul a meritat tot efortul. | ||
| ===== Download ===== | ===== Download ===== | ||