Differences

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

Link to this comparison view

egc:teme:2022:01 [2022/10/30 20:33]
maria_anca.balutoiu [Vieți]
egc:teme:2022:01 [2022/11/13 11:59] (current)
alexandru.gradinaru [Arhivarea Proiectului]
Line 2: Line 2:
   * **Responsabili:​** Anca Băluțoiu, Alex Grădinaru, Chris Brandon   * **Responsabili:​** Anca Băluțoiu, Alex Grădinaru, Chris Brandon
   * **Lansare:​** 31 octombrie 2022   * **Lansare:​** 31 octombrie 2022
-  * **Termen de predare:​** ​13 noiembrie 2022, ora 23:59+  * **Termen de predare:​** ​16 noiembrie 2022, ora 23:59
   * **Regulament:​** [[egc:​teme:​regulament|]]   * **Regulament:​** [[egc:​teme:​regulament|]]
   * **Notă: Orice informație ce nu a fost acoperită în acest document este la latitudinea voastră!**   * **Notă: Orice informație ce nu a fost acoperită în acest document este la latitudinea voastră!**
  
 În cadrul temei 1, veți avea de implementat un joc de tipul Duck Hunt. Pentru inspirație,​ puteți testa jocul original aici: https://​www.duck-hunt.org/​. :) În cadrul temei 1, veți avea de implementat un joc de tipul Duck Hunt. Pentru inspirație,​ puteți testa jocul original aici: https://​www.duck-hunt.org/​. :)
 +
 +De asemenea, puteti viziona un mic demo construit rapid pe baza frameworkului de laborator care acopera cerintele, avand un aspect vizual minimal :).
 +
 +<​html>​
 +<iframe width="​560"​ height="​315"​ src="​https://​www.youtube.com/​embed/​eyZwa6lDm14"​ title="​YouTube video player"​ frameborder="​0"​ allow="​accelerometer;​ autoplay; clipboard-write;​ encrypted-media;​ gyroscope; picture-in-picture"​ allowfullscreen></​iframe>​
 +</​html>​
  
 ==== Rațe ==== ==== Rațe ====
Line 51: Line 57:
  
 ==== Vieți ==== ==== Vieți ====
-Jucătorul va porni inițial cu 3 vieți. În momentul în care o rață scapă (jucătorul a ratat să nimerească rața cu toate cele 3 gloanțe), acesta pierde o viață. Numărul de vieți rămase vor fi desenate pe ecran, în colțul stânga sus, sub forma unor cercuri roșii.+Jucătorul va porni inițial cu 3 vieți. În momentul în care o rață scapă (jucătorul a ratat să nimerească rața cu toate cele 3 gloanțe), acesta pierde o viață. Numărul de vieți rămase vor fi desenate pe ecran, în colțul stânga sus, de exemplu ​sub forma unor cercuri roșii.
  
 ==== Gloanțe ==== ==== Gloanțe ====
-La orice moment de timp, jucătorul trebuie să știe câte gloanțe mai are la dispoziție. Pentru asta, în colțul stânga sus (sub numărul de vieți) veți afișa și numărul de gloanțe disponibile în mod similar cu numărul de vieți, sub forma unor dreptunghiuri verzi.+La orice moment de timp, jucătorul trebuie să știe câte gloanțe mai are la dispoziție. Pentru asta, în colțul stânga sus (sub numărul de vieți) veți afișa și numărul de gloanțe disponibile în mod similar cu numărul de vieți, ​de exemplu ​sub forma unor dreptunghiuri verzi.
  
 ==== Scor ==== ==== Scor ====
 Pentru fiecare rață împușcată,​ scorul jucătorului va crește. Acesta va fi și el reprezentat în interfața grafică în colțul dreapta-sus cu ajutorul a două dreptunghiuri:​ Pentru fiecare rață împușcată,​ scorul jucătorului va crește. Acesta va fi și el reprezentat în interfața grafică în colțul dreapta-sus cu ajutorul a două dreptunghiuri:​
-  * Un dreptunghi wireframe, care reprezinta ​nivelul maxim de scor (puteti ​considera un nivel maxim de scor de 50 sau orice alta valoare >10) +  * Un dreptunghi wireframe, care reprezintă ​nivelul maxim de scor (puteți ​considera un nivel maxim de scor de 50 sau orice altă valoare >10) 
-  * Un dreptunghi solid, albastru, ​in interiorul celui wireframe, care reprezinta ​scorul curent+  * Un dreptunghi solid, albastru, ​în interiorul celui wireframe, care reprezintă ​scorul curent
  
 ==== Gameplay ==== ==== Gameplay ====
-Scopul jocului este ca jucatorul sa impuste cat mai multe rate inainte sa ramana fara vieti. Jocul incepe ​cu un numar de vieti disponibile,​ dintre care se pierde ​cate una de fiecare ​data cand rata reuseste sa scape fara sa fie impuscata.+Scopul jocului este ca jucătorul să împuște cât mai multe rațe înainte să rămână fără vieți. Jocul începe ​cu un număr ​de vieți ​disponibile,​ dintre care se pierde ​câte una de fiecare ​dată când rața reușește să scape fără să fie împușcată.
  
-Ratele ​apar cate una singura ​pe ecran, pe rand, fiecare ​dupa disparitia ​(prin evadarea sau impuscarea) celei anterioare. O rata va cadea pe sol cand este impuscata, si va zbura vertical ​in sus pentru a simboliza evadarea (sunt descrise deja detalii ​in sectiunile ​"Rate Afisare" ​si "Rate Miscare"). Ele se misca dupa regulile descrise la sectiunea ​"Rate Miscare"​. ​Dupa generarea a cate rate, viteza de miscare ​a acestora va creste si, ca atare, dificultatea jocului va creste.+Rațele ​apar câte una singură ​pe ecran, pe rând, fiecare ​după dispariția ​(prin evadarea sau împușcarea) celei anterioare. O rață ​va cădea ​pe sol când este împușcată și va zbura vertical ​în sus pentru a simboliza evadarea (sunt descrise deja detalii ​în secțiunile ​"Rațe Afișare" ​și "Rațe Mișcare"). Ele se mișcă după regulile descrise la secțiunea ​"Rațe Mișcare"​. ​După generarea a câte rațe, viteza de mișcare ​a acestora va crește și, ca atare, dificultatea jocului va crește.
  
-De exemplu: ​daca primele 5 rate se misca la o viteza v0, urmatoarele ​5 ar putea avea viteza v1 = v0 + v0 / 5, urmatoarele ​v2 = v0 + 2 * v0 / 5 si asa mai departe, pentru a avea o modificare ​incrementala ​dificultatii.+De exemplu: ​dacă primele 5 rațe se mișcă ​la o viteza v0, următoarele ​5 ar putea avea viteza v1 = v0 + v0 / 5, următoarele ​v2 = v0 + 2 * v0 / 5 și așa mai departe, pentru a avea o modificare ​incrementală ​dificultății.
  
-=== Trasul cu pusca === +=== Trasul cu pușca ​=== 
-Pentru a impusca ​ratajucatorul ​are la dispozitie ​gloante ​care se reincarca ​de fiecare ​data cand apare o noua rata. De fiecare ​data cand acesta face clic pe ecran, se va considera ca un glont a fost tras in acel punct pe ecran si numarul ​de gloante ​disponibile va scadea ​cu 1. Daca punctul de pe ecran (detalii ​sectiunea ​"Intersectia glontului ​cu rata") care a fost impuscat intersecteaza rata, ea va fi considerata impuscata, scorul (detalii ​sectiunea ​"​Scor"​) va creste, si rata va cadea pe sol (detalii ​sectiunea ​"Rate Miscare").+Pentru a împușca ​rațăjucătorul ​are la dispoziție ​gloanțe ​care se reîncarcă ​de fiecare ​dată când apare o nouă rață. De fiecare ​dată când acesta face clic pe ecran, se va considera ca un glonț ​a fost tras în acel punct pe ecran și numărul ​de gloanțe ​disponibile va scădea ​cu 1. Dacă punctul de pe ecran (detalii ​secțiunea ​"Intersecția glonțului ​cu rața") care a fost împușcat intersectează rața, ea va fi considerată împușcată, scorul (detalii ​secțiunea ​"​Scor"​) va crește și rața va cădea ​pe sol (detalii ​secțiunea ​"Rațe Mișcare").
  
-=== Intersectia glontului ​cu rata === +=== Intersecția glonțului ​cu rața === 
-Avand in vedere ​ca ratele ​au o forma destul de complexa, ar fi greu de calculat exact ce puncte de pe ecran se intersecteaza ​cu ele. Asadar, le puteti ​aproxima sub forma unui dreptunghi ​in care este incadrata rata (similar figurii de mai jos). Pentru a calcula  +Având în vedere ​că rațele ​au o formă ​destul de complexă, ar fi greu de calculat exact ce puncte de pe ecran se intersectează ​cu ele. Așadar, le puteți ​aproxima sub forma unui dreptunghi ​în care este încadrată rața (similar figurii de mai jos). Pentru a calcula  
-coordonatele ​colturilor ​acestui ​patratputeti ​folosi ​cateva notiuni ​de geometrie ​in plan, aplicate ​in functie ​de coordonatele la care se afla punctele de pe silueta ​ratei.+coordonatele ​colțurilor ​acestui ​pătratputeți ​folosi ​câteva noțiuni ​de geometrie ​în plan, aplicate ​în funcție ​de coordonatele la care se află punctele de pe silueta ​raței.
  
-Patratul incadrator ​este mult mai usor de calculat ​daca toate coordonatele locale ale primitivelor din care este construita rata sunt calculate ​fata de un punct cat mai apropiat de centrul ​ratei (detalii ​sectiunea ​"Rata Constructie").+Pătratul încadrator ​este mult mai ușor de calculat ​dacă toate coordonatele locale ale primitivelor din care este construită rața sunt calculate ​față ​de un punct cât mai apropiat de centrul ​raței ​(detalii ​secțiunea ​"Rața Construcție").
  
-Mai multe detalii despre aproximarea coliziunilor 2D: https://​developer.mozilla.org/​en-US/​docs/​Games/​Techniques/​2D_collision_detection+Mai multe detalii despre aproximarea coliziunilor 2D: https://​developer.mozilla.org/​en-US/​docs/​Games/​Techniques/​2D_collision_detection ​.
  
-Pentru a afla daca mouse-ul se afla in interiorul dreptunghiului ​incadrator ​al ratei, trebuie ​facuta ​o conversie din coordonate de vizualizare ​catre coordonatele logice ​in care rata se plimba ​pe ecran. ​Daca va folositi ​de scheletul laboratorului 3, aceste 2 spatii ​de coordonate corespund 1:1 intrucat spatiul ​de desenare este limitat la rezolutia portii ​de afisare si se poate considera ​ca pozitia ​cursorului ​de mouse este si pozitia ​sa in coordonate logice. Altfel, va trebui ​aplicata ​o transformare ​similara ​cu cea fereastra poarta ​(detaliata ​tot in laboratorul 3), doar ca inversaAtentie ​la corectia ​coordonatei Y.+Pentru a afla dacă mouse-ul se află în interiorul dreptunghiului ​încadrator ​al raței, trebuie ​făcută ​o conversie din coordonate de vizualizare ​către ​coordonatele logice ​în care rața se plimbă ​pe ecran. ​Dacă va folosiți ​de scheletul laboratorului 3, aceste 2 spații ​de coordonate corespund 1:1 întrucât spațiul ​de desenare este limitat la rezoluția porții ​de afișare și se poate considera ​că poziția ​cursorului mouse-ului este și poziția ​sa în coordonate logice. Altfel, va trebui ​aplicată ​o transformare ​similară ​cu transformarea fereastră - poartă ​(detaliată ​tot în laboratorul 3), doar ca inversăAtenție ​la corecția ​coordonatei Y.
  
-Dupa ce cursorul ​si dreptunghiul se afla in acelasi spatiu ​de coordonate, verificarea ​intersectiei ​se rezuma ​la verificarea ​daca un punct in plan se afla intr-un dreptunghi aliniat cu axele Ox si Oy. Detaliile acestui calcul sunt lasate ​ca exercitiu ​pentru student.+După ce cursorul ​și dreptunghiul se află în același spațiu ​de coordonate, verificarea ​intersecției ​se rezumă ​la verificarea ​dacă un punct în plan se află într-un dreptunghi aliniat cu axele Ox și Oy. Detaliile acestui calcul sunt lăsate ​ca exercițiu ​pentru student.
  
-Inputul de la mouse se poate trata in functia ​"​OnMouseMove"​ din framework. Aceasta are 4 parametri: mouseX, mouseY, deltaX, deltaY. Primele 2 se refera ​la pozitia ​la care se afla cursorul ​in momentul ​in care se apeleaza functiain pixeli. Numerotarea ​incepe ​din coltul stanga-sus al ferestrei de vizualizare ​in (0, 0). Cei 2 parametri din urma se refera ​la deplasarea ​exacta ​(tot in pixeli) a cursorului de la pozitia ​sa in frame-ul anterior pana la pozitia ​sa in frame-ul ​in care a fost apelata functia. De exemplu, daca mouse-ul s-a miscat ​de la pozitia ​(1200, 300) la pozitia ​(1220, 294) in intervalul de la ultimul frame pana la cel curent, vom avea urmatoarele ​valori: mouseX = 1220, mouseY = 294, deltaX = 20, deltaY = 294.+Inputul de la mouse se poate trata în funcția ​"​OnMouseMove"​ din framework. Aceasta are 4 parametri: mouseX, mouseY, deltaX, deltaY. Primele 2 se referă ​la poziția ​la care se află cursorul ​în momentul ​în care se apelează funcțiaîn pixeli. Numerotarea ​începe ​din colțul stânga-sus al ferestrei de vizualizare ​în (0, 0). Cei 2 parametri din urmă se referă ​la deplasarea ​exactă ​(tot în pixeli) a cursorului de la poziția ​sa în frame-ul anterior pana la poziția ​sa în frame-ul ​în care a fost apelată funcția. De exemplu, daca mouse-ul s-a mișcat ​de la poziția ​(1200, 300) la poziția ​(1220, 294) în intervalul de la ultimul frame până ​la cel curent, vom avea următoarele ​valori: mouseX = 1220, mouseY = 294, deltaX = 20, deltaY = -6.
  
-Atentie! Aceste valori sunt intregiaveti grija la tipurile de date daca intentionati sa le impartiti. De asemenea, deltaX ​si deltaY deja sunt calculate ​fata de frame-ul anterior. Ca atare, nu mai este nevoie ​sa ne legam de deltaTimeSeconds pentru a avea o miscare independenta ​de frame rate.+<​note>​Atenție! Aceste valori sunt întregiaveți grijă ​la tipurile de date dacă intenționați să le împărțiți. De asemenea, deltaX ​și deltaY deja sunt calculate ​făță ​de frame-ul anterior. Ca atare, nu mai este nevoie ​să ne legăm ​de deltaTimeSeconds pentru a avea o mișcare independentă ​de frame rate.</​note>​
  
 {{ :​egc:​teme:​2022:​duck_mouse_t1_2022.png?​300 |}} {{ :​egc:​teme:​2022:​duck_mouse_t1_2022.png?​300 |}}
  
-=== Evadarea ​ratei === +=== Evadarea ​raței ​=== 
-In momentul ​in care toate cele 3 gloante ​au fost consumate ​fara a fi fost impuscata rata, aceasta ​evadeaza. De asemenea, ​daca rata nu a fost impuscata ​timp de un numar de secunde, va evada. ​In ambele ​situatii in care rata evadeazajucatorul ​va pierde o viata (detalii ​sectiunea ​"Vieti"​) ​si nu va primi scorul aferent ​ratei respective.+În momentul ​în care toate cele 3 gloanțe ​au fost consumate ​fără ​a fi fost împușcată rața, aceasta ​evadează. De asemenea, ​dacă rața nu a fost împușcată ​timp de un număr ​de secunde, va evada. ​În ambele ​situații în care rața evadeazăjucătorul ​va pierde o viață ​(detalii ​secțiunea ​"Vieți"​) ​și nu va primi scorul aferent ​raței ​respective.
  
  
 ==== Funcționalități obligatorii (150 puncte) ==== ==== Funcționalități obligatorii (150 puncte) ====
-  * Miscare/animatii rata (75p total) +  * Mișcare/animații rață ​(75p total) 
-    * Desenare/​asamblare ​figura geometrica rata 15p +    * Desenare/​asamblare ​figură geometrică rață ​15p 
-    * Deplasare ​activa ​(deplasare ansamblu ​rata si animatii ​aripi) 20p +    * Deplasare ​activă ​(deplasare ansamblu ​rață și animații ​aripi) 20p 
-    * Pozitionare si directie initiala ​10p+    * Poziționare și direcție inițială ​10p
     * Reflexii 10p     * Reflexii 10p
-    * Impuscat ​10p+    * Împușcat ​10p
     * Evadare 10p     * Evadare 10p
   * Gameplay (75p total)   * Gameplay (75p total)
-    * Aparitie ratecate una pe ecran 5p +    * Apariție rațecâte una pe ecran 5p 
-    * Incrementare ​viteza rate 5p+    * Incrementare ​viteză rațe 5p
     * Temporizare evadare 5p     * Temporizare evadare 5p
-    * Trasul cu pusca +    * Trasul cu pușca 
-      * Tintire ​20p +      * Țintire ​20p 
-      * Coliziuni ​rata 20p +      * Coliziuni ​rață ​20p 
-    * Interfata grafica ​(functionalitate si afisare+    * Interfața grafică ​(funcționalitate și afișare
-      * Vieti 5p +      * Vieți ​5p 
-      * Gloante ​5p+      * Gloanțe ​5p
       * Scor 10p       * Scor 10p
  
 ==== Exemple de funcționalități bonus ==== ==== Exemple de funcționalități bonus ====
-Orice funtionalitate suplimentara implementata ​(care nu este inclusa in cerintele ​obligatorii) poate fi considerata ​ca punctaj bonus daca este suficient de complexaFunctionlitatile ​bonus se iau in considerare doar daca functionalitatile ​obligatorii au fost realizate. +<note warning>Orice funționalitate suplimentară implementată ​(care nu este inclusă în cerințele ​obligatorii) poate fi considerată ​ca punctaj bonus dacă este suficient de complexăFuncționlitățile ​bonus se iau în considerare doar dacă funcționalitățile ​obligatorii au fost realizate.</​note>​ 
-  * Scor variabil ​in functie ​de viteza ​ratei si multiplier aplicat pentru ​numar de rate impuscate ​consecutiv (killing spree). Este necesara afisarea ​unui element animat (de ex o forma simpla ​de romb care se rotestein momentul atingerii acestui prag. +  * Scor variabil ​în funcție ​de viteza ​raței și multiplier aplicat pentru ​număr ​de rațe împușcate ​consecutiv (killing spree). Este necesară afișarea ​unui element animat (de ex o formă simplă ​de romb care se roteșteîn momentul atingerii acestui prag. 
-  * Dupa ce apar 5 rate, se trece la urmatorul ​nivel: se afiseaza ​pe ecran un text care ii comunica jucatorului aceasta ​schimbare ​si urmatoarele ​rate (pana la schimbarea din nou a nivelului) se vor misca mai repede. +  * După ce apar 5 rațe, se trece la următorul ​nivel: se afișează ​pe ecran un text care îi comunică jucătorului această ​schimbare ​și următoarele ​rațe (până ​la schimbarea din nou a nivelului) se vor mișca ​mai repede. 
-  * Boss fight, care apare de exemplu o data la 10 rate - e o rata mai mare care se misca mai greu si trebuie ​impuscata ​de mai multe ori. +  * Boss fight, care apare de exemplu o dată la 10 rațrața mai mare care se mișcă ​mai greu și trebuie ​împușcată ​de mai multe ori. 
-  * Fiecare ​rata are o culoare aleatorie (similar cu jocul original) ​si isi poate schimba ​directia ​brusc/​random,​ chiar daca nu atinge marginea ecranului (poate face de exemplu o miscare ​zig-zag cu temporizare aleatoare). +  * Fiecare ​rață ​are o culoare aleatorie (similar cu jocul original) ​și își poate schimba ​direcția ​brusc/​random,​ chiar dacă nu atinge marginea ecranului (poate face de exemplu o mișcare ​zig-zag cu temporizare aleatoare). 
-  * Realizarea gazonului de jos in spatele ​caruia ​apare rata, astfel ​incat sa nu apara brusc pe ecran de nicaieri+  * Realizarea gazonului de jos în spatele ​căruia ​apare rața, astfel ​încât să nu apară ​brusc pe ecran de nicăieri
-  * Rate mai detaliate/​complexe ca geometrie. +  * Rațe mai detaliate/​complexe ca geometrie. 
-  * Crosshair pe mouse si eventual ​pusca/arma animata in functie ​de pozitia ​cursorului pe ecran (sa fie indreptata/rotita ​spre cursor). +  * Crosshair pe mouse și pușcă/armă animată în funcție ​de poziția ​cursorului pe ecran (să fie îndreptată/rotită ​spre cursor). 
-  * Sistem de tragere animat (gloante ​vizibile, o mica animatie in momentul ​in care se atinge ​rata - de ex sar niste ‘pene’ aproximate ​in directii ​aleatorii).+  * Sistem de tragere animat (gloanțe ​vizibile, o mică animație în momentul ​în care se atinge ​rața - de exemplu ​sar niște ​‘pene’ aproximate ​în direcții ​aleatorii).
   * Rațe “speciale” care dau jucătorului anumite abilități (o viață extra, un glonț extra, toate rațele se vor mișca foarte încet pentru câteva secunde). Fiecare astfel de rață va avea o culoare specifică power up-ului pe care îl acordă si va exista un indicator de timp care arata cat timp mai dureaza acea abilitate (de ex o bara similara cu cea de scor, care scade in timp si dispare cand nu mai e valabila abilitatea).   * Rațe “speciale” care dau jucătorului anumite abilități (o viață extra, un glonț extra, toate rațele se vor mișca foarte încet pentru câteva secunde). Fiecare astfel de rață va avea o culoare specifică power up-ului pe care îl acordă si va exista un indicator de timp care arata cat timp mai dureaza acea abilitate (de ex o bara similara cu cea de scor, care scade in timp si dispare cand nu mai e valabila abilitatea).
-  * Animație ​complexa ​când moare rata. +  * Animație ​complexă ​când moare rata. 
-  * Posibilitatea de a avea mai multe rate pe ecran in acealasi ​timp si sistem de gestiune a gloantelor corespunzator/imbunatatit  ​pentru mai multe rate.+  * Posibilitatea de a avea mai multe rațe pe ecran în același ​timp și sistem de gestiune a gloanțelor corespunzător/îmbunătățit ​pentru mai multe rațe.
  
 ==== Întrebări și răspunsuri ==== ==== Întrebări și răspunsuri ====
Line 131: Line 137:
  
 ==== Notare ==== ==== Notare ====
-Baremul este orientativ. Fiecare asistent are o anumita ​libertate ​in evaluarea temelor (de exemplu, ​sa dea punctaj ​partial ​pentru implementarea ​incompleta ​a unei functionalitati ​sau sa scada pentru hard coding). ​Acelasi ​lucru este valabil ​atat pentru ​functionalitatile ​obligatorii, ​cat si pentru bonusuri.+Baremul este orientativ. Fiecare asistent are o anumită ​libertate ​în evaluarea temelor (de exemplu, ​să dea punctaj ​parțial ​pentru implementarea ​incompletă ​a unei funcționalități ​sau să scadă ​pentru hard coding). ​Același ​lucru este valabil ​atât pentru ​funcționalitățile ​obligatorii, ​cât și pentru bonusuri.
  
-Tema trebuie ​incarcata ​pe moodle. Pentru a fi punctata, tema trebuie ​prezentata ​la laborator. Vor exista laboratoare speciale de prezentare a temelor (care vor fi anuntate).+<note warning>​ 
 +Tema trebuie ​încărcată ​pe moodle. Pentru a fi punctată, tema trebuie ​prezentată ​la laborator. Vor exista laboratoare speciale de prezentare a temelor (care vor fi anunțate).</​note>​
  
 ==== Indicații suplimentare ==== ==== Indicații suplimentare ====
-Tema va fi implementata in OpenGL ​si C++. Este indicat ​sa folositi ​framework-ul ​si Visual Studio.+Tema va fi implementată în OpenGL ​și C++. Este indicat ​să folosiți ​framework-ul ​și Visual Studio.
  
-<​note>​Pentru implementarea temei, ​in folderul **src/​lab_m1** ​puteti ​crea un nou folder, de exemplu **Tema1**, cu fisierele ​**Tema1.cpp** ​si **Tema1.h** (pentru implementare POO, este indicat ​sa aveti si alte fisiere). Pentru a vedea fisierele ​nou create ​in Visual Studio ​in Solution Explorer, ​apasati ​click dreapta pe filtrul **lab_m1** ​si selectati ​**Add→New Filter**. ​Dupa ce creati ​un nou filtru, de exemplu **Tema1**, ​dati click dreapta ​si selectati ​**Add→Existing Item**. Astfel ​adaugati ​toate fisierele ​din folderul nou creat. ​In fisierul ​**lab_list.h** trebuie ​adaugata si calea catre header-ul temei. De exemplu: **#include “lab_m1/​Tema1/​Tema1.h”**</​note>​+<​note>​Pentru implementarea temei, ​în folderul **src/​lab_m1** ​puteți ​crea un nou folder, de exemplu **Tema1**, cu fișierele ​**Tema1.cpp** ​și **Tema1.h** (pentru implementare POO, este indicat ​să aveți și alte fișiere). Pentru a vedea fișierele ​nou create ​în Visual Studio ​în Solution Explorer, ​apăsați ​click dreapta pe filtrul **lab_m1** ​și selectați ​**Add→New Filter**. ​După ce creați ​un nou filtru, de exemplu **Tema1**, ​dați click dreapta ​și selectați ​**Add→Existing Item**. Astfel ​adăugați ​toate fișierele ​din folderul nou creat. ​În fișierul ​**lab_list.h** trebuie ​adăugată și calea către ​header-ul temei. De exemplu: **#include “lab_m1/​Tema1/​Tema1.h”**</​note>​
  
 ==== Arhivarea Proiectului ==== ==== Arhivarea Proiectului ====
 <​note>​ <​note>​
-  * in mod normal arhiva trebuie ​sa contina ​toate resursele necesare ​compilarii si rularii +  * În mod normal arhiva trebuie ​să conțină ​toate resursele necesare ​compilării și rulării 
-  * inainte ​de a face arhiva ​asigurati-va ca ati curatat ​proiectul Visual Studio: +  * Înainte ​de a face arhiva ​asigurați-vă că ați curățat ​proiectul Visual Studio: 
-      * click dreapta pe proiect ​in **Solution Explorer** -> **Clean Solution** +      * Click dreapta pe proiect ​în **Solution Explorer** -> **Clean Solution** 
-      * si stergeti ​folderul __**/​build/​.vs**__ (daca nu il vedeti, **este posibil ​sa fie ascuns**) +      * Ștergeți ​folderul __**/​build/​.vs**__ (dacă nu îl vedeți, **este posibil ​să fie ascuns**) 
-    * SAU stergeti complet folderul __**/​build**__ +  * În cazul în care arhiva tot depășește ​limita de 50MB (nu ar trebui), ​puteți să ștergeți și folderul __**/​deps**__ sau __**/​assets**__ ​întrucât ​se pot adăuga ​la testare. Nu este recomandat ​să faceți ​acest lucru întrucât îngreunează ​mult testarea ​în cazul în care versiunea ​curentă ​bibliotecilor/​resurselor ​diferă ​de versiunea ​utilizată ​la momentul scrierii temei.
-  * in cazul in care arhiva tot depaseste ​limita de 50MB (nu ar trebui), ​puteti sa stergeti si folderul __**/​deps**__ sau __**/​assets**__ ​intrucat ​se pot adauga ​la testare. Nu este recomandat ​sa faceti ​acest lucru intrucat ingreuneaza ​mult testarea ​in cazul in care versiunea ​curenta ​librariilor/​resurselor ​difera ​de versiunea ​utilizata ​la momentul scrierii temei.+
 </​note>​ </​note>​
  
  
egc/teme/2022/01.1667154810.txt.gz · Last modified: 2022/10/30 20:33 by maria_anca.balutoiu
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