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 75: Line 72:
  
  
-----+<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) 
 +</​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> <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)+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>​
 +
 +<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 102: 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.1684868486.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