Cieľom zadania je pokračovať v programovaní hry Monopoly a rozšíriť ju o kreatívne funkcie. Hlavnou úlohou
je implementovať používateľské rozhranie (UI) pre Monopoly v termináli. UI bude slúžiť na ovládanie hry a vizualizáciu jej priebehu.
Môžu sa využiť farby, okná, menu, formuláre, práca s myšou a klávesnicou na grafické znázornenie jednotlivých prvkov
hry. Na tvorbu UI v textovom móde je dovolené použiť knižnicu
ncurses.
Zadanie nebude automatizovane hodnotené unit testami, ale v rámci tzv. blind peer review, kde si budú študenti
anonymne a vzájomne medzi sebou hodnotiť a bodovať odovzdané riešenia podľa ich kvality.
Úloha
Úlohou je ďalej rozvíjať hru Monopoly, ktorá bola predmetom zadania 4 a 5.
V tomto zadaní je hlavnou úlohou rozšíriť vaše existujúce riešenie o používateľské rozhranie v termináli, ktoré
prinesie interaktivitu, herný zážitok a vizualizáciu priebehu hry. Zadanie má formu free style, t.j. študent
nie je obmedzovaný v tom, ako bude dané používateľské rozhranie vyzerať a fungovať. Neexistujú žiadne pravidlá
pre formu a obsah výpisov.
Keďže sú možnosti kreslenia grafiky v termináli značne obmedzené, bude možné na vývoj
použiť známu knižnicu ncurses, ktorá
ponúka pokročilú prácu s terminálom. Návod na inštaláciu
a používanie (veľmi jednoduché) tejto knižnice bol odprezentovaný na seminári dňa 28. 4. 2026. Takisto je k dispozícii literatúra,
v ktorej sú všetky potrebné náležitosti používania knižnice vysvetlené.
Zadanie nebude automatizovane hodnotené pomocou unit testov. Počet odovzdávacích pokusov bude
neobmedzený. Zmyslom je zapojiť vlastnú kreativitu do programovania a vizualizácie údajov.
Funkcie používateľského rozhrania (nápady):
- Menu:
- Spustenie/skončenie hry
- Konfigurácia hráčov
- Konfigurácia hracieho plánu
- Iné nastavenia
- Vizualizácia (treba používať vhodnú grafiku a farby):
- hracieho plánu
- figúrok hráčov
- kocky
- informácií o hráčoch
- nakúpených nehnuteľností hráčov
- víťaza
- Interakcia (ľudský vstup):
- hádzanie kockou
- rozhodnutia počas hry
- editovanie hracieho plánu
- Nápoveda (zobrazovanie nápovedy ako hra funguje a ako sa ovláda)
- Extra funkcie:
- Save/load
- Editor/generátor hracieho plánu
- Rozšírené herné pravidlá (napr. pridanie klasických pravidiel Monopoly)
- Rôzne herné režimy (turnaj viacerých hráčov)
- Zobrazovanie štatistík
Obrázok 1a: Zobrazenie hracieho plánu v termináli (inšpirácia prevzatá z
Monopoly in C)
Obrázok 1b: Zobrazenie hracieho plánu v termináli (ďalšia inšpirácia ako zobraziť hrací
plán, kód je k dispozícii na
stiahnutie)
(
veľký obrázok)
Obrázok 1c : Hrací plán Monopoly + hod kockou + pohyb figúrky (kód je k dispozícii
na
stiahnutie)
(
veľký obrázok)
Knižnica ncurses
Je to knižnica, ktorá umožňuje programátorovi vyvíjať používateľské rozhrania v termináli. Návod
ako nainštalovať a používať knižnicu spolu s programátorskými príkladmi sú dostupné na stiahnutie v ľavom
paneli tejto webstránky po prihlásení.
Taktiež máte k dispozícii literatúru s dokumentáciou, návodmi a tutoriálmi.
Pomocou tejto knižnice dokážeme:
- vytvoriť menu aplikácie
- obrazovku rozdeliť na okná
- zadávať vstup do formulárov
- pracovať s farbami
- rozpoznávať stlačené tlačidlá a polohu ukazovateľa myši
- rozpoznávať stlačené klávesy
Obrázok 2: Niektoré vizuálne prvky knižnice ncurses (zhora nadol: menu, okno, farby).
Odovzdávanie
Pokyny pre odovzdávanie:
- Odovzdáva sa 1 zdrojový súbor (súbor s príponou .c).
- Počet odovzdávacích pokusov je neobmedzený. Bodová penalizácia je deaktivovaná.
- Hodnotí sa posledný odovzdaný súbor.
- Odovzdaný súbor musí byť kompilovateľný pomocou prekladača GCC.
- Po skompilovaní programu, musí vzniknúť spustiteľná konzolová aplikácia.
- Herná logika musí obsahovať aspoň zjednodušené pravidlá hry, s ktorými sme pracovali v zadaní 4.
- Hra musí obsahovať minimálne herný režim: človek vs. PC.
- Kód musí byť riadne okomentovaný, aby sa v ňom vaši recenzenti
vyznali.
- Do komentárov neuvádzajte vaše meno.
Čo je dovolené použiť vo vašom zdrojovom kóde:
- Štandardnú knižnicu jazyka C (t. j. bežné hlavičkové súbory ako
stdio.h,
stdlib.h, string.h a pod.).
- Knižnicu ncurses (hlavičkové súbory tejto knižnice a prilinkovanie samotnej knižnice).
Pred odovzdaním:
- Skontrolujte, či sa dá váš kód skompilovať pomocou prekladača GCC.
- Skontrolujte, či váš program neobsahuje chyby pomocou nástrojov
Valgrind a
Address Sanitizer
- Dôkladne pretestujte váš program z hľadiska používania (recenzentovi musí byť jasné ako sa program používa).
Do programu integrujte nápovedu.
- Do komentára uveďte postup ako si musí recenzent skompilovať váš kód (ak napríklad používate knižnicu ncurses
a postup nie je zrejmý).
Obrázok 3: Odovzdávací formulár na webstránke zadania
(pod formulárom je odkaz na posledný odovzdaný súbor).
Blind peer review
Zadanie sa bude hodnotiť v rámci blind peer review. Je to proces, v ktorom si odovzdané riešenia
hodnotia navzájom študenti anonymným spôsobom. Každé odovzdané zadanie bude vyhodnotené 3 náhodne
zvolenými študentmi. Body môže získať len ten študent, ktorý odovzdal zadanie.
Celý proces hodnotenia prebieha pomocou webstránky zadania.
Obrázok 4: Panel s peer review hodnotením zobrazuje 3 náhodne pridelené
zadania, ktoré musí študent vyhodnotiť (zobrazí sa po
vypršaní termínu na odovzdávanie zadaní).
Každý študent, ktorý odovzdal zadanie vyhodnotí 3 náhodne pridelené zadania.
Hodnotenie zadania spočíva v pridelení bodov v intervale $\langle0,3\rangle$ a napísaní slovného komentára,
v ktorom recenzent vymenuje všetky potrebné argumenty, ktoré vysvetľujú, prečo udelil daný počet bodov.
Ak študent vyhodnotí všetky 3 pridelené zadania, získa 1 bod za aktivitu.
Oblasti, ktoré musí recenzent zohľadniť v hodnotení:
- Funkcionalita (overenie, či hra funguje a aké možnosti ponúka)
- Kvalita kódu (overenie, či je kód kvalitný, logicky organizovaný, pamäťovo a časovo efektívny)
- Umelecký dojem a hrateľnosť (posúdenie vizuálnej atraktivity a kvality herného zážitku)
Ďalšie oblasti, ktoré môže recenzent posúdiť:
- Prítomnosť run-time chýb v programe (napríklad chyby odhalené Valgrindom alebo Address Sanitizerom)
- Prítomnosť/kvalita komentárov
- Nápoveda počas hry
- Inovatívnosť/originálnosť/pridaná hodnota autora
Dôležité odporúčanie pre recenzenta:
Programy napísané pomocou knižnice ncurses neskúšať/netestovať v integrovanom
termináli vývojového prostredia CLion.
Aplikácia sa tam nebude zobrazovať korektne a pravdepodobne nebude ani fungovať.
Na testovanie použite systémový terminál.
Obrázok 5: Príklad hodnotenia zadania
(spočíva v pridelení bodov z intervalu $\langle0,3\rangle$ a slovného komentára). Zdrojový kód hodnoteného
zadania sa nachádza v spodnej časti formulára
(
veľký obrázok).
Spúšťanie cudzích programov
Každý študent, ktorý odovzdal zadanie sa stane recenzentom, ktorému budú náhodne pridelené
3 anonymné zadania, ktoré musí vyhodnotiť. Na vyhodnotenie je však potrebné skompilovať a spustiť cudzí kód
iného študenta. Takýto kód môže byť potenciálne nebezpečný a preto je potrebné byť opatrný. Zdrojový kód je
potrebné pred skompilovaním najprv analyzovať, či nie je škodlivý (napr. nedochádza k zápisu/vymazávaniu
súborov a pod.). Z bezpečnostných dôvodov odporúčame spúšťať cudzie programy v izolovanom prostredí resp. na inom počítači, kde
sa nenachádzajú vaše osobné/citlivé údaje.
Ako spustiť cudzí program?
- Na vlastnom počítači na vlastnú zodpovednosť (treba vopred dôkladne skontrolovať zdrojový kód).
- Pomocou virtual machine (VMWare, VirtualBox a pod.)
- Pomocou Dockeru
- Pomocou Windows Sandboxu
- Online vývojové prostredie replit.com
Výsledky hodnotenia
Po uplytnutí doby na peer review sa na webstránke zadaní zobrazí každému študentovi výsledok hodnotenia. Za
zadanie je možné získať max. 10 bodov.
Výsledok hodnotenia:
- 1 bod za aktivitu (iba ak študent vyhodnotil všetky 3 pridelené zadania)
- Max. 9 bodov za vlastné zadanie od 3 anonymných recenzentov (každý recenzent môže dať max. 3 body).
Obrázok 6: Panel s výsledkami hodnotenia (obsahuje body za aktivitu a body pridelené
jednotlivými anonymnými recenzentmi). Po stlačení tlačidla Detail si môžete prečítať slovný komentár
vášho recenzenta. Tento panel sa zobrazí až po uplynutí doby na peer review.
Dôležité termíny
Dôležité termíny:
- Deadline pre odovzdávanie: 17. máj 2026, 23:59:59
- Obdobie na peer review: 18. máj 2026, 00:00:00 - 20. máj 2026, 23:59:00
- Posledné konzultácie (MS Teams): 21. máj 2026, 14:00 - 15:00
Obrázok 7: Dôležité termíny, ktoré sa týkajú zadania č. 6.
Zdroje
Nasledujúce zdroje vám môžu pomôcť pri programovaní zadania.
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 obrázkov