PROG-2 logo
Neprihlásený používateľ

Špecifikácia zadania

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.

Knižnica ncurses

Knižnica ncurses umožňuje:

  • vytváranie textového používateľského rozhrania v konzole,
  • pohyb kurzora,
  • ovládanie pomocou klávesnice,
  • vytváranie okien, menu a tlačidiel
  • používanie farieb




Obrázok 1: Menu vytvorené pomocou knižnice ncurses.





Obrázok 2: Okná s formulárom vytvorené pomocou knižnice ncurses.




Obrázok 3: Práca s farbami pomocou knižnice ncurses.


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
Copyright © 2025, Pavol Marák, ÚIM FEI STU.
Vyrobené pomocou Django a Spectre.css.
Regulárne výrazy testujeme pomocou Regular Expression 101.
Videá prehrávame pomocou Plyr prehrávača.
Animácie vytvárame pomocou Animate.css.