This shows you the differences between two versions of the page.
|
egc:teme:2025:01 [2025/10/26 19:31] robert.caragicu |
egc:teme:2025:01 [2025/10/26 22:43] (current) andrei.voicu2409 [Funcționalități avansate (75p)] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | <hidden> | + | ===== Tema 1 - Arcade Machine ===== |
| - | ===== Tema 1 - Joc cu nave proiectate de jucători ===== | + | |
| * **Responsabili:** Robert Caragicu, Cristian Lambru, Andrei Voicu, Ioana Chiper, Vlad Novetschi | * **Responsabili:** Robert Caragicu, Cristian Lambru, Andrei Voicu, Ioana Chiper, Vlad Novetschi | ||
| Line 15: | Line 14: | ||
| La începutul jocului jucătorul va proiecta propria navă folosind un editor. Editorul va arată în felul următor. | La începutul jocului jucătorul va proiecta propria navă folosind un editor. Editorul va arată în felul următor. | ||
| - | PLACEMENT EDITOR IMAGE | + | {{ :egc:teme:2025:editor_tema_1.png?500 |}} |
| - | Nava este formată din blocuri de 1x1 așezate pe o grilă. În partea stângă a editorului se află celule ordonate vertical, cate una pentru fiecare tip de bloc. Grila în care jucătorul proiectează nava se află în partea din dreapta jos a ferestrei și este de dimensiuni minim 5x5. În dreapta sus se află o bară orizontală în care se află pătrate verzi ce reprezintă numărul de blocuri pe care îl mai poate așeza jucătorul pe grila pentru construcția navei spațiale (nava are maxim 10 blocuri). În colțul din dreapta sus se află butonul pentru începerea jocului (numit buton start). | + | Nava este formată din blocuri de 1x1 așezate pe o grilă. În partea stângă a editorului se află celule ordonate vertical, câte una pentru fiecare tip de bloc. Grila în care jucătorul proiectează nava se află în partea din dreapta jos a ferestrei și este de dimensiuni minim 5x5. În dreapta sus se află o bară orizontală în care se află pătrate verzi ce reprezintă numărul de blocuri pe care îl mai poate așeza jucătorul pe grila pentru construcția navei spațiale (nava are maxim 10 blocuri). În colțul din dreapta sus se află butonul pentru începerea jocului (numit buton start). |
| Line 24: | Line 23: | ||
| Fiecare bloc este de dimensiuni 1x1 dar conțin elemente decorative care pot să fie în afara blocului. **Orice bloc care nu este folosit în jocul pe care alegeți să îl implementați poate să lipsească din editor.** | Fiecare bloc este de dimensiuni 1x1 dar conțin elemente decorative care pot să fie în afara blocului. **Orice bloc care nu este folosit în jocul pe care alegeți să îl implementați poate să lipsească din editor.** | ||
| - | | Bloc solid | Un pătrat simplu de dimensiuni 1x1 | | + | | Bloc solid | {{ :egc:teme:2025:bloc_solid_tema_1.png?50 }} | Un pătrat simplu de dimensiuni 1x1 | |
| - | | Tun | Este de dimeniune 3 linii x 1 coloană. În partea de jos se află un pătrat și un semicerc. În partea de sus se află țeava tunului de dimensiune 2 linii x 1 coloană. | | + | | Tun | {{ :egc:teme:2025:bloc_tun_tema_1.png?50 }} | Este de dimeniune 3 linii x 1 coloană. În partea de jos se află un pătrat și un semicerc. În partea de sus se află țeava tunului de dimensiune 2 linii x 1 coloană. | |
| - | | Motor | Un pătrat de 1x1 care are în partea de jos o geometrie similară cu cea din imagine | | + | | Motor | {{ :egc:teme:2025:bloc_motor_tema_1.png?50 }} | Un pătrat de 1x1 care are în partea de jos o geometrie similară cu cea din imagine | |
| - | | Bumper| Un pătrat 1x1 care are în partea de sus un semicerc de dimensiuni 3 coloane x 1 linie | | + | | Bumper | {{ :egc:teme:2025:bloc_bumper_tema_1.png?50 }}| Un pătrat 1x1 care are în partea de sus un semicerc de dimensiuni 3 coloane x 1 linie | |
| //Culorile vârfurilor modelelor 2D sunt la alegerea voastră cât timp elementele distincte (pătrate, flăcări, arcuri de cerc, țeava tun) din fiecare model au o culoare diferită.// | //Culorile vârfurilor modelelor 2D sunt la alegerea voastră cât timp elementele distincte (pătrate, flăcări, arcuri de cerc, țeava tun) din fiecare model au o culoare diferită.// | ||
| Line 35: | Line 34: | ||
| Pentru a asigura corectitudinea navei și pentru a nu suprapune elementele decorative editorul trebuie să verifice următoarele constrângeri înainte de a porni jocul: | Pentru a asigura corectitudinea navei și pentru a nu suprapune elementele decorative editorul trebuie să verifice următoarele constrângeri înainte de a porni jocul: | ||
| + | |||
| + | | {{ :egc:teme:2025:constrangere_conex_tema_1.png?200 }} | {{ :egc:teme:2025:constrangere_bumper_tema_1.png?100 }} | | ||
| + | | {{ :egc:teme:2025:constrangere_bumper_tun_tema_1.png?100 }} | {{ :egc:teme:2025:constrangere_motor_tema_1.png?100 }} | {{ :egc:teme:2025:constrangere_tun_tema_1.png?100 }} | | ||
| * Vehiculul trebuie să aibă cel puțin 1 bloc. | * Vehiculul trebuie să aibă cel puțin 1 bloc. | ||
| Line 44: | Line 46: | ||
| * Nu se pot plasa două blocuri bumper vecine. | * Nu se pot plasa două blocuri bumper vecine. | ||
| * Vehiculul nu poate fi compus din mai mult de 10 blocuri. | * Vehiculul nu poate fi compus din mai mult de 10 blocuri. | ||
| - | |||
| ====== Interacțiune cu editorul ====== | ====== Interacțiune cu editorul ====== | ||
| - | PLACEMENT GIF DRAG AND DROP | + | {{ :egc:teme:2025:drag_and_drop_tema_1.gif?500 |}} |
| - | Acțiunea de construcție a vehiculului se realizeaza printr-un proces de drag&drop după urmatorii pasi: | + | Acțiunea de construcție a vehiculului se realizeaza printr-un proces de drag&drop după următorii pași: |
| - | * Utilizatorul apasă butonul stanga de la mouse pe una dintre cele 4 celule din panoul stâng al editorului. In acel moment, atasat de mouse, se considera ca este blocul desemnat de celulă în care a apăsat butonul stanga. | + | * Utilizatorul apasă butonul stanga de la mouse pe una dintre cele 4 celule din panoul stâng al editorului. În acel moment, atașat de mouse, se consideră că este blocul desemnat de celulă în care a apăsat butonul stânga. |
| - | * Pe toata perioada în care utilizatorul tine apăsat butonul stanga de la mouse, de la momentul primei apasari în interiorul unei celule, se afișează la poziția cursorului blocul desemnat de celulă în care s-a dat stanga. Acest lucru se întâmplă și în momentul în care cursorul își schimba poziția pe ecran. | + | * Pe toată perioada în care utilizatorul ține apăsat butonul stânga de la mouse, de la momentul primei apăsări în interiorul unei celule, se afișează la poziția cursorului blocul desemnat de celulă în care s-a dat stânga. Acest lucru se întâmplă și în momentul în care cursorul își schimbă poziția pe ecran. |
| - | * În momentul în care nu se mai tine apăsat butonul stanga de la mouse, se pot intampla 2 scenarii: | + | * În momentul în care nu se mai ține apăsat butonul stânga de la mouse, se pot întâmpla 2 scenarii: |
| * În situația în care cursorul este în interiorul unei celule din grila 2D, se introduce în acel grid blocul desemnat. | * În situația în care cursorul este în interiorul unei celule din grila 2D, se introduce în acel grid blocul desemnat. | ||
| - | * În situația în care cursorul nu se afla în interiorul unei celule din grila 2D, blocul desemnat încetează sa se mai afișează la poziția cursorului. | + | * În situația în care cursorul nu se află în interiorul unei celule din grila 2D, blocul desemnat încetează să se mai afișeze la poziția cursorului. |
| - | În momentul în care se apasă butonul dreapta de la mouse cand cursorul se afla intr-una din celulele grilei care conține deja un bloc, acel bloc este scos din celulă și nu se mai afișează. | + | În momentul în care se apasă butonul dreapta de la mouse când cursorul se află într-una din celulele grilei care conține deja un bloc, acel bloc este scos din celulă și nu se mai afișează. |
| - | Butonul de start va avea culoarea verde cât timp vehiculul proiectat respectă constrângerile, roșu altfel. | + | Butonul de start va avea culoarea verde cât timp vehiculul proiectat respectă constrângerile, roșu altfel. Pentru a începe jocul, jucătorul dă un click pe butonul de start verde. Nava proiectată este copiată și folosită în joc. |
| - | Pentru a începe jocul, jucătorul dă un click pe butonul de start verde. Nava proiectată este copiată și folosită în joc. | + | |
| ====== PONG ====== | ====== PONG ====== | ||
| - | PLACEMENT GIF PONG | + | {{ :egc:teme:2025:pong_tema_1.gif |}} |
| + | //(Exemplu orientativ)// | ||
| Jocul //Pong// este unul dintre cele mai simple și iconice jocuri video din istorie, reprezentând o simulare minimalistă a unui meci de tenis de masă. Scopul jocului este ca fiecare jucător să controleze o paletă (o bară verticală) care se deplasează pe axa verticală, pentru a respinge o bilă care se deplasează continuu între cele două părți ale ecranului. Fiecare jucător încearcă să împiedice mingea să treacă de propria paletă, iar când acest lucru se întâmplă, adversarul primește un punct. Câștigă jucătorul care ajunge primul la un număr prestabilit de puncte. | Jocul //Pong// este unul dintre cele mai simple și iconice jocuri video din istorie, reprezentând o simulare minimalistă a unui meci de tenis de masă. Scopul jocului este ca fiecare jucător să controleze o paletă (o bară verticală) care se deplasează pe axa verticală, pentru a respinge o bilă care se deplasează continuu între cele două părți ale ecranului. Fiecare jucător încearcă să împiedice mingea să treacă de propria paletă, iar când acest lucru se întâmplă, adversarul primește un punct. Câștigă jucătorul care ajunge primul la un număr prestabilit de puncte. | ||
| Line 100: | Line 101: | ||
| ====== BREAKOUT ====== | ====== BREAKOUT ====== | ||
| - | PLACEMENT GIF BREAKOUT | + | {{ :egc:teme:2025:breakout_tema_1.gif?600 |}} |
| + | //(Exemplu orientativ)// | ||
| Jocul Breakout este un clasic al genului arcade, bazat pe mecanica de distrugere a unui perete format din cărămizi colorate, folosind o bilă care ricoșează între limitele ecranului. Jucătorul controlează o paletă amplasată în partea inferioară a scenei, pe care o poate deplasa orizontal pentru a respinge bila și a o direcționa către cărămizi. La fiecare impact, o cărămidă este distrusă, iar jucătorul primește puncte. Obiectivul principal este eliminarea tuturor cărămizilor de pe ecran fără a pierde mingea. Dacă bila cade sub paletă, jucătorul pierde o viață, iar jocul se reia din poziția inițială. Breakout combină precizia, reflexul și planificarea unghiului de lovire, oferind o experiență de joc simplă, dar captivantă și dinamică. | Jocul Breakout este un clasic al genului arcade, bazat pe mecanica de distrugere a unui perete format din cărămizi colorate, folosind o bilă care ricoșează între limitele ecranului. Jucătorul controlează o paletă amplasată în partea inferioară a scenei, pe care o poate deplasa orizontal pentru a respinge bila și a o direcționa către cărămizi. La fiecare impact, o cărămidă este distrusă, iar jucătorul primește puncte. Obiectivul principal este eliminarea tuturor cărămizilor de pe ecran fără a pierde mingea. Dacă bila cade sub paletă, jucătorul pierde o viață, iar jocul se reia din poziția inițială. Breakout combină precizia, reflexul și planificarea unghiului de lovire, oferind o experiență de joc simplă, dar captivantă și dinamică. | ||
| Line 129: | Line 131: | ||
| ====== CHICKEN INVADERS ====== | ====== CHICKEN INVADERS ====== | ||
| - | PLACEHOLDER IMAGINE CHICKEN INVADERS | + | {{ :egc:teme:2025:chicken_invaders_tema_1.jpg?600 |}} |
| Jocul [[https://www.youtube.com/watch?v=Kk36Ko0CeX8|Chicken Invaders]] este de tipul //Shoot'em up// și are ca scop distrugerea tuturor inamicilor pe ecran folosind nava spațială. | Jocul [[https://www.youtube.com/watch?v=Kk36Ko0CeX8|Chicken Invaders]] este de tipul //Shoot'em up// și are ca scop distrugerea tuturor inamicilor pe ecran folosind nava spațială. | ||
| Line 135: | Line 137: | ||
| **Inamici**: La începutul jocului va fi prezentă o formație de inamici de cel puțin 2 linii pe 5 coloane. Fiecare inamic va coborî încet și în același timp va trage periodic un proiectil în josul hărții. | **Inamici**: La începutul jocului va fi prezentă o formație de inamici de cel puțin 2 linii pe 5 coloane. Fiecare inamic va coborî încet și în același timp va trage periodic un proiectil în josul hărții. | ||
| + | |||
| + | Inamicii vor avea următorul aspect: {{ :egc:teme:2025:simple_chicken_tema_1.png?200 }} | ||
| + | |||
| + | Pentru bonus se poate folosi următorul aspect: {{ :egc:teme:2025:complex_chicken_tema_1.png?200 |}} | ||
| **Comportament de bază jucător**: Nava jucătorului se mișcă stânga-dreapta și folosind Space va trage din tunurile sale proiectile. Viteza jucătorului depinde de numărul de blocuri de tip motor prezente în vehicul. | **Comportament de bază jucător**: Nava jucătorului se mișcă stânga-dreapta și folosind Space va trage din tunurile sale proiectile. Viteza jucătorului depinde de numărul de blocuri de tip motor prezente în vehicul. | ||
| Line 150: | Line 156: | ||
| **Mișcare verticală a jucătorilor**: Se permite folosirea celor patru taste săgeți (↑←↓→) pentru a mișca jucătorul. | **Mișcare verticală a jucătorilor**: Se permite folosirea celor patru taste săgeți (↑←↓→) pentru a mișca jucătorul. | ||
| + | |||
| + | ===== Barem ===== | ||
| + | |||
| + | ==== Funcționalități de bază (150p) ==== | ||
| + | |||
| + | * Editor (75p) | ||
| + | * Desenare componente în stânga ecranului (10p) //Includeți doar componentele care le folosiți în jocul ales de voi.// | ||
| + | * Desenare grilă proiectare vehicul (15p) | ||
| + | * Desenare număr componente rămase (5p) | ||
| + | * Desenare buton start (5p) | ||
| + | * Drag and drop pentru construcție (20p) | ||
| + | * Click dreapta pentru ștergere (10p) | ||
| + | * Verificare constrângeri vehicul (15p) | ||
| + | * Colorare buton start (2,5p) | ||
| + | * Copierea vehicului proiectat în joc (2,5p) | ||
| + | * Implementare joc (75p) | ||
| + | * **Pong** | ||
| + | * Desenare scenă (25p) | ||
| + | * Control palete (5p) | ||
| + | * Mișcare bilă (5p) | ||
| + | * Detectare Coliziuni (10p) | ||
| + | * Ricoșeu bilă la marginile orizontale ale hărții (5p) | ||
| + | * Ricoșeu bilă la palete (10p) | ||
| + | * Scor la gol (5p) | ||
| + | * Resetare bilă (10p) | ||
| + | * **Breakout** | ||
| + | * Desenare scenă (25p) | ||
| + | * Control paletă (5p) | ||
| + | * Mișcare bilă (5p) | ||
| + | * Detectare Coliziuni (15p) | ||
| + | * Spargere cărămizi (10p) | ||
| + | * Pierdere viață (5p) | ||
| + | * Resetare bilă (5p) | ||
| + | * Servire minge la începutul jocului (5p) | ||
| + | * **Chicken Invaders** | ||
| + | * Desenare inamici (15p) | ||
| + | * Mișcare inamici (5p) | ||
| + | * Tragere proiectile de către inamici (5p) | ||
| + | * Mișcare navă (5p) | ||
| + | * Tragere proiectile de către navă (5p) | ||
| + | * Mișcare proiectile (5p) | ||
| + | * Detectare coliziuni (15p) | ||
| + | * Distrugere inamici la coliziune cu proiectil al navei (5p) | ||
| + | * Joc pierdut când nava este lovită de un proiectil al unui inamic (5p) | ||
| + | * Joc pierdut când un inamic atinge marginea de jos a hărții (5p) | ||
| + | * Afișare scor (5p) | ||
| + | |||
| + | ==== Funcționalități avansate (75p) ==== | ||
| + | |||
| + | * **Pong** | ||
| + | * Implementare componentă bumper (desenare + constrângeri) (10p) | ||
| + | * Creștere viteză bilă (10p) | ||
| + | * Animație paletă (10p) | ||
| + | * Implementare componentă tun (desenare + constrângeri) (10p) | ||
| + | * Lansare de bile din tunuri la rundă nouă (15p) //Dacă este implementată această cerința cerința "Resetare bilă" este considerată rezolvată.// | ||
| + | * Suport în joc pentru mai multe bile (20p) | ||
| + | * **Breakout** | ||
| + | * Animație spargere cărămizi (30p) | ||
| + | * Logică cărămizi rezistente (25p) | ||
| + | * Desenare cărămizi în mai multe culori în funcție de câtă rezistență mai au (20p) | ||
| + | * **Chicken Invaders** | ||
| + | * Coborâre sinusoidală a inamicilor (20p) | ||
| + | * Sistem valuri (45p) | ||
| + | * Mișcare completă a jucătorilor (10p) | ||
| + | |||
| + | ==== Exemple de funcționalități bonus ==== | ||
| + | * Camera shake (+20p) | ||
| + | * Animații cu “particule” la distrugerea obiectelor (+10p) | ||
| + | * Sistem de viață per componentă (+25p) | ||
| + | * Modele diferite în funcție de gradul de daune primit (+10p) | ||
| + | * Elemente UI în timpul jocului, ex: scor obținut, inamici rămași etc. (+10–20p) | ||
| + | * Sistem magazin (în funcție de performanța în timpul jocului, se pot achiziționa upgrade-uri / componente mai puternice etc.) (+20–30p) | ||
| + | * Mai multe blocuri cu funcționalități diferite (+5–10p per bloc) | ||
| + | * Design coerent, frumos al jocului (+10p) | ||
| ==== Întrebări și răspunsuri ==== | ==== Întrebări și răspunsuri ==== | ||
| Line 175: | Line 255: | ||
| * Î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ă a bibliotecilor/resurselor diferă de versiunea utilizată la momentul scrierii temei. | * Î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ă a bibliotecilor/resurselor diferă de versiunea utilizată la momentul scrierii temei. | ||
| </note> | </note> | ||
| - | |||
| - | </hidden> | ||