Differences

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

Link to this comparison view

pm:prj2023:vstoica:2048 [2023/05/23 22:01]
adrian.croitoru2505 [Software Design]
pm:prj2023:vstoica:2048 [2023/05/28 00:30] (current)
adrian.croitoru2505 [Download]
Line 63: Line 63:
     - gameState (in ce stadiu se afla jocul: neinceput, in desfasurare,​ VICTORY sau GAME OVER)     - gameState (in ce stadiu se afla jocul: neinceput, in desfasurare,​ VICTORY sau GAME OVER)
     - pozitia fiecarui tile pe ecran     - pozitia fiecarui tile pe ecran
- 
- 
----- 
  
  
Line 76: Line 73:
  
 <note tip> <note tip>
-Se folosesc multiple variabile de debounce pentru a evita situatia in care aceeasi comanda este efectuata de N ori. (e.g. atunci cand tinem joystick-ul blocat in pozitia RIGHT)+Se folosesc multiple variabile de **debounce** pentru a evita situatia in care aceeasi comanda este efectuata de N ori. (e.g. atunci cand tinem joystick-ul blocat in pozitia RIGHT)
 </​note>​ </​note>​
 +
 +=== Game Flow ===
 +
 +1. ''​getCurrentCommand()''​ -> se obtin valorile celor doua axe OX si OY de la joystick si, in functie de niste threshold-uri,​ se intoarce comanda curenta (UP, DOWN, LEFT, RIGHT, NOTHING)
 +
 +2. ''​executeCommand()''​ -> se executa comanda obtinuta anterior, doar daca este diferita de cea care a fost executata ultima data (deoarece logica se afla intr-o bucla infinita, daca am tine, spre exemplu, joystick-ul in pozitia LEFT, s-ar executa in continuu mutarea LEFT, ceea ce nu este de dorit). Tot la acest pas, se trigger-uieste un semnal catre **buzzer** (doar cand comanda este valida si posibila), cu o durata de 15ms.
 +
 +3. ''​evaluateGame()''​ -> se evalueaza starea jocului. In functie de marimea grid-ului, se verifica daca pe tabla exista tile-ul castigator. In caz pozitiv, este vorba de un **VICTORY**.
 +Altfel, se verifica sa mai existe cel putin o mutare posibila. In caz negativ, este **GAME OVER**.
 +Daca niciuna dintre conditii nu s-a implinit, starea jocului ramane **IN_PROGRESS** si se continua flow-ul curent.
 +
 +4. ''​render()''​ -> se randeaza cadrul curent. Se tine cont de **gameState**,​ de marimea grid-ului si se randeaza cadrul corespunzator.
 +
 +5. ''​move(moveType);​\\
 +    createTile();''​ -> se efectueaza urmatoarea mutare si se creeaza si adauga un nou tile pe tabela (desigur, in mod **random**).
 +    ​
 +<note tip>
 +Flow-ul prezentat mai sus **se repeta la infinit**, pana jocul se termina, sau pana cand utilizatorul foloseste intreruperea generata de apasarea butonului, caz in care se face intoarcerea la meniul principal.
 +</​note>​
 +
 +<note tip>
 +**RESET BUTTON** -> opreste imediat instanta curenta a jocului si face revenirea la meniul principal. Se opreste si reseteaza timer-ul folosit pentru '​elapsedTime'​. In meniul principal, acest buton are functia de a selecta dimensiunea dorita a grid-ului si a porni efectiv jocul.
 +</​note>​
 +
  
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
 +<​html>​
 +<iframe width="​700"​ height="​400"​ src="​https://​www.youtube.com/​embed/​2CVVOYu0S2Q"​ title="​YouTube video player"​ frameborder="​0"​ allow="​accelerometer;​ autoplay; clipboard-write;​ encrypted-media;​ gyroscope; picture-in-picture;​ web-share"​ allowfullscreen></​iframe>​
 +</​html>​
 +{{ :​pm:​prj2023:​vstoica:​croitoru_2048_demo0.jpeg?​500 |}}
 {{:​pm:​prj2023:​vstoica:​croitoru_2048_demo1.jpg?​350|}} {{:​pm:​prj2023:​vstoica:​croitoru_2048_demo1.jpg?​350|}}
 {{:​pm:​prj2023:​vstoica:​croitoru_2048_demo2.jpg?​350|}} {{:​pm:​prj2023:​vstoica:​croitoru_2048_demo2.jpg?​350|}}
Line 100: Line 125:
 Mi-a facut placere sa lucrez cu modulul **LCD ST7920 128x64**, lucru in urma caruia am generat alte cateva idei personale pe care sa le dezvolt cu ajutorul acestuia. Mi-a facut placere sa lucrez cu modulul **LCD ST7920 128x64**, lucru in urma caruia am generat alte cateva idei personale pe care sa le dezvolt cu ajutorul acestuia.
 </​note>​ </​note>​
 +
 +===== Download =====
 +{{:​pm:​prj2023:​vstoica:​2048_sources.zip|}}
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
pm/prj2023/vstoica/2048.1684868496.txt.gz · Last modified: 2023/05/23 22:01 by adrian.croitoru2505
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