This shows you the differences between two versions of the page.
|
pm:prj2025:rnedelcu:ioan_alexandru.popa [2025/05/28 16:37] ioan_alexandru.popa |
pm:prj2025:rnedelcu:ioan_alexandru.popa [2025/05/28 17:05] (current) ioan_alexandru.popa |
||
|---|---|---|---|
| Line 107: | Line 107: | ||
| * Mașinuța merge înainte la un interval de timp sau la joystick înainte | * Mașinuța merge înainte la un interval de timp sau la joystick înainte | ||
| * Zidurile se schimbă periodic | * Zidurile se schimbă periodic | ||
| + | |||
| + | Meniul principal este, de asemenea implementat ca script JavaScript. | ||
| ==== Interfața JavaScript ==== | ==== Interfața JavaScript ==== | ||
| Line 122: | Line 124: | ||
| Runtime-ul implementează următoarele funcții: | Runtime-ul implementează următoarele funcții: | ||
| - | * ''brickVibrate(intensity: number, duration: number)'' - Motorul cu vibrații va vibra la intensitatea ''intensity'' (număr între 0 și 255; 255 = maxim, 180 - valoare intermediară bună) timp de ''duration'' milisecunde. | + | * ''brickVibrate(intensity: number, duration: number)'' - Motorul cu vibrații va vibra la intensitatea ''intensity'' (număr între 0 și 255; 255 = maxim, 180 = valoare intermediară bună) timp de ''duration'' milisecunde. |
| - | * ''brickMainDraw()'' - desenează pe ecranul principal la celula specificată (linia ''y'', coloana ''x'') culoarea specificată | + | * ''brickMainDraw(x: number, y: number, color: number)'' - desenează pe ecranul principal la celula specificată (linia ''y'', coloana ''x'') culoarea specificată |
| - | * ''brickSecondaryDraw()'' - desenează pe ecranul principal la celula specificată (linia ''y'', coloana ''x'') culoarea specificată | + | * ''brickSecondaryDraw(x: number, y: number, color: number)'' - desenează pe ecranul principal la celula specificată (linia ''y'', coloana ''x'') culoarea specificată |
| * ''brickTickReset()'' - nu se va mai executa tick-ul următor, se va executa peste ''TICK_TIME'' milisecunde (dacă nu se mai apelează ''brickTickReset()'' încă o dată până atunci) | * ''brickTickReset()'' - nu se va mai executa tick-ul următor, se va executa peste ''TICK_TIME'' milisecunde (dacă nu se mai apelează ''brickTickReset()'' încă o dată până atunci) | ||
| * ''brickGameOver(x: number, y: number, noRestart: boolean)'' - inițializează ecranul de game over cu „X”-ul în punctul specificat (linia ''y'', coloana ''x'') și vibrație maximă. După un timp se ve reporni jocul în același context (variabilele globale sunt păstrate, dar se va rula ''handleInit()'') dacă ''noRestart'' e ''false'', altfel se va reseta consola la meniul principal. | * ''brickGameOver(x: number, y: number, noRestart: boolean)'' - inițializează ecranul de game over cu „X”-ul în punctul specificat (linia ''y'', coloana ''x'') și vibrație maximă. După un timp se ve reporni jocul în același context (variabilele globale sunt păstrate, dar se va rula ''handleInit()'') dacă ''noRestart'' e ''false'', altfel se va reseta consola la meniul principal. | ||
| Line 130: | Line 132: | ||
| Jocurile trebuie să implementeze următoarele funcții, ce se apelează în cardul unor evenimente relevante în joc: | Jocurile trebuie să implementeze următoarele funcții, ce se apelează în cardul unor evenimente relevante în joc: | ||
| + | |||
| + | * ''handleInit()'' - se apelează inițializarea jocului la pornire sau după o pierdere de viață prin ''brickGameOver(x, y, false)''. Aici se inițializează variabilele ce indică starea vieții curente. Inițializarea numărului de vieți sau alte chestii ce se păstrează de-a lungul vieților se face direct în corpul scriptului. | ||
| + | * ''handleTick()'' - se apelează la fiecare tick - bun pentru aplicarea mișcărilor automate etc. | ||
| + | * ''handleAction()'' - se apelează la apăsarea butonului acțiune (cel mai din dreapta). | ||
| + | * ''handleUp()'' - se apelează la deplasarea în sus a joystick-ului. | ||
| + | * ''handleLeft()'' - se apelează la deplasarea în stânga a joystick-ului. | ||
| + | * ''handleRight()'' - se apelează la deplasarea în dreapta a joystick-ului. | ||
| + | * ''handleDown()'' - se apelează la deplasarea în jos a joystick-ului. | ||
| + | |||
| + | Aceste funcții nu trebuie să dureze mult, doar cât trebuie pentru a administra evenimentul în cauză. | ||
| + | Pentru a încuraja bunele practici, există un watchdog ce nu poate fi resetat de codul Javascript, doar de alte timere interne, care să reseteze consola dacă JavaScriptul durează prea mult. | ||
| ===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
| Line 147: | Line 160: | ||
| {{:pm:prj2025:rnedelcu:ioan_alexandru.popa:hardwarebun1.jpg?400|}} | {{:pm:prj2025:rnedelcu:ioan_alexandru.popa:hardwarebun1.jpg?400|}} | ||
| {{:pm:prj2025:rnedelcu:ioan_alexandru.popa:hardwarebun2.jpg?400|}} | {{:pm:prj2025:rnedelcu:ioan_alexandru.popa:hardwarebun2.jpg?400|}} | ||
| + | |||
| + | ==== Software ==== | ||
| + | {{:pm:prj2025:rnedelcu:ioan_alexandru.popa:20250528_165839.jpg?400|}} | ||
| + | {{:pm:prj2025:rnedelcu:ioan_alexandru.popa:20250528_165833.jpg?400|}} | ||
| + | {{:pm:prj2025:rnedelcu:ioan_alexandru.popa:20250528_165851.jpg?400|}} | ||
| + | {{:pm:prj2025:rnedelcu:ioan_alexandru.popa:20250528_165854.jpg?400|}} | ||
| + | {{:pm:prj2025:rnedelcu:ioan_alexandru.popa:20250528_165921.jpg?400|}} | ||
| ===== Concluzii ===== | ===== Concluzii ===== | ||