This shows you the differences between two versions of the page.
|
poo-is-ab:tema:2025:03 [2025/12/08 11:22] marius.trifu created |
poo-is-ab:tema:2025:03 [2025/12/11 18:00] (current) marius.trifu [7. Exemplu Simplificat] |
||
|---|---|---|---|
| Line 3: | Line 3: | ||
| 🤖 **Liga Boților - Resource Rush** ⚔️ | 🤖 **Liga Boților - Resource Rush** ⚔️ | ||
| - | Construiește un **motor de simulare pentru un joc de colectare resurse** pe o hartă rectangulară (N × M) cu obstacole și power-ups. Formatul este **100% comandă-per-linie**, astfel încât **output-ul tău poate fi redat ca input** pentru un alt student – perfect pentru dueluri! | + | Construiește un **motor de simulare pentru un joc de colectare resurse** pe o hartă rectangulară (N × M) cu obstacole și power-ups. Formatul este **100% comandă-per-linie**, astfel sunt posibile dueluri intre 2 jucatori. |
| <note important> | <note important> | ||
| 📅 **Publicare:** 8.12.2025 \\ | 📅 **Publicare:** 8.12.2025 \\ | ||
| - | ⏰ **Deadline:** 21.12.2025, ora 23:59 \\ | + | ⏰ **Deadline:** 22.12.2025, ora 23:59 \\ |
| 🎯 **Punctaj Total:** 10p (9p teste + 1p README + până la 5p bonus clasament) \\ | 🎯 **Punctaj Total:** 10p (9p teste + 1p README + până la 5p bonus clasament) \\ | ||
| 🧪 **Teste:** 20 scenarii automate (folder `teste/`) \\ | 🧪 **Teste:** 20 scenarii automate (folder `teste/`) \\ | ||
| Line 266: | Line 266: | ||
| <note warning> | <note warning> | ||
| - | **⚠️ IMPORTANT - Anti-copiere:** Dacă se detectează teme copiate sau cod plagiat, **se acordă 0 puncte** pentru întreaga temă, indiferent de rezultatele testelor. | + | **⚠️ IMPORTANT - Anti-copiere:** Dacă se detectează teme copiate sau cod plagiat, **se acordă 0 puncte** pentru întreaga temă, indiferent de rezultatele testelor/bonusuri. |
| - | **⚠️ IMPORTANT - Notare:** Dacă tema nu compilează sau nu trece niciun test, tema este notată direct cu **0 puncte**. | + | **⚠️ IMPORTANT - Notare:** Dacă tema nu compilează sau nu trece niciun test, tema este notată direct cu **0 puncte**, nu se primeste nici bonus. |
| </note> | </note> | ||
| Line 285: | Line 285: | ||
| ==== 4.3 Bonus Clasament ==== | ==== 4.3 Bonus Clasament ==== | ||
| - | * **TODO:** Bonus-ul pentru clasament va apărea în scurt timp. | + | * Bonus acordat în funcție de poziția în clasamentul duelurilor: |
| - | * Clasamentul va fi calculat prin rularea temelor studenților între ele (dueluri), unde fiecare temă va avea un scor bazat pe performanța în aceste dueluri. | + | * Loc 1: **+6p** |
| - | * Detalii despre calculul bonus-ului vor fi anunțate ulterior. | + | * Loc 2-3: **+5p** |
| + | * Loc 4-5: **+4p** | ||
| + | * Loc 6-10: **+3p** | ||
| + | * Loc 11-20: **+2p** | ||
| + | * Loc 21-25: **+1p** | ||
| + | * Clasamentul se calculează din duelurile între teme; bonusul se acordă în plus față de punctele din teste/README. | ||
| + | * În tabelul cu scoruri există un buton care deschide pagina cu clasamentul duelurilor; acolo poți vedea și animația/replay-ul fiecărui duel. | ||
| - | ===== 5. Încărcare și Testare ===== | + | ===== 5. Depunctări ===== |
| + | |||
| + | Depunctări dacă: | ||
| + | * Nu redenumești corect repository-ul: -0.5p | ||
| + | * Codul nu trece verificarea cu Valgrind (se verifică manual la final): -1p | ||
| + | * Codul nu este împărțit în fișiere separate (.h / .cpp): -0.5p | ||
| + | * Cod scris fără comentarii minime/structură clară, variabile numite aleator: până la -1p | ||
| + | * Folosești AI (ChatGPT/Copilot etc.) fără să menționezi clar în README ce porțiuni au fost generate sau dacă depășești 30% din cod generat de AI: până la -6p | ||
| + | |||
| + | Foarte important: după accept, redenumește repository-ul în formatul: | ||
| + | * `tema3-32XAB-Nume-Prenume` | ||
| + | * Exemplu: `tema3-322AB-Trifu-Marius` | ||
| + | |||
| + | Cum redenumești pe GitHub: | ||
| + | 1. Intră în repository | ||
| + | 2. Click pe Settings | ||
| + | 3. Secțiunea General → Repository name | ||
| + | 4. Schimbă în `tema3-32XAB-Nume-Prenume` | ||
| + | 5. Click Rename | ||
| + | |||
| + | ===== 6. Încărcare și Testare ===== | ||
| **Comenzi Make:** | **Comenzi Make:** | ||
| Line 300: | Line 326: | ||
| </code> | </code> | ||
| - | ===== 6. Exemplu Simplificat ===== | + | ===== 7. Exemplu Simplificat ===== |
| - | **Scenariu:** Hartă 5×5, tu (Jucător 1) ești la (0,0), adversarul (Jucător 2) la (3,2), punctul final la (4,4). Hartă cu resurse, pereți și power-ups. Trebuie să ajungi la (4,4) înainte de 20 de runde. | + | **Scenariu:** Hartă 5×5, tu (Jucător 1) ești la (0,0), adversarul (Jucător 2) la (3,2), punctul final la (4,4). Hartă cu resurse, pereți și power-ups. Trebuie să ajungi la (4,4) înainte de 10 de runde. |
| ^ Input ^ | ^ Input ^ | ||
| Line 351: | Line 377: | ||
| * Dacă se termină rundele și nu ești la (4,4) → testul pică (0 puncte). | * Dacă se termină rundele și nu ești la (4,4) → testul pică (0 puncte). | ||
| - | ===== 7. Tips & Checklist ===== | + | ===== 8. Reguli Dueluri ===== |
| + | |||
| + | **8.1 Format și hartă** | ||
| + | * Duelurile folosesc aceeași logică de joc, pe harta de referință de mai jos (duel.txt); în pagina de dueluri poți vizualiza animația/replay-ul fiecărui duel (buton din tabelul de scoruri). | ||
| + | |||
| + | ^ duel.txt ^ | ||
| + | | <code> | ||
| + | ARENA 12 21 200 | ||
| + | 0 9 | ||
| + | 0 11 | ||
| + | 11 10 | ||
| + | MAP | ||
| + | 0 0 0 0 W 15 0 0 E 0 E 0 E W 0 0 0 0 0 21 22 | ||
| + | J 21 0 W 12 21 17 13 E 0 0 0 E 12 12 19 J 0 12 13 12 | ||
| + | W 0 0 12 18 0 J 0 F E 0 E 15 17 W 0 13 0 D 14 W | ||
| + | 18 0 F 12 21 0 J 12 W 19 22 0 0 W 12 W 0 17 W 15 0 | ||
| + | 15 21 13 0 0 J 13 17 13 16 17 J 15 0 0 0 15 W 12 18 W | ||
| + | 0 F 0 W 14 0 18 W 0 18 0 13 0 W 16 13 0 17 16 18 17 | ||
| + | 14 0 14 15 0 13 0 14 12 13 0 19 15 15 21 12 0 12 0 13 16 | ||
| + | 0 20 22 12 22 0 W W 0 0 0 18 0 0 21 J 17 21 19 F 0 | ||
| + | 15 0 0 0 20 16 0 12 18 F F F 0 16 W J 12 19 J 21 0 | ||
| + | 13 0 16 16 0 17 W F 0 0 13 0 J 20 21 0 15 15 19 12 20 | ||
| + | J 19 19 0 0 T 22 0 13 F E F 18 19 0 0 14 0 0 0 0 | ||
| + | W 0 14 0 0 0 20 15 22 F 0 F 12 W 0 0 16 12 0 21 0 | ||
| + | END_MAP | ||
| + | STREAM | ||
| + | </code> | | ||
| + | |||
| + | |||
| + | * Perspective jucători: fișierul de mai sus este din perspectiva Player 1 (P1); în pagina de dueluri se poate vedea animația/replay-ul duelului (buton din pagina de scoruri). | ||
| + | <code> | ||
| + | ARENA 12 21 200 | ||
| + | 0 9 # start P1 | ||
| + | 0 11 # start P2 | ||
| + | 11 10 # FINAL_X FINAL_Y | ||
| + | </code> | ||
| + | |||
| + | * Dacă joci ca Player 2 (inversare roluri), liniile de start devin: | ||
| + | |||
| + | <code> | ||
| + | ARENA 12 21 200 | ||
| + | 0 11 # start P1 (era P2) | ||
| + | 0 9 # start P2 (era P1) | ||
| + | 11 10 | ||
| + | </code> | ||
| + | |||
| + | * Harta rămâne identică; doar liniile de start se schimbă pentru a vedea duelul din perspectiva celuilalt jucător. La fiecare push nou (submit score), se rulează automat dueluri între tema ta și toate celelalte teme eligibile; rezultatele și animațiile (replay) apar în pagina de dueluri (buton din pagina de scoruri). | ||
| + | * Fiecare duel are 2 jucători (tema ta vs tema altui student), cu tick-uri trimise secvențial. | ||
| + | |||
| + | **8.2 Ordinea mutărilor și simultaneitate** | ||
| + | * La fiecare `TICK`, fiecare jucător primește **poziția anterioară** a adversarului (nu poziția rezultată după mutarea curentă). | ||
| + | * Dacă ambii aleg o destinație și ajung **simultan în aceeași celulă**, resursa se anulează (nu primește nimeni puncte) și celula devine `0`. | ||
| + | * Dacă celula este `F` (fire), jucătorul care intră pierde instant; celălalt poate continua (dacă are tick-uri). | ||
| + | |||
| + | **8.3 Finalul pentru un jucător** | ||
| + | * Când un jucător ajunge la punctul final, **procesul lui se oprește**; pentru restul tick-urilor i se trimite automat `WAIT`. | ||
| + | * Celălalt jucător continuă să joace până ajunge la final sau se termină tick-urile disponibile. | ||
| + | * Dacă se termină tick-urile și jucătorul nu e la final, duelul se încheie pentru el cu starea curentă (fără puncte suplimentare). | ||
| + | |||
| + | **8.4 Scor și afișare** | ||
| + | * Scorul din duel este suma resurselor colectate (cu multiplicatori) până la încheierea individuală a fiecărui jucător. | ||
| + | * Clasamentul duelurilor folosește suma totală a acestor scoruri; bonusurile de clasament se acordă separat conform regulilor din secțiunea Punctaj. | ||
| + | |||
| + | ===== 9. Tips & Checklist ===== | ||
| * ✅ Asigură-te că output-ul tău nu are spații în plus. | * ✅ Asigură-te că output-ul tău nu are spații în plus. | ||
| * ⛔ Nu amesteca logică de I/O cu logica de simulare – folosește stderr pentru debug. | * ⛔ Nu amesteca logică de I/O cu logica de simulare – folosește stderr pentru debug. | ||