======= Semestrální práce ======= Tento úkol se odevzdává do BRUTE a budeme ho bodovat manuálně. /*[[https://docs.google.com/spreadsheets/d/1EgGtST4KFkXBkzXZ_AC0QuQEWxlFnnl7/edit#gid=1607250765|Přehled studentů a vybraných témat]]*/ [[https://drive.google.com/file/d/1EgGtST4KFkXBkzXZ_AC0QuQEWxlFnnl7/view?usp=sharing|Přehled studentů a vybraných témat]] Pro náhled do tabulky vybraných témat je nutné použít účet FEL (**xxxxxxxx@fel.cvut.cz**). Soukromý Gmail účet není akceptován! /*[[https://docs.google.com/spreadsheets/u/1/d/e/2PACX-1vSN3SEFT9F8es_lR-mSsG4RKK3WsA7JO7ps_Z5B2TvZfyHTF1vhiX33xSlFQCjZ9dVo0GZM16bUl6DC/pubhtml]]*/ ===== Zadání ===== Zadání je stanoveno na základě domluvy studenta s cvičícím. Součástí zadání jsou i stručné požadavky na funkcionalitu programu. Zadání je nutné domluvit s cvičícím co nejdřív, nejpozději do konce sedmého výukového týdne semestru. V případě odevzdání neschválené práce nemusí být tato akceptována, případně může být ohodnocena pouze minimem bodů. Pro semestrální práci si lze vybrat jednu ze dvou možností: * [[courses:b6b36pcc:ukoly:sem_tvoralgr|Implementace vybraných algoritmů]] * [[courses:b6b36pcc:ukoly:sem_tvorhru|Tvorba hry]] ===== Odevzdání, termín a hodnocení ===== Semestrální práce se odevzdává přes BRUTE a email cvičícímu. Program a dokumentace, které odevzdáváte, by měly být všechny v BRUTE, email pak slouží k notifikaci učitele, že jste připraveni semestrálku odevzdat. Doporučujeme semestrální práci průběžně ukládat na [[https://gitlab.fel.cvut.cz/|fakultní GitLab]], do emailu pak přidejte i odkaz na něj včetně verze (commit hash nebo tag) semestrálky, kterou odevzdáváte. Předpokládá se, že s prací odevzdáte také testovací vstupy. Vzhledem k jejich velikosti je předpoklad je ponechat na GitLabu a do BRUTE odevzdat pouze zdrojový kód a dokumentaci. **Termín odevzdání je konec výukového období, tj. neděle 11. ledna 2026.** Odevzdání je možné i později, ale již bude aplikována penalizace ve výšce poloviny bodů z možného bodového zisku. Semestrální práce musí být odevzdána minimálně týden před termínem zkoušky, kterého se budete chtít účastnit. Pokud máte zájem o předtermín, je nutné semestrální práci odevzdat do **14. prosince 2025**. Nezapomeňte o svém záměru informovat cvičícího. Za semestrální práci je možné získat až **20 bodů**. Požadované minimum k zápočtu je **10 bodů**. ===== Obecné požadavky na semestrální práci ===== Semestrální práce se skládá ze dvou částí - **programu** a **dokumentace**. Obe části jsou hodnoceny stejným počtem 10 bodů (dohromady 20 bodů). **Program (10 bodů)** musí zahrnovat následující položky: * minimálně 3 soubory se zdrojovými kódy: * **main.cpp** - pro celkové řízení výpočtu * **dvojice souborů *.cpp, *.hpp** obsahující alespoň jednu třídu, která zabezpečuje výpočet * preferováno je využití většího počtu tříd * ''CMakeLists.txt'', dle kterého se dá semestrálka postavit (zkompilovat) * vzorová vstupní data Komunikace s programem probíhá zásadně přes terminál. Pro výpisy lze využít základní sadu znaků ASCII a případně základní [[https://cw.fel.cvut.cz/b251/courses/b6b36pcc/ukoly/sem_tvorhru#vzhled_hry|barvy]]. Semestrální práce prezentuje vaše znalosti a dovednosti, které jste získali v průběhu semestru. Proto lze využívat pouze takové externí knihovny, které jsou v rámci semestru probírány - viz následující seznam. Využít lze také odpovídající knihovny jazyka C (místo '''' odpovídající knihovnu ''stdio.h'' apod.). Pokud budete vytvářet jednotkové testy, můžete použít knihovnu ''"catch.hpp"''. Semestrální práce, která bude obsahovat jiné než povolené knihovny nebude akceptována a je automaticky hodnocena 0 body. **Dokumentace (10 bodů)** k semestrální práci má pevně danou strukturu: * popis řešených algoritmů, * popis postupu řešení práce včetně implementovaných tříd a popisu jednotlivých metod, * popis postupu kompilace programu a jeho spuštění, * popis přepínačů (argumentů), které program dokáže zpracovat, implementace přepínače ''%%--%%help'' je povinná * popis ovládání aplikace, * testování programu - alespoň 7 testovacích vstupů nebo generátor vstupů (generuje více než 7 vstupů), pro hry musí být uvedeny herní strategie pro výhru, prohru, remízu apod., * při implementaci algoritmů jejich srovnání - minimálně na dodaných vstupech. **Povolené formáty** pro dokumentaci k semestrálce jsou: textový dokument (formát TXT), Markdown (README.md) nebo rozumné PDF. Dokumentaci ponechte kvůli přehlednosti v základním adresáři vedle souboru ''main.cpp''. Poznámky k dokumentaci: * Pokud píšete komentáře do programu, bude to kladně hodnoceno. Základní popis tříd a metod musí přesto být i součástí dokumentace. Komentáře v programu nestačí!!! * Program je nutné doplnit o nápovědu. Základní způsob ovládání programu je důležité sepsat také v dokumentaci a případně ilustrovat kopiemi obrazovky, pro lepší srozumitelnost. * Testování přikládáme velkou váhu, a proto vyžadujeme popis, jak byl program testován, na jakých vstupech, jak jste se přesvědčili, že správně funguje. To lze doložit vstupy pro testování a očekávanými výstupy. Doporučujeme provádět jednoduché testy, zaměřené na detaily a jednotlivosti fungování programu. * Testování lze provést také způsobem, jakým jsou prováděny testy domácích úkolů. Tento způsob testování programu je vítaný a bude jistě kladně hodnocen.