Cieľom zadania je rozšíriť zadanie 4 a 5 (Battle Arena) o používateľské rozhranie v textovom režime a pridať tak aplikácii
interaktivitu, vylepšenú hernú logiku, vizuálne spracovanie a lepší herný zážitok.
Na pokročilú prácu s terminálom, myšou, klávesnicou, farbami a oknami je možné využiť knižnicu
ncurses.
V tomto zadaní môžete prejaviť vlastnú kreativitu a nápady. Zadanie nebude hodnotené automatizovane testovacím serverom a budete mať neobmedzený počet odovzdávaciích
pokusov bez penalizácie. Zadania sa budú hodnotiť systémom blind
peer review - t.j. anonymné hodnotenie zadaní študentmi navzájom.
Dôležité termíny
Po uplynutí doby na vypracovanie/odovzdanie zadania sa odovzdávací systém uzatvorí. Následne
sa spustí systém vzájomného anonymného hodnotenia odovzdaných zadaní (blind peer review). Po uplynutí doby na hodnotenie zadaní, sa každému študentovi zobrazí hodnotenie vlastného odovzdaného riešenia.
Dôležité termíny:
- Deadline pre odovzdávanie je 20. 5. 2025, 23:59:59
- Obdobie na blind peer review: 21. 5. 2025, 10:00:00 - 23. 5. 2025, 23:59:59
- Posledné konzultácie (Ondrej Gallo):
- Osobne v A-214: 27. 5. 2025 od 13:00
- Online cez MS Teams: 27. 5. 2025 od 17:00
Úloha
Hlavným cieľom je rozšíriť zadanie 4 a 5 takým spôsobom, aby program obsahoval konzolové/textové používateľské rozhranie, ktoré zlepší celkový herný zážitok. Môžete implementovať vlastné nápady, prejaviť kreativitu a pridať umelecké/vizuálne spracovanie. Na pokročilú prácu s terminálom a tvorbu prvkov používateľského rozhrania môžete využiť knižnicu ncurses. Iné knižnice nie je povolené používať.
Minimálne požiadavky:
Odovzdané riešenie musí spĺňať nasledovné minimálne kritériá.
Funkcionalita
- Program musí na začiatku umožniť používateľovi zvoliť si bojové jednotky a ich vybavenie (predmety v inventári, ktoré sa dajú vybrať z databázy dostupných predmetov).
- Program musí na začiatku umožniť rozmiestnenie jednotiek na bojovom poli.
- Program musí obsahovať minimálne herný režim Player vs. Player (ako bonus môžete pridať aj Player vs. AI alebo AI vs. AI)
- Program musí obsahovať niektoré z nasledovných vylepšení oproti zadaniu 4 a 5:
-
Bojové pole reprezentované ako 2D mriežka, v ktorej sa budú jednotky pohybovať a bojovať (range bude určený napr. Manhattan vzdialenosťou medzi jednotkami). Niektoré miesta na bojovom poli môžu mať nejaký špeciálny význam.
- Ovládanie programu alebo súboja pomocou klávesnice a myši.
- Pohyb bojových jednotiek po bojovom poli (jednotky môžu mať odlišnú rýchlosť pohybu).
- Save/load game.
Kvalita kódu
- Program musí mať kvalitný, čitateľný a dobre zdokumentovaný zdrojový kód.
-
Zdrojový kód musí mať logické členenie, využívať funkcie a pokročilejšie dátové typy (napr. štruktúry).
- Využívanie smerníkov na zvýšenie efektívnosti programu.
- Správny manažment pamäte (alokácie/dealokácie).
- Absencia pamäťových chýb (dá sa skontrolovať pomocou nástrojov Valgrind a Address Sanitizer).
Vizuálne/umelecké spracovanie
-
Program musí mať vylepšené vizuálne spracovanie. Uvádzame príklady, ktoré budú považované za vylepšenie vizuálnej stránky programu:
- Menu - bude slúžiť na štart/koniec programu, save/load, help a podobne.
- Grafika bojového poľa, jednotiek a súboja.
- Nápoveda - slúži používateľovi na vysvetlenie hernej logiky, ovládania programu, klávesových skratiek a podobne.
Odovzdávanie
Odovzdáva sa 1 súbor (max. 1 MB):
- zdrojový súbor
z6.c
alebo
- ZIP súbor s CLion projektom (mal by obsahovať len zdrojové/hlavičkové súbory, potrebné textové/konfiguračné súbory a
CMakeLists.txt
)
Odovzdané riešenie musí byť kompilovateľné pomocou GCC a program musí byť implementovaný ako
konzolová aplikácia. Hodnotí sa posledný odovzdaný súbor. Na odovzdanie je k dispozícii neobmedzený
počet pokusov. Jednotlivé odovzdávacie pokusy nepodliehajú bodovej penalizácii.
Spolu s vašim riešením je potrebné odovzdať aj návod na kompiláciu, spustenie a používanie. Je
to potrebné hlavne v prípadoch ak odovzdávate komplexný projekt alebo aplikáciu, ktorá
používa knižnicu ncurses.
Návod je možné vytvoriť ako samostatnú dokumentáciu, napr. PDF súbor alebo v rámci komentárov v
zdrojovom kóde.
Odovzdaný zdrojový kód musí byť riadne okomentovaný (aby sa recenzenti vyznali vo vašom kóde).
V komentároch je zakázané uvádzať meno autora kvôli zachovaniu anonymity.
Pred odovzdaním:
- vyskúšajte, či sa váš program dá skompilovať pomocou GCC,
- si skontrolujte program pomocou nástrojov Valgrind a Address Sanitizer.
Blind peer review
Hodnotenie vašich odovzdaných riešení bude prebiehať formou vzájomného anonymného hodnotenia, tzv. blind peer review. Riešenia budú hodnotené študentmi navzájom. Hodnotenie bude prebiehať online na prog2.dev.
Princíp blind peer review
- Študent, ktorý neodovzdá zadanie získa 0 bodov.
- Študent, ktorý odovzdal zadanie:
- Vyhodnotí 3 náhodné pridelené anonymné zadania iných študentov (viď obrázok 4).
- Jeho vlastné odovzdané riešenie bude vyhodnotené 3 náhodne pridelenými recenzentmi.
Obrázok 4: Panel pre blind peer review. Tento panel uvidí každý
študent, ktorý odovzdal zadanie (ukáže sa až po uplynutí termínu na odovzdávanie). Panel obsahuje odkazy na hodnotenie 3 anonymných zadaní.
Pravidlá anonymného hodnotenia zadania
Počas obdobia od 21. 5. 2025 10:00 do 23. 5. 2025 23:59:59 je možné hodnotiť pridelené zadania. V tomto čase je možné hodnotenie kedykoľvek upraviť. Hodnotenie pozostáva z týchto častí:
-
Body - recenzent pridelí zadaniu adekvátny počet bodov po zvážení všetkých kritérií hodnotenia. Udelený počet bodov je v intervale $\langle0,3\rangle$. Počet bodov môže byť aj desatinné
číslo.
-
Textový komentár k hodnoteniu - uvediete v ňom všetky dôvody a argumenty na základe, ktorých ste prideleli daný počet bodov. Treba sa explicitne vyjadriť k 3 hlavným oblastiam hodnotenia:
- Funkcionalita - max. 1 bod. Treba zhodnotiť, či zadanie spĺňa minimálne požiadavky na funkcionalitu a zvážiť všetky extra/bonusové funkcie.
- Kvalita kódu - max. 1 bod. Treba zhodnotiť, či zadanie spĺňa minimálne požiadavky na kvalitu kódu. Treba kriticky zhodnotiť nesprávne programátorské návyky, časté/začiatočnícke chyby a naopak vyzdvihnúť kvalitný, efektívny a logicky členený kód bez run-time chýb.
- Umelecký dojem - max. 1 bod. Treba zhodnotiť, či zadanie spĺňa minimálne požiadavky na vizuálne a umelecké spracovanie. Treba kriticky zhodnotiť neadekvátne a neestetické spracovanie a naopak vyzdvihnúť prívetivý a prehľadný program doplnený vhodnou grafikou.
Poznámka 1: do textového komentára k hodnoteniu je kvôli zachovaniu anonymity zakázané písať meno študenta, ktorý vyhodnotil zadanie.
Poznámka 2: programy napísané pomocou knižnice ncurses netestujte/nespúšťajte pomocou integrovaného terminálu v CLione. Integrovaný terminál nemusí správne zobrazovať grafiku a farby a tým pádom bude aplikácia s vysokou
pravdepodobnosťou nepoužiteľná. Namiesto toho použite štandardný systémový terminál.
Obrázok 5: Formulár s anonymným hodnotením zadania. Je pomocou
neho možné
zadať počet bodov a textový komentár. Hodnotenie je potrebné potvrdiť tlačidlom Schváliť hodnotenie.
Počas obdobia určeného na blind peer review môžete vaše hodnotenie kedykoľvek aktualizovať.
Bodovanie
Zadanie je za max. 10 bodov. Hodnotenie sa skladá z:
- 1b za aktivitu: bude pridelený, ak študent vyhodnotí všetky 3 pridelené anonymné zadania,
- Max. 9b za vlastné odovzdané riešenie: od každého recenzenta môže získať max. 3b.
Poznámka: blind peer review hodnotenia sa zúčastnia len tí študenti, ktorí odovzdali zadanie.
Obrázok 6: Výsledky anonymného hodnotenia. Zobrazia sa až po uplynutí
obdobia na blind peer review. Hodnotenie obsahuje body za aktivitu a body od jednotlivých anonymných recenzentov. Pri každom hodnotení si môžete pozrieť aj textový komentár recenzenta.
Spúšťanie cudzích programov
Pred hodnotením a spúšťaním prideleného anonymného zadania je potrebné si uvedomiť, že sa jedná
o cudzí a potenciálne nebezpečný kód. Preto je dotyčný kód nutné najprv preskúmať,
či nevykonáva nejakú škodlivú aktivitu (napr. prepisovanie/vymazávanie súborov a pod.). Dôrazne odporúčame spúšťať kód výlučne v izolovanom prostredí bez dosahu na vaše údaje uložené v počítači.
Ako spustiť cudzí a potenciálne nebezpečný program?
- Na vlastnom počítači bez akejkoľvek formy ochrany NEODPORÚČAME. Jedine na vlastnú zodpovednosť. Kód treba vopred dôkladne skontrolovať.
- Pomocou virtual machine (napr. VirtualBox alebo VMware).
- Pomocou Dockeru.
- Pomocou Windows Sandboxu.
- Online vývojové prostredie (napr. replit.com)
Zdroje
Nasledujúce zdroje vám môžu pomôcť pri programovaní zadania. Odporúčame si tieto zdroje preštudovať.
Na prístup k niektorým zdrojom potrebujete byť prihlásení vo vašom univerzitnom Google STU konte.
Prednášky
Jazyk C
- Neoficiálna príručka jazyka C.
Veľmi dobré na vyhľadávanie knižničných funkcíí,
obsahuje popis parametrov funkcíí, návratových hodnôt a príklady.
- Oficiálna príručka jazyka C (kompatibilná so
štandardom).
Veľmi dobré na vyhľadávanie knižničných funkcíí, obsahuje popis parametrov funkcíí, návratových hodnôt a
príklady.
Je to najspoľahlivejší zdroj informácií, avšak prezentovaný veľmi technicky a pre začiatočníkov miestami
náročne na pochopenie.
Knižnica ncurses
Zdroje použité pri tvorbe zadania a prezentácie