This shows you the differences between two versions of the page.
egc:teme:2022:01 [2022/10/30 22:47] alexandru.gradinaru |
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ă!** | ||
Line 8: | Line 8: | ||
Î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 grafic minimal :). | + | De asemenea, puteti viziona un mic demo construit rapid pe baza frameworkului de laborator care acopera cerintele, avand un aspect vizual minimal :). |
<html> | <html> | ||
Line 57: | 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 ==== | ||
Line 89: | Line 89: | ||
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. | 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 î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 = 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. |
<note>Atenție! Aceste valori sunt întregi, aveț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> | <note>Atenție! Aceste valori sunt întregi, aveț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> | ||
Line 127: | Line 127: | ||
* Realizarea gazonului de jos în spatele căruia apare rața, astfel încât să nu apară brusc pe ecran de nicăieri. | * Realizarea gazonului de jos în spatele căruia apare rața, astfel încât să nu apară brusc pe ecran de nicăieri. | ||
* Rațe mai detaliate/complexe ca geometrie. | * Rațe mai detaliate/complexe ca geometrie. | ||
- | * Crosshair pe mouse și eventual o pușcă/armă animată în funcție de poziția cursorului pe ecran (să fie îndreptată/rotită spre cursor). | + | * Crosshair pe mouse și o pușcă/armă animată în funcție de poziția cursorului pe ecran (să fie îndreptată/rotită spre cursor). |
* 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). | * 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). | ||
Line 153: | Line 153: | ||
* Click dreapta pe proiect în **Solution Explorer** -> **Clean Solution** | * Click dreapta pe proiect în **Solution Explorer** -> **Clean Solution** | ||
* Ștergeți folderul __**/build/.vs**__ (dacă nu îl vedeți, **este posibil să fie ascuns**) | * Ștergeți folderul __**/build/.vs**__ (dacă nu îl vedeți, **este posibil să fie ascuns**) | ||
- | * SAU ștergeți 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ă 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> | ||