Differences

This shows you the differences between two versions of the page.

Link to this comparison view

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 =====
  
pm/prj2025/rnedelcu/ioan_alexandru.popa.1748439457.txt.gz · Last modified: 2025/05/28 16:37 by ioan_alexandru.popa
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0