Differences

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

Link to this comparison view

egc:teme:2019:01 [2019/10/20 20:20]
ovidiu.dinu
egc:teme:2019:01 [2020/11/01 09:18] (current)
anca.morar
Line 1: Line 1:
-==== Brick breaker ​==== +==== Tema 1 - My Flappy Bird ====
-In cadrul temei 1 veti implementa propria versiune de Flappy Bird. Tot ce nu este specificat ramane la creativitatea voastra.+
  
- +In cadrul temei 1 se va implementa o versiune simplificata a jocului My Flappy BirdTot ce nu este specificat ramane la creativitatea voastra.
-{{ :​egc:​teme:​fig1.png?​nolink&​750 |}} +
-{{ :​egc:​teme:​2019:​fbb.png?​nolink&​200 |}}+
  
 === Pasarea === === Pasarea ===
  
-Pasarea va fi creata prin combinarea ​mai multor figuri geometrice pline (GL_FILLtrebuie sa creati cel putin corpul pasarii, capul si ciocul). +Pasarea va fi formata din mai multe primitive simple ​(de exemplu, un dreptunghi si un disc de cerc).
- +
-Exemplu de pasare: +
-  * Doua discuri de cerc si un triunghi (figura din stanga) +
-  * Un dreptunghi, un disc de cerc si un triunghi (figura din centru) +
-  * Un dreptunghi, ​un disc de cerc si mai multe triunghiuri (figura din dreapta) +
  
 +{{ :​egc:​teme:​2019:​fb.png?​nolink&​768 |}}
  
 === Mediul in care se deplaseaza pasarea === === Mediul in care se deplaseaza pasarea ===
  
 Mediul inconjurator va fi creat din perechi de dreptunghiuri,​ de aceeasi latime dar de inaltime diferita, unul ancorat sus, si celalalt ancorat jos (similar cu stalactitele si stalagmitele din pesteri), ca in figura urmatoare. Inaltimea dreptunghiurilor se poate stabili procedural, aleator sau hardcodat, dar trebuie sa se respecte regula ca distanta intre doua perechi de dreptunghiuri sa fie suficient de mare, astfel incat pasarea sa poata trece printre ele. Mediul inconjurator va fi creat din perechi de dreptunghiuri,​ de aceeasi latime dar de inaltime diferita, unul ancorat sus, si celalalt ancorat jos (similar cu stalactitele si stalagmitele din pesteri), ca in figura urmatoare. Inaltimea dreptunghiurilor se poate stabili procedural, aleator sau hardcodat, dar trebuie sa se respecte regula ca distanta intre doua perechi de dreptunghiuri sa fie suficient de mare, astfel incat pasarea sa poata trece printre ele.
 +
 +{{ :​egc:​teme:​2019:​fbb.png?​nolink&​394 |}}
  
 === Gameplay === === Gameplay ===
Line 28: Line 22:
 === Detalii de implementare === === Detalii de implementare ===
  
-Caderea sau ridicarea pasarii se vor implementa prin translatie pe axa Oy.+  * Caderea sau ridicarea pasarii se vor implementa prin translatie pe axa Oy.
  
   * Inclinarea pasarii in jos va fi implementata printr-o rotatie (fata de centrul de greutate al pasarii) in sens orar, iar inclinarea pasarii in sus, printr-o rotatie in sens trigonometric   * Inclinarea pasarii in jos va fi implementata printr-o rotatie (fata de centrul de greutate al pasarii) in sens orar, iar inclinarea pasarii in sus, printr-o rotatie in sens trigonometric
Line 39: Line 33:
   * Coliziunea dintre pasare si dreptunghiuri se poate simplifica prin verificarea unei coliziuni intre un cerc si dreptunghiuri (daca pasarea este destul de mica in raport cu dreptunghiurile,​ ea poata fi aproximata prin cercul care o incadreaza)   * Coliziunea dintre pasare si dreptunghiuri se poate simplifica prin verificarea unei coliziuni intre un cerc si dreptunghiuri (daca pasarea este destul de mica in raport cu dreptunghiurile,​ ea poata fi aproximata prin cercul care o incadreaza)
  
-{{ :egc:teme:fig2.png?nolink&​750 |}}+<note tip>Mai multe informatii despre ce reprezinta coliziunea si cum se poate implementa: 
 +  * [[https://​developer.mozilla.org/​en-US/​docs/​Games/​Techniques/​2D_collision_detection]] 
 +  * [[https://​learnopengl.com/​In-Practice/​2D-Game/​Collisions/​Collision-detection]] 
 +  * [[https://​www.youtube.com/​watch?v=aTbw71EpamY]] 
 +  * [[https://​developer.mozilla.org/​en-US/​docs/​Games/​Techniques/​3D_collision_detection]] 
 +</​note>​ 
  
-Bonus+=== Bonus ===
   * (5p) Animatie de scalare pentru perechile de dreptunghiuri (o pereche de dreptunghiuri sa se comporte ca un set de usi glisante de la un lift modern), astfel incat sa se apropie si sa se departeze incontinuu, pastrand totusi o distanta suficient de mare intre ele astfel incat pasarea sa treaca printre ele)   * (5p) Animatie de scalare pentru perechile de dreptunghiuri (o pereche de dreptunghiuri sa se comporte ca un set de usi glisante de la un lift modern), astfel incat sa se apropie si sa se departeze incontinuu, pastrand totusi o distanta suficient de mare intre ele astfel incat pasarea sa treaca printre ele)
   * (5p-10p) Scena cat mai realista (perechile de stalactite si stalagmite sa fie in mai multe culori, din forme mai complexe, pasarea sa arate ca o pasare)   * (5p-10p) Scena cat mai realista (perechile de stalactite si stalagmite sa fie in mai multe culori, din forme mai complexe, pasarea sa arate ca o pasare)
Line 47: Line 47:
   * Sa creasca dificultatea jocului pe masura ce creste punctajul jucatorului   * Sa creasca dificultatea jocului pe masura ce creste punctajul jucatorului
   * Animatie care sa simuleze modul prin care pasarea da din aripi   * Animatie care sa simuleze modul prin care pasarea da din aripi
-Exemplu (doar pentru orientare): https://​www.youtube.com/​watch?​v=I69adfEqwC0 
  
-La coliziune cu bila, caramizile dispar treptat ​(li se aplica o scalare ​pentru ​micsorare timp de 1-2 secunde).+<note tip>​Exemplu ​(doar pentru ​orientare): https://www.youtube.com/​watch?​v=I69adfEqwC0</​note>​ 
  
-La coliziune cu unele caramizi, apar in scena powerups (patrate) care se rotesc in timp ce cad pe verticala. Daca aceste powerups sunt atinse de platforma, atunci sunt activate anumite bonusuri pentru jucator pentru o anumita perioada de timp (30 secunde - 1 minut). Exemple de powerups: 
-  * apare si in partea de jos a scenei, sub platforma, un perete; astfel jucatorul nu isi pierde o viata daca bila nu este salvata de platforma 
-  * platforma poate trage cu anumite arme inspre caramizi 
-  * bila poate deveni mai mare 
-  * bila poate deveni mai puternica. Astfel, la coliziunea cu caramizile, bila nu mai realizeaza reflexie, ci isi continua traseul, distrugand mult mai multe caramizi printr-o singura traversare a scenei 
-  * platforma devine "​lipicioasa"​. Astfel, la coliziunea cu platforma, bila ramane pe platforma pana cand este lansata din nou in scena. Bila ar putea fi trimisa pe o anumita directie, data de mouse. Avand in vedere ca in functionalitatea de baza, platforma se misca dupa mouse, acest bonus ar putea fi implementat prin doua stari: In starea 1 bila se lipesteste de platforma la pozitia din care a venit si platforma se deplaseaza libera pana la momentul in care se apasa click stanga. Starea 2 dureaza de la momentul apasarii click-ului pana la momentul release-ului. La momentul primei apasari platforma se blocheaza la pozitia in care se afla. In timpul hold-ului mouse-ul se misca liber fara sa afecteze platforma, iar la release bila pleaca in directia pozitiei mouse-ului. 
-    
 === Functionalitati obligatorii === === Functionalitati obligatorii ===
-Barem orientativ pentru realizarea functionalitatilor (din 100 puncte): +Barem orientativ pentru realizarea functionalitatilor (din 150 puncte): 
-  * desenare ​scena (25 puncte+  * desenare ​pasare ​(25p
-  * control platforma ​cu mouse-ul ​(5 puncte+  * desenare mediu si animatie, ​cu utilizarea optima a resurselor ​(40p
-  * detectie coliziuni bila-platforma,​ bila-pereti,​ platforma-powerups ​(5 puncte+  * animatii fluide pasare ​(35p
-  * detectie ​coliziuni ​bila-caramizi ​(10 puncte+  * coliziuni (35p
-  * deplasare bila in scena la lansare ​(5 puncte+  * printare statistici ​in consola ​(10p
-  * deplasare prin reflexie la coliziunea cu platforma ​(10 puncte) +  * readme ​(5p)
-  * deplasare prin reflexie la coliziunea cu peretii si caramizile (15 puncte)  +
-  * animatie disparitie caramizi si animatie rotire si cadere powerups (10 puncte) +
-  * gestiune pierdere vieti (5 puncte) +
-  * implementarea unui powerup la alegere (10 puncte) +
- +
-=== Bonusuri === +
-Pentru bonusuri se accepta orice aduce realism scenei sau creste imersiunea jocului.  +
-Exemple de bonusuri: +
-  * implementarea altor powerups in afara de cea din functionalitatile obligatorii (fie powerups descrie mai sus, fie altele propuse de voi) +
-  * realizarea mai multor niveluri care cresc in dificultate (de exemplu, inserarea in scena a unor caramizi mai puternice, care nu se distrug la o singura coliziune cu bila) +
- +
- +
-=== Demo joc === +
-{{:​egc:​teme:​tema_1_demo.zip|Aici}} aveti un demo (implementat in framework-ul de laborator) pentru tema, care va va ajuta in intelegerea enuntului temei.+
  
 === Intrebari si raspunsuri === === Intrebari si raspunsuri ===
Line 104: Line 83:
   * stergeti fisierul __**/Visual Studio/​Framework_EGC.sdf**__ (in caz ca exista)   * stergeti fisierul __**/Visual Studio/​Framework_EGC.sdf**__ (in caz ca exista)
   * stergeti fisierul __**/Visual Studio/​Framework_EGC.VC.db**__ (in caz ca exista)   * stergeti fisierul __**/Visual Studio/​Framework_EGC.VC.db**__ (in caz ca exista)
 +  * stergeti folderul __**/​.vs**__ (in caz ca exista) ​
   * stergeti folderul __**/​x64**__ sau __**/​x86**__ (in caz ca exista)   * stergeti folderul __**/​x64**__ sau __**/​x86**__ (in caz ca exista)
     * executabilul final este generat in folderul __**/​x86**__ sau __**/​x64**__ la finalul link-editarii in functie de arhitectura aleasa la compilare (32/64 biti)     * executabilul final este generat in folderul __**/​x86**__ sau __**/​x64**__ la finalul link-editarii in functie de arhitectura aleasa la compilare (32/64 biti)
Line 110: Line 90:
  
 === Deadline tema === === Deadline tema ===
-noiembrie ora 23:55+noiembrie ora 23:55
egc/teme/2019/01.1571592009.txt.gz · Last modified: 2019/10/20 20:20 by ovidiu.dinu
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